<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-04-05T00:29:20.412018" rpa="false" schemaversion="5">
<suite id="s1" name="netconf-userfeatures.txt">
<suite id="s1-s1" name="Ready" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready">
<suite id="s1-s1-s1" name="Netconfready" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/netconfready.robot">
<kw name="Setup_Everything" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.047041" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:29:21.042723" elapsed="0.004381"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-05T00:29:21.042234" elapsed="0.004953"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.052386" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-05T00:29:21.048625" elapsed="0.003805"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-05T00:29:21.052666" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:21.052539" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:21.052507" elapsed="0.000235"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.053314" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:29:21.052912" elapsed="0.000450"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.053888" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-05T00:29:21.053553" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-05T00:29:21.054523" elapsed="0.000308"/>
</kw>
<msg time="2026-04-05T00:29:21.054940" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:29:21.054990" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:21.054092" elapsed="0.000922"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.055593" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:21.055188" elapsed="0.000435"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.057225" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:29:21.056944" elapsed="0.000310"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.058456" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:29:21.057402" elapsed="0.001085"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.059030" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:21.058656" elapsed="0.000402"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-05T00:29:21.062322" elapsed="0.000270"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.063077" level="INFO">${member_ip} = 10.30.170.184</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:21.062750" elapsed="0.000353"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:21.063253" elapsed="0.000305"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.064382" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:21.064079" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:29:21.064470" elapsed="0.000043"/>
</return>
<msg time="2026-04-05T00:29:21.064643" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:29:21.063766" elapsed="0.000901"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:21.065324" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4cfaf5c90&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:29:21.064887" elapsed="0.000620"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-05T00:29:21.065668" elapsed="0.000190"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-05T00:29:21.061630" elapsed="0.004287"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:29:21.061435" elapsed="0.004527"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-05T00:29:21.059119" elapsed="0.006877"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.066680" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:29:21.066235" elapsed="0.000489"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.067290" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.184'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:29:21.066884" elapsed="0.000449"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.067898" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:29:21.067508" elapsed="0.000432"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-05T00:29:21.056466" elapsed="0.011532"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-05T00:29:21.048239" elapsed="0.019815"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:29:21.068237" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:21.068122" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:21.068102" elapsed="0.000203"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.071577" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:21.071171" elapsed="0.000434"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.072062" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:29:21.071760" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:29:21.072133" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:29:21.072292" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:29:21.070845" elapsed="0.001473"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:29:21.073316" level="INFO">${member_ip} = 10.30.170.184</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:29:21.073053" elapsed="0.000289"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:29:21.074178" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:29:21.074286" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:29:21.073988" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:21.078150" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:21.077133" elapsed="0.001121"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:21.077091" elapsed="0.001232"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:29:21.078983" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:29:21.078613" elapsed="0.000716"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.080191" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.184" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:21.079593" elapsed="0.000751"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:29:21.081463" level="INFO">${conn_id} = 1</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:29:21.080618" elapsed="0.000936"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.082993" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:29:21.083077" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:29:21.082622" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:21.083342" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:29:21.084648" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:29:21.456818" 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 Apr  5 00:29:19 UTC 2026

  System load:  0.79               Processes:             128
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.184
  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-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:29:21.084271" elapsed="0.372755"/>
</kw>
<msg time="2026-04-05T00:29:21.457177" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:21.083911" elapsed="0.373431"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:29:21.081916" elapsed="0.375856"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:29:21.459295" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-05T00:29:21.472578" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-05T00:29:21.472972" level="INFO">${stdout} = </msg>
<msg time="2026-04-05T00:29:21.473166" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:29:21.458408" elapsed="0.014886"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:29:21.473710" elapsed="0.000759"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.475974" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:21.475217" elapsed="0.000960"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-05T00:29:21.476905" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:21.476389" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:21.476315" elapsed="0.000907"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-05T00:29:21.478101" elapsed="0.000138"/>
</return>
<status status="PASS" start="2026-04-05T00:29:21.477549" elapsed="0.000797"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:21.477457" elapsed="0.001121"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-05T00:29:21.478770" elapsed="0.000038"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:21.486589" elapsed="0.000962"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:29:21.487835" elapsed="0.000232"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:29:21.488293" elapsed="0.000172"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:29:21.480048" elapsed="0.008494"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-05T00:29:21.076144" elapsed="0.412767"/>
</kw>
<msg time="2026-04-05T00:29:21.489019" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:21.075498" elapsed="0.413577"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:29:21.075001" elapsed="0.414154"/>
</kw>
<msg time="2026-04-05T00:29:21.489196" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:21.074488" elapsed="0.414753"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:21.491922" elapsed="0.000313"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:29:21.492393" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:29:21.492763" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:29:21.489543" elapsed="0.003371"/>
</kw>
<msg time="2026-04-05T00:29:21.493006" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-05T00:29:21.073569" elapsed="0.419461"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.493465" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:21.493201" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:29:21.493551" elapsed="0.000033"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-05T00:29:21.072702" elapsed="0.420978"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:29:21.072525" elapsed="0.421192"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:29:21.072371" elapsed="0.421384"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-05T00:29:21.068546" elapsed="0.425269"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-05T00:29:21.493965" elapsed="0.000209"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:29:21.507871" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:21.507753" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:21.507733" elapsed="0.000207"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:29:21.508240" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:29:21.508347" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:29:21.508094" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.508792" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:21.508535" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:21.509221" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:21.508981" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:29:21.510040" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-05T00:29:21.509788" elapsed="0.000465">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-05T00:29:21.510367" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-05T00:29:21.510412" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:21.509414" elapsed="0.001039"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:21.510752" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:21.510531" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:21.510511" elapsed="0.000339"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:29:21.511648" level="INFO">${ip_address} = 10.30.170.184</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:29:21.511361" elapsed="0.000313"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-05T00:29:21.511721" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:29:21.511871" level="INFO">${odl_ip} = 10.30.170.184</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-05T00:29:21.511083" elapsed="0.000811"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:29:21.512049" elapsed="0.000443"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:29:21.512774" level="INFO">index=4
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:29:21.512880" level="INFO">${karaf_connection_object} = index=4
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:29:21.512658" elapsed="0.000248"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:21.513050" elapsed="0.002399"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-05T00:29:21.515921" level="INFO">Logging into '10.30.170.184:8101' as 'karaf'.</msg>
<msg time="2026-04-05T00:29:22.321355" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-05T00:29:21.515655" elapsed="0.805967"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:22.325492" elapsed="0.000426"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:29:22.326085" elapsed="0.000199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:29:22.326484" elapsed="0.000115"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:29:22.323035" elapsed="0.003617"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:29:22.322163" elapsed="0.004536"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-05T00:29:21.507470" elapsed="0.819284"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:29:21.494943" elapsed="0.831862"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:21.494572" elapsed="0.832288"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:29:21.494401" elapsed="0.832501"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-05T00:29:21.494238" elapsed="0.832714"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-05T00:29:21.047593" elapsed="1.279434"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:29:22.329698" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:22.329572" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.329536" elapsed="0.000244"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:29:22.334586" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:22.334466" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.334447" elapsed="0.000211"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:22.335646" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:22.335208" elapsed="0.000469"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:29:22.336130" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:29:22.335835" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:29:22.336199" elapsed="0.000039"/>
</return>
<msg time="2026-04-05T00:29:22.336364" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:29:22.334881" elapsed="0.001508"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:29:22.342026" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:22.341919" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.341900" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:29:22.343461" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:22.343246" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.343228" elapsed="0.000378"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:29:22.344183" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:29:22.343756" elapsed="0.000559"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:29:22.344830" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:29:22.344577" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:29:22.472193" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "n "e "t "[78Cc "[A[78Co</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:29:22.346497" elapsed="0.125866"/>
</kw>
<msg time="2026-04-05T00:29:22.472592" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:29:22.472667" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:22.345097" elapsed="0.127622"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:29:22.573165" level="INFO">"n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "n "e "t "c "o "n "f "/ "r "e "a "d "y "/ "n "e "t "c "o "n "f "[78Cr "[A[78Ce
 "a "d "y ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:29:22.474376" elapsed="0.098962"/>
</kw>
<msg time="2026-04-05T00:29:22.573525" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:29:22.573598" level="INFO">${message_wait} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:22.472990" elapsed="0.100659"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:22.574191" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:22.573836" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.573801" elapsed="0.000565"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:22.575268" level="INFO"> "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "n "e "t "c "o "n "f "/ "r "e "a "d "y "/ "n "e "t "c "o "n "f "[78Cr "[A[78Ce
 "a "d "y ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:22.574538" elapsed="0.000849"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:22.575854" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:22.575544" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.575523" elapsed="0.000499"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:29:22.576059" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:22.578003" elapsed="0.000319"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:29:22.578545" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:29:22.578912" elapsed="0.000126"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:29:22.577308" elapsed="0.001835"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:29:22.576384" elapsed="0.002850"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:29:22.342889" elapsed="0.236445"/>
</kw>
<msg time="2026-04-05T00:29:22.579486" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:29:22.579532" level="INFO">${message} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:22.342257" elapsed="0.237312"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:29:22.579758" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:29:22.579647" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.579628" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:22.580295" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:22.580706" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:29:22.580846" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:29:22.341631" elapsed="0.239328"/>
</kw>
<msg time="2026-04-05T00:29:22.581056" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:29:22.581099" level="INFO">${output} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:22.336826" elapsed="0.244311"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:22.581483" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:22.581213" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.581195" elapsed="0.000367"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:29:22.336681" elapsed="0.244904"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:29:22.336476" elapsed="0.245152"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:29:22.334145" elapsed="0.247543"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-05T00:29:22.327649" elapsed="0.254098"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:22.327185" elapsed="0.254607"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-05T00:29:21.041867" elapsed="1.539980"/>
</kw>
<kw name="Set_Netconf_Connector">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:22.582609" level="INFO">${streamconnector} = /node/controller-config/yang-ext:mount/config:modules/module/sal-restconf-service:json-restconf-service-impl/json-restconf-service-impl</msg>
<var>${streamconnector}</var>
<arg>/node/controller-config/yang-ext:mount/config:modules/module/sal-restconf-service:json-restconf-service-impl/json-restconf-service-impl</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:22.582325" elapsed="0.000312"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:22.585226" level="INFO">${connector} = </msg>
<var>${connector}</var>
<arg>${USE_NETCONF_CONNECTOR}</arg>
<arg>${streamconnector}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:22.582801" elapsed="0.002452"/>
</kw>
<return>
<value>${connector}</value>
<status status="PASS" start="2026-04-05T00:29:22.585306" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:22.585473" level="INFO">${connector} = </msg>
<var>${connector}</var>
<doc>Sets netconf connector verify url according to the titanium and False combination</doc>
<status status="PASS" start="2026-04-05T00:29:22.582094" elapsed="0.003404"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:22.590285" level="INFO">${netconf_connector} = </msg>
<arg>${netconf_connector}</arg>
<arg>${connector}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:29:22.585656" elapsed="0.004675"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>A workaround for EOF error follows. TODO: Create a test case for the EOF bug, possibly tagged "exclude".</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-05T00:29:22.590501" elapsed="0.000211"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:29:22.605006" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:22.604892" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.604873" elapsed="0.000199"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:29:22.605375" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:29:22.605497" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:29:22.605226" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:22.605926" level="INFO">{1: 4}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:22.605671" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:22.606354" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:22.606113" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:29:22.606957" elapsed="0.000187"/>
</kw>
<msg time="2026-04-05T00:29:22.607244" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:29:22.607290" level="INFO">${old_connection_index} = 4</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:22.606567" elapsed="0.000745"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:29:22.608188" elapsed="0.000150"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:29:22.638776" level="INFO">logout</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:29:22.608846" elapsed="0.029990"/>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:22.608514" elapsed="0.030428"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:29:22.639468" elapsed="0.000733"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:22.639117" elapsed="0.001139"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-05T00:29:22.607666" elapsed="0.032637"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:22.607404" elapsed="0.032952"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.607385" elapsed="0.032998"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:29:22.641184" level="INFO">${ip_address} = 10.30.170.184</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:29:22.640909" elapsed="0.000301"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-05T00:29:22.641258" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:29:22.641408" level="INFO">${odl_ip} = 10.30.170.184</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-05T00:29:22.640626" elapsed="0.000824"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:29:22.641602" elapsed="0.000414"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:29:22.642313" level="INFO">index=7
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:29:22.642443" level="INFO">${karaf_connection_object} = index=7
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:29:22.642202" elapsed="0.000270"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:22.642618" elapsed="0.002216"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-05T00:29:22.645252" level="INFO">Logging into '10.30.170.184:8101' as 'karaf'.</msg>
<msg time="2026-04-05T00:29:22.872031" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-05T00:29:22.644995" elapsed="0.227153"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:22.875700" elapsed="0.000313"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:29:22.876170" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:29:22.876488" elapsed="0.000105"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:29:22.873397" elapsed="0.003248"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:29:22.872508" elapsed="0.004184"/>
</kw>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-05T00:29:22.603198" elapsed="0.273544"/>
</kw>
<arg>2x</arg>
<arg>1s</arg>
<arg>KarafKeywords.Open_Controller_Karaf_Console_On_Background</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:29:22.590884" elapsed="0.285900"/>
</kw>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:29:22.883289" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:22.883172" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.883143" elapsed="0.000221"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:22.884342" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:22.883949" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:29:22.884917" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:29:22.884615" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:29:22.884987" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:29:22.885146" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:29:22.883609" elapsed="0.001561"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:29:22.890487" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:22.890361" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.890343" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:29:22.891635" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:22.891526" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.891507" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:29:22.892058" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:29:22.891839" elapsed="0.000244"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:29:22.892401" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:29:22.892233" elapsed="0.000208"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:29:22.986536" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "N "e "t "c "o "n "f "[C "r "e "a "d "i "n "e "s "s "[C "t "e "s "t "[78C[C "[A[78Cs</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:29:22.892930" elapsed="0.093812"/>
</kw>
<msg time="2026-04-05T00:29:22.986880" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:29:22.986925" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "N "e "t "c "o "n "f "[C "r "e "a "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:22.892599" elapsed="0.094362"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:29:22.989135" level="INFO">"u "i "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:29:22.987563" elapsed="0.001629"/>
</kw>
<msg time="2026-04-05T00:29:22.989283" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:29:22.989326" level="INFO">${message_wait} =  "u "i "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:22.987154" elapsed="0.002200"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:22.989719" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:22.989465" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.989413" elapsed="0.000386"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:22.990207" level="INFO"> "u "i "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:22.989944" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:22.990551" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:22.990324" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.990306" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:29:22.990663" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:22.991834" elapsed="0.000643"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:29:22.992646" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:29:22.992947" elapsed="0.000107"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:29:22.991499" elapsed="0.001606"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:29:22.990964" elapsed="0.002186"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:29:22.891248" elapsed="0.101996"/>
</kw>
<msg time="2026-04-05T00:29:22.993434" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:29:22.993480" level="INFO">${message} =  "u "i "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:22.890701" elapsed="0.102809"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:29:22.993693" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:29:22.993588" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.993569" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:22.994190" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:22.994539" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:29:22.994622" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:29:22.890071" elapsed="0.104658"/>
</kw>
<msg time="2026-04-05T00:29:22.994820" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:29:22.994863" level="INFO">${output} =  "u "i "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:22.885588" elapsed="0.109304"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:22.995216" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:22.994966" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.994949" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:29:22.885444" elapsed="0.109871"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:29:22.885235" elapsed="0.110116"/>
</for>
<arg>Starting Netconf readiness test suite</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:29:22.881197" elapsed="0.114211"/>
</kw>
<if>
<branch type="IF" condition="${DEBUG_LOGGING_FOR_EVERYTHING}">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<arg>log:set DEBUG</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:22.995896" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:22.995490" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:22.995473" elapsed="0.000504"/>
</if>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:22.996388" level="INFO">Creating Session using : alias=ses, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4cf368e50&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>ses</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:29:22.996116" elapsed="0.000497"/>
</kw>
<kw name="Setup_NetconfKeywords" owner="NetconfKeywords">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:22.997474" level="INFO">${tmp} = {}</msg>
<var>${tmp}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:22.997137" elapsed="0.000365"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:23.001509" level="INFO">${NetconfKeywords__mounted_device_types} = {}</msg>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${tmp}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:29:22.997658" elapsed="0.003896"/>
</kw>
<if>
<branch type="IF" condition="${create_session_for_templated_requests}">
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:23.005917" level="INFO">Creating Session using : alias=default, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4cf37b190&gt;, timeout=2, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:29:23.005532" elapsed="0.000499"/>
</kw>
<arg>timeout=2</arg>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-05T00:29:23.005088" elapsed="0.001010"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:23.001624" elapsed="0.004505"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:23.001606" elapsed="0.004548"/>
</if>
<kw name="Initialize_Artifact_Deployment_And_Usage" owner="NexusKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:29:23.011303" level="INFO">${odl_connection} = 10</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:29:23.010935" elapsed="0.000394"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:29:23.012979" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:29:23.013055" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:29:23.012698" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:23.013290" elapsed="0.000513"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:29:23.014659" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:29:23.334693" 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 Apr  5 00:29:19 UTC 2026

  System load:  0.79               Processes:             128
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.170.184
  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.


Last login: Sun Apr  5 00:29:21 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:29:23.014327" elapsed="0.320633"/>
</kw>
<msg time="2026-04-05T00:29:23.335133" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:23.013972" elapsed="0.321314"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:29:23.012234" elapsed="0.323298"/>
</kw>
<msg time="2026-04-05T00:29:23.335645" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:23.011852" elapsed="0.323906"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:29:23.011519" elapsed="0.324401"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-05T00:29:23.336017" elapsed="0.000080"/>
</return>
<msg time="2026-04-05T00:29:23.336458" level="INFO">${odl} = 10</msg>
<var>${odl}</var>
<doc>Open a connection to the ODL system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:29:23.010651" elapsed="0.325865"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-05T00:29:23.347939" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-05T00:29:23.357349" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../../tools/deployment/search.sh' -&gt; '/home/jenkins//search.sh'</msg>
<arg>/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../../tools/deployment/search.sh</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-05T00:29:23.336997" elapsed="0.020538"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:29:23.357913" elapsed="0.000639"/>
</kw>
<if>
<branch type="IF" condition="not (${tools_system_connect})">
<return>
<status status="NOT RUN" start="2026-04-05T00:29:23.359050" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:23.358737" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:23.358683" elapsed="0.000518"/>
</if>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:29:23.367814" level="INFO">${tools_connection} = 11</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:29:23.367395" elapsed="0.000445"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:29:23.369614" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:29:23.369690" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:29:23.369309" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:23.369868" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:29:23.371054" level="INFO">Logging into '10.30.170.167:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:29:24.111308" 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 Apr  5 00:29:23 UTC 2026

  System load:  0.02               Processes:             107
  Usage of /:   20.6% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.167
  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-10549-81-1-docker-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:29:23.370740" elapsed="0.740726"/>
</kw>
<msg time="2026-04-05T00:29:24.111551" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:23.370359" elapsed="0.741274"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:29:23.368871" elapsed="0.742886"/>
</kw>
<msg time="2026-04-05T00:29:24.111891" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:23.368379" elapsed="0.743561"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-05T00:29:23.368039" elapsed="0.743976"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-05T00:29:24.112064" elapsed="0.000043"/>
</return>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:29:23.367036" elapsed="0.745195"/>
</kw>
<doc>Places search utility to ODL system, which will be needed for version detection.
By default also initialize a SSH connection to Tools system,
as following Keywords assume a working connection towards target system.</doc>
<status status="PASS" start="2026-04-05T00:29:23.006410" elapsed="1.105874"/>
</kw>
<doc>Setup the environment for the other keywords of this Resource to work properly.</doc>
<status status="PASS" start="2026-04-05T00:29:22.996875" elapsed="1.115458"/>
</kw>
<doc>Initialize SetupUtils. Setup requests library and log into karaf.log that the netconf readiness wait starts.</doc>
<status status="PASS" start="2026-04-05T00:29:21.041473" elapsed="3.070911"/>
</kw>
<test id="s1-s1-s1-t1" name="Check_Whether_Netconf_Topology_Is_Ready" line="84">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:29:24.116176" elapsed="0.000287"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:29:24.115899" elapsed="0.000628"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:29:24.117706" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:24.117565" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:24.117542" elapsed="0.000234"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:29:24.122719" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:24.122604" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:24.122586" elapsed="0.000200"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.123879" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:24.123439" elapsed="0.000466"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.124368" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:29:24.124072" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:29:24.124453" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:29:24.124607" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:29:24.123012" elapsed="0.001619"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:29:24.130623" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:24.130516" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:24.130496" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:29:24.131968" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:24.131857" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:24.131839" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:29:24.132567" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.132176" elapsed="0.000417"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:29:24.133004" level="INFO">${current_connection_index} = 11</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:29:24.132749" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:29:24.191895" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:29:24.133582" elapsed="0.058481"/>
</kw>
<msg time="2026-04-05T00:29:24.192303" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:29:24.192350" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:24.133183" elapsed="0.059201"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:29:24.232141" level="INFO">"s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "W "h "e "t "h "e "r "_ "N "e "t "c "o "n "f "_ "T "o "p "o "l "o "g "y "_ "I "s "_ "R "e "a "d "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:29:24.192994" elapsed="0.039335"/>
</kw>
<msg time="2026-04-05T00:29:24.232579" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:29:24.232634" level="INFO">${message_wait} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "W "h "e "t "h "e "r "_ "N ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:24.192599" elapsed="0.040073"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.232984" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:24.232756" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:24.232736" elapsed="0.000349"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.233710" level="INFO"> "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "W "h "e "t "h "e "r "_ "N "e "t "c "o "n "f "_ "T "o "p "o "l "o "g "y "_ "I "s "_ "R "e "a "d "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:24.233225" elapsed="0.000569"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.234109" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:24.233889" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:24.233865" elapsed="0.000343"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:29:24.234276" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:29:24.237537" elapsed="0.000168"/>
</kw>
<msg time="2026-04-05T00:29:24.237777" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:24.236699" elapsed="0.001176"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.238829" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.239779" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:29:24.235188" elapsed="0.004703"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:29:24.234591" elapsed="0.005415"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:29:24.131547" elapsed="0.108574"/>
</kw>
<msg time="2026-04-05T00:29:24.240227" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:29:24.240272" level="INFO">${message} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "W "h "e "t "h "e "r "_ "N ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:24.130847" elapsed="0.109464"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:29:24.240682" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-05T00:29:24.240398" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:24.240375" elapsed="0.000394"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.241358" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.241740" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:29:24.241812" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:29:24.130151" elapsed="0.111772"/>
</kw>
<msg time="2026-04-05T00:29:24.242015" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:29:24.242069" level="INFO">${output} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "W "h "e "t "h "e "r "_ "N ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:24.125030" elapsed="0.117074"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.242585" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:24.242202" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:24.242177" elapsed="0.000486"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:29:24.124889" elapsed="0.117797"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:29:24.124696" elapsed="0.118031"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:29:24.122232" elapsed="0.120551"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:29:24.117221" elapsed="0.125651"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:29:24.116680" elapsed="0.126244"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:29:24.113548" elapsed="0.129427"/>
</kw>
<kw name="Pass Execution If" owner="BuiltIn">
<arg>${USE_NETCONF_CONNECTOR}==${True}</arg>
<arg>Netconf connector is used. Next testcases do their job in this case.</arg>
<doc>Conditionally skips rest of the current test, setup, or teardown with PASS status.</doc>
<status status="PASS" start="2026-04-05T00:29:24.243135" elapsed="0.000495"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Netconf_Topology_Ready">
<for flavor="IN">
<iter>
<kw name="Verify_Netconf_Topology_Ready_For_Node">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.247988" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:24.247669" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:29:24.248060" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:24.248208" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${node_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:29:24.247315" elapsed="0.000917"/>
</kw>
<kw name="Configure_Netconf_Device">
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:24.270218" elapsed="0.000869"/>
</kw>
<msg time="2026-04-05T00:29:24.271221" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:24.269770" elapsed="0.001504"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:24.269371" elapsed="0.001979"/>
</kw>
<msg time="2026-04-05T00:29:24.271393" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:24.260584" elapsed="0.010872"/>
</kw>
<msg time="2026-04-05T00:29:24.271560" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:24.260243" elapsed="0.011341"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.272492" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.271747" elapsed="0.000773"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.272928" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:24.272609" elapsed="0.000386"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.306158" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:24.305782" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:24.307065" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:24.306743" elapsed="0.000418">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:24.307256" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:24.306394" elapsed="0.000885"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.307915" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:24.307511" elapsed="0.000431"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:24.308337" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:24.308521" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:24.308153" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.308999" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:24.308752" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.310081" level="INFO">mapping: {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:24.309823" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.310577" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.310280" elapsed="0.000322"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.311269" level="INFO">${value} = 10.30.170.184</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:24.310971" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:24.312106" level="INFO">${encoded} = 10.30.170.184</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.311810" elapsed="0.000321"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:24.312182" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:29:24.312332" level="INFO">${encoded_value} = 10.30.170.184</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:24.311500" elapsed="0.000856"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.312521" elapsed="0.000240"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.184</var>
<status status="PASS" start="2026-04-05T00:29:24.310839" elapsed="0.001962"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.313337" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:24.313042" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:24.314261" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.314049" elapsed="0.000238"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:24.314337" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:24.314526" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:24.313592" elapsed="0.000959"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.314698" elapsed="0.000218"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:24.312913" elapsed="0.002043"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.315504" level="INFO">${value} = 2830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:24.315193" elapsed="0.000337"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:24.316224" level="INFO">${encoded} = 2830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.316017" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:24.316298" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:29:24.316462" level="INFO">${encoded_value} = 2830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:24.315710" elapsed="0.000880"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.316740" elapsed="0.000219"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">2830</var>
<status status="PASS" start="2026-04-05T00:29:24.315066" elapsed="0.001932"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.317584" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:24.317234" elapsed="0.000375"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:24.318303" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.318095" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:24.318376" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:24.318543" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:24.317791" elapsed="0.000776"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.318712" elapsed="0.000217"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:29:24.317107" elapsed="0.001896"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.319552" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:24.319241" elapsed="0.000337"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:24.320280" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.320065" elapsed="0.000240"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:24.320353" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:24.320519" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:24.319758" elapsed="0.000785"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.320688" elapsed="0.000218"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:29:24.319115" elapsed="0.001832"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.321525" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:24.321183" elapsed="0.000368"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:24.322250" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.322041" elapsed="0.000256"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:24.322349" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:29:24.322515" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:24.321731" elapsed="0.000808"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.322684" elapsed="0.000218"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:29:24.321056" elapsed="0.001887"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.323492" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:24.323180" elapsed="0.000338"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:24.324389" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.324010" elapsed="0.000404"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:24.324480" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:24.324631" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:24.323697" elapsed="0.000958"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.324802" elapsed="0.000218"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:29:24.323053" elapsed="0.002007"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.325637" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:24.325311" elapsed="0.000351"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:24.326359" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.326151" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:24.326448" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:29:24.326598" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:24.325842" elapsed="0.000781"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.326773" elapsed="0.000219"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:24.325168" elapsed="0.001864"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:24.310656" elapsed="0.016409"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:24.327108" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:29:24.327264" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:24.309505" elapsed="0.017786"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:24.309161" elapsed="0.018161"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.327506" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:24.327346" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:24.309141" elapsed="0.018443"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.331668" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:24.327778" elapsed="0.003919"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:24.331799" elapsed="0.000054"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:24.304772" elapsed="0.027307"/>
</kw>
<msg time="2026-04-05T00:29:24.332169" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:24.291411" elapsed="0.040855"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.355037" elapsed="0.000048"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.377165" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.398977" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.399226" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.399416" elapsed="0.000037"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.399998" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:24.399740" elapsed="0.000342"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:24.399725" elapsed="0.000442"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.400368" elapsed="0.000045"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.400750" elapsed="0.000047"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.401077" elapsed="0.000044"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:24.399693" elapsed="0.001549"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:24.399556" elapsed="0.001745"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.401641" elapsed="0.000023"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:24.401797" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:29:24.401927" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:24.287000" elapsed="0.114953"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.429499" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:24.429103" elapsed="0.000425"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:24.430291" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:24.430068" elapsed="0.000296">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:24.430472" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:24.429736" elapsed="0.000761"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.431094" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:24.430707" elapsed="0.000414"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:24.431481" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:24.431621" level="INFO">${template} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVI...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:24.431328" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.432096" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;$DEVICE_USER&lt;/username&gt;
      &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:24.431852" elapsed="0.000319"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:29:24.432618" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:24.432290" elapsed="0.000388"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.433136" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:24.432844" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:24.432703" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:24.432269" elapsed="0.000949"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.434115" level="INFO">${final_text} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:24.433411" elapsed="0.000735"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:24.434241" elapsed="0.000054"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:24.428097" elapsed="0.006433"/>
</kw>
<msg time="2026-04-05T00:29:24.434620" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:24.414752" elapsed="0.019963"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.457136" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.479276" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.501174" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.501432" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.501625" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.502185" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:24.501927" elapsed="0.000341"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:24.501912" elapsed="0.000442"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.502580" elapsed="0.000045"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.502906" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.503231" elapsed="0.000043"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:24.501881" elapsed="0.001516"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:24.501749" elapsed="0.001933"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.503831" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:24.503983" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:29:24.504111" level="INFO">${data} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:24.411938" elapsed="0.092202"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:24.506689" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:24.506123" elapsed="0.000692">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:24.506943" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:24.504872" elapsed="0.002096"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:24.507496" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:24.507077" elapsed="0.000575"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.508773" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:24.508125" elapsed="0.000688"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:24.507679" elapsed="0.001213"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:24.507058" elapsed="0.001857"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.511806" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:24.509063" elapsed="0.002769"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:29:24.511961" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:29:24.512120" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:24.504532" elapsed="0.007613"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.513938" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:24.513463" elapsed="0.000537"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.514657" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:24.514163" elapsed="0.000562"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.515369" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:24.514888" elapsed="0.000671"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.516193" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:24.515725" elapsed="0.000527"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:29:24.517739" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:29:24.517143" elapsed="0.000694"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:29:24.518647" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:29:24.518094" elapsed="0.000651"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:24.519003" elapsed="0.000579"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:24.520536" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:24.519847" elapsed="0.000884"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:29:24.520816" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:29:24.521084" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:29:24.516483" elapsed="0.004627"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:25.421239" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '439', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt; 
 </msg>
<msg time="2026-04-05T00:29:25.421534" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=201, reason=Created 
 headers={'Set-Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 04-Apr-2026 00:29:25 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:25.421913" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:29:24.529504" elapsed="0.892501"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:24.521218" elapsed="0.901088"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.422859" elapsed="0.000169"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:25.422380" elapsed="0.000933"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:24.521199" elapsed="0.902168"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.431778" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:25.427301" elapsed="0.004548"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:25.426212" elapsed="0.005685"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:25.426131" elapsed="0.005834"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.435004" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:25.432530" elapsed="0.002541"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:25.432049" elapsed="0.003070"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:25.432019" elapsed="0.003169"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.436762" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:25.435718" elapsed="0.001199"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.437560" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:25.437049" elapsed="0.000609"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.438598" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:25.438078" elapsed="0.000555"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:25.437727" elapsed="0.000955"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:25.437016" elapsed="0.001730"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.440255" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:25.439250" elapsed="0.001106"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.440982" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:25.440503" elapsed="0.000575"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.441993" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:25.441511" elapsed="0.000517"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:25.441147" elapsed="0.000933"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:25.440469" elapsed="0.001678"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:25.442399" elapsed="0.000959"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:29:25.444444" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:25.443648" elapsed="0.000898"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:29:25.444812" elapsed="0.002900"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:29:25.424477" elapsed="0.023344"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:29:25.448054" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-05T00:29:25.447907" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:25.447887" elapsed="0.000313"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.448346" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:29:25.448564" elapsed="0.000019"/>
</return>
<msg time="2026-04-05T00:29:25.450947" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:29:24.512569" elapsed="0.938404"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:29:25.451039" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:29:25.451194" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:29:24.276041" elapsed="1.175178"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.451566" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:25.451318" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:25.451300" elapsed="0.000358"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:29:25.451691" elapsed="0.000025"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:29:24.273255" elapsed="1.178561"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:24.273019" elapsed="1.178844"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:24.272590" elapsed="1.179295"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:25.452030" elapsed="0.000238"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=full-uri-device</arg>
<arg>device_port=${DEVICE_PORT}</arg>
<arg>device_address=${device_ip}</arg>
<arg>device_user=admin</arg>
<arg>device_password=admin</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:29:24.248925" elapsed="1.203409"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${ODL_SYSTEM_${node_index}_IP}</arg>
<doc>Configures the device via REST api.</doc>
<status status="PASS" start="2026-04-05T00:29:24.248366" elapsed="1.204093"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.453092" level="INFO">&amp;{mapping} = { DEVICE_NAME=test-device | RESTCONF_ROOT=/rests }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:25.452635" elapsed="0.000484"/>
</kw>
<kw name="Wait_Netconf_Device_Mounted">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:25.471769" elapsed="0.000794"/>
</kw>
<msg time="2026-04-05T00:29:25.472623" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:25.471395" elapsed="0.001284"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:25.470973" elapsed="0.001780"/>
</kw>
<msg time="2026-04-05T00:29:25.472795" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:25.462157" elapsed="0.010686"/>
</kw>
<msg time="2026-04-05T00:29:25.472944" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:25.461845" elapsed="0.011122"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.520652" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:25.520066" elapsed="0.000631"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:25.521811" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:25.521540" elapsed="0.000355">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:25.522088" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:25.521033" elapsed="0.001098"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.523082" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:25.522493" elapsed="0.000635"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:25.523716" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:25.523959" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:25.523472" elapsed="0.000531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.524695" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:25.524325" elapsed="0.000465"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.525953" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:25.525698" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.526409" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:25.526151" elapsed="0.000398"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.527204" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:25.526907" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:25.527944" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:25.527733" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:25.528065" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:29:25.528220" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:25.527409" elapsed="0.000836"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:25.528393" elapsed="0.000239"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:25.526776" elapsed="0.001897"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.529220" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:25.528912" elapsed="0.000333"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:25.530000" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:25.529770" elapsed="0.000255"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:25.530075" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:29:25.530222" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:25.529459" elapsed="0.000787"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:25.530391" elapsed="0.000338"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:25.528784" elapsed="0.001987"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:25.526602" elapsed="0.004203"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:25.530847" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:29:25.531000" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:25.525343" elapsed="0.005682"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:25.524936" elapsed="0.006145"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.531343" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:25.531139" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:25.524894" elapsed="0.006596"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.532726" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:25.531782" elapsed="0.000992"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:25.532903" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:25.518542" elapsed="0.014601"/>
</kw>
<msg time="2026-04-05T00:29:25.533305" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:25.504709" elapsed="0.028648"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.545891" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.558285" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.570729" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.570949" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.571120" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.571597" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:25.571370" elapsed="0.000369"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:25.571356" elapsed="0.000458"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.571988" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.572295" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.572675" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:25.571325" elapsed="0.001544"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:25.571195" elapsed="0.001703"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.573041" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:25.573116" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:29:25.573234" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:25.500519" elapsed="0.072740"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:25.574838" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:25.574457" elapsed="0.000567">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:25.575200" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:25.573946" elapsed="0.001279"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.575552" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:25.575294" elapsed="0.000392"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.576359" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:25.575878" elapsed="0.000520"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:25.575714" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:25.575276" elapsed="0.001269"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.582857" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:25.576701" elapsed="0.006182"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:29:25.582934" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:25.583084" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:25.573627" elapsed="0.009482"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:25.584928" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:25.584376" elapsed="0.000756">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:25.585325" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:25.583887" elapsed="0.001464"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:29:25.585591" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:29:25.585442" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:25.585405" elapsed="0.000309"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.585870" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.586039" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:29:25.586103" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:29:25.588350" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:25.583568" elapsed="0.004809"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.590014" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:25.589562" elapsed="0.000498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:25.590687" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:25.590208" elapsed="0.000524"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:25.662898" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:25.666471" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=503, reason=Service Unavailable 
 headers={'Content-Type': 'application/xml', 'Content-Length': '433'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;protocol&lt;/error-type&gt;&lt;error-path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology/a:topology[a:topology-id='topology-netconf']/a:node[a:node-id='test-device']&lt;/error-path&gt;&lt;error-message&gt;Mount point does not exist&lt;/error-message&gt;&lt;error-tag&gt;resource-denied-transport&lt;/error-tag&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:29:25.666740" level="FAIL">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:29:25.593014" elapsed="0.075163">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:29:25.590799" elapsed="0.077709">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.668790" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:25.668565" elapsed="0.000463"/>
</branch>
<status status="FAIL" start="2026-04-05T00:29:25.590781" elapsed="0.078285">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.669713" elapsed="0.000043"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:25.669919" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:25.669861" elapsed="0.000117"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:25.669836" elapsed="0.000172"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.670200" elapsed="0.000029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:29:25.670295" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:29:25.588753" elapsed="0.081722">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:25.670583" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:29:25.478111" elapsed="0.192611">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:25.671102" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:25.670847" elapsed="0.000400"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:25.670824" elapsed="0.000458"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:25.671328" elapsed="0.000021"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:29:25.473789" elapsed="0.197718">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:28.727933" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:28.727292" elapsed="0.000696"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:28.729124" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:28.728856" elapsed="0.000344">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:28.729398" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:28.728363" elapsed="0.001113"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:28.730435" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:28.729817" elapsed="0.000668"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:28.731074" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:28.731335" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:28.730822" elapsed="0.000559"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:28.732090" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:28.731730" elapsed="0.000756"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:28.733856" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:28.733593" elapsed="0.000309"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:28.734329" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:28.734058" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:28.735037" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:28.734736" elapsed="0.000327"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:28.735801" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:28.735582" elapsed="0.000246"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:28.735882" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:29:28.736042" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:28.735246" elapsed="0.000821"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:28.736247" elapsed="0.000290"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:28.734601" elapsed="0.001978"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:28.737121" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:28.736824" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:28.737973" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:28.737763" elapsed="0.000236"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:28.738049" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:29:28.738271" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:28.737327" elapsed="0.000970"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:28.738462" elapsed="0.000224"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:28.736693" elapsed="0.002034"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:28.734407" elapsed="0.004355"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:28.738804" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:29:28.738965" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:28.733122" elapsed="0.005868"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:28.732667" elapsed="0.006383"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.739320" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:28.739110" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:28.732610" elapsed="0.006859"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:28.740608" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:28.739767" elapsed="0.000888"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:28.740785" elapsed="0.000075"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:28.725658" elapsed="0.015361"/>
</kw>
<msg time="2026-04-05T00:29:28.741188" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:28.711392" elapsed="0.029853"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.754216" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.766922" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.779391" elapsed="0.000057"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.779651" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.779830" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.780368" elapsed="0.000096"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:28.780149" elapsed="0.000396"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:28.780131" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.780805" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.781119" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.781563" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:28.780090" elapsed="0.001672"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:28.779929" elapsed="0.001864"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.781938" elapsed="0.000025"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:28.782022" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:29:28.782175" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:28.706920" elapsed="0.075283"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:28.784000" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:28.783508" elapsed="0.000700">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:28.784392" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:28.782942" elapsed="0.001504"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.784788" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:28.784524" elapsed="0.000402"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:28.785704" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:28.785127" elapsed="0.000618"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:28.784954" elapsed="0.000898"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:28.784504" elapsed="0.001371"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:28.792315" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:28.786030" elapsed="0.006317"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:29:28.792406" elapsed="0.000069"/>
</return>
<msg time="2026-04-05T00:29:28.792617" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:28.782592" elapsed="0.010053"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:28.794480" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:28.794063" elapsed="0.000614">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:28.794868" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:28.793370" elapsed="0.001523"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:29:28.795116" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:29:28.794968" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:28.794948" elapsed="0.000252"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.795344" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.795533" elapsed="0.000025"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:29:28.795607" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:29:28.797976" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:28.793009" elapsed="0.004994"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:28.799726" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:28.799229" elapsed="0.000622"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:28.800499" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:28.800013" elapsed="0.000533"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:28.819373" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:28.820241" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=503, reason=Service Unavailable 
 headers={'Content-Type': 'application/xml', 'Content-Length': '433'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;protocol&lt;/error-type&gt;&lt;error-path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology/a:topology[a:topology-id='topology-netconf']/a:node[a:node-id='test-device']&lt;/error-path&gt;&lt;error-message&gt;Mount point does not exist&lt;/error-message&gt;&lt;error-tag&gt;resource-denied-transport&lt;/error-tag&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:29:28.820604" level="FAIL">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:29:28.802852" elapsed="0.018451">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:29:28.800616" elapsed="0.021010">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.822001" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:28.821692" elapsed="0.000558"/>
</branch>
<status status="FAIL" start="2026-04-05T00:29:28.800597" elapsed="0.021691">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.823126" elapsed="0.000050"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:28.823348" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:28.823288" elapsed="0.000123"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:28.823259" elapsed="0.000224"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.823703" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:29:28.823802" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:29:28.798374" elapsed="0.025593">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:28.824076" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:29:28.680744" elapsed="0.143470">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:28.824653" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:28.824344" elapsed="0.000413"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:28.824319" elapsed="0.000471"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:28.824835" elapsed="0.000019"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:29:28.672568" elapsed="0.152410">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:31.882681" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:31.882031" elapsed="0.000715"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:31.883939" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:31.883626" elapsed="0.000391">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:31.884213" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:31.883135" elapsed="0.001121"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:31.885240" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:31.884613" elapsed="0.000675"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:31.885949" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:31.886214" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:31.885648" elapsed="0.000611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:31.887011" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:31.886645" elapsed="0.000465"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:31.888490" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:31.888196" elapsed="0.000343"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:31.889044" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:31.888729" elapsed="0.000341"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:31.889782" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:31.889478" elapsed="0.000336"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:31.890674" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:31.890388" elapsed="0.000313"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:31.890758" elapsed="0.000039"/>
</return>
<msg time="2026-04-05T00:29:31.890930" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:31.890043" elapsed="0.000911"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:31.891112" elapsed="0.000294"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:31.889325" elapsed="0.002256"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:31.892167" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:31.891864" elapsed="0.000330"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:31.892995" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:31.892760" elapsed="0.000264"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:31.893076" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:29:31.893230" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:31.892390" elapsed="0.000865"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:31.893404" elapsed="0.000246"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:31.891728" elapsed="0.001963"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:31.889125" elapsed="0.004604"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:31.893787" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:29:31.893980" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:31.887860" elapsed="0.006147"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:31.887294" elapsed="0.006775"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:31.894364" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:31.894130" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:31.887237" elapsed="0.007347"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:31.896031" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:31.894889" elapsed="0.001188"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:31.896211" elapsed="0.000077"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:31.880355" elapsed="0.016109"/>
</kw>
<msg time="2026-04-05T00:29:31.896635" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:31.864995" elapsed="0.031697"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:31.909785" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:31.922503" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:31.934859" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:31.935048" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:31.935223" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:31.935739" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:31.935525" elapsed="0.000359"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:31.935508" elapsed="0.000451"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:31.936134" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:31.936461" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:31.936811" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:31.935474" elapsed="0.001529"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:31.935299" elapsed="0.001733"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:31.937177" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:31.937252" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:29:31.937374" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:31.860335" elapsed="0.077065"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:31.939055" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:31.938661" elapsed="0.000589">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:31.939457" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:31.938134" elapsed="0.001350"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:31.939801" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:31.939557" elapsed="0.000379"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:31.940639" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:31.940133" elapsed="0.000546"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:31.939964" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:31.939538" elapsed="0.001274"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:31.947063" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:31.940965" elapsed="0.006125"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:29:31.947141" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:29:31.947300" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:31.937812" elapsed="0.009512"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:31.948987" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:31.948625" elapsed="0.000543">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:31.949345" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:31.948124" elapsed="0.001246"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:29:31.949591" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:29:31.949456" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:31.949437" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:31.949812" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:31.949977" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:29:31.950041" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:29:31.952333" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:31.947802" elapsed="0.004559"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:31.954192" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:31.953735" elapsed="0.000504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:31.954875" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:31.954388" elapsed="0.000533"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:32.130677" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:32.132894" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:29:32.133485" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:29:31.957260" elapsed="0.177159">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:29:31.954989" elapsed="0.179941">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:32.135411" elapsed="0.000098"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:32.135017" elapsed="0.000836"/>
</branch>
<status status="FAIL" start="2026-04-05T00:29:31.954971" elapsed="0.180943">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:32.137008" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:32.137329" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:32.137238" elapsed="0.000220"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:32.137194" elapsed="0.000317"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:32.137831" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:29:32.137989" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:29:31.952734" elapsed="0.185502">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:32.138408" elapsed="0.000064"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:29:31.834719" elapsed="0.303994">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:32.139246" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:32.138923" elapsed="0.000425"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:32.138884" elapsed="0.000498"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:32.139445" elapsed="0.000021"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:29:31.826009" elapsed="0.313578">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:35.197335" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:35.196693" elapsed="0.000698"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:35.198559" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:35.198258" elapsed="0.000381">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:35.198839" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:35.197781" elapsed="0.001103"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:35.199927" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:35.199248" elapsed="0.000730"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:35.200714" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:35.200983" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:35.200441" elapsed="0.000588"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:35.201781" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:35.201367" elapsed="0.000511"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:35.203131" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:35.202860" elapsed="0.000318"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:35.203655" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:35.203350" elapsed="0.000333"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:35.204406" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:35.204071" elapsed="0.000381"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:35.205198" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:35.204976" elapsed="0.000249"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:35.205279" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:29:35.205459" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:35.204645" elapsed="0.000849"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:35.205682" elapsed="0.000248"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:35.203936" elapsed="0.002037"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:35.206689" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:35.206222" elapsed="0.000497"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:35.207471" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:35.207239" elapsed="0.000260"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:35.207550" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:35.207711" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:35.206921" elapsed="0.000817"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:35.207923" elapsed="0.000244"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:35.206090" elapsed="0.002123"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:35.203738" elapsed="0.004509"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:35.208293" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:29:35.208487" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:35.202516" elapsed="0.005998"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:35.202051" elapsed="0.006522"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.208858" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:35.208635" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:35.201991" elapsed="0.007008"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:35.210347" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:35.209308" elapsed="0.001088"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:35.210820" elapsed="0.000086"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:35.195012" elapsed="0.016077"/>
</kw>
<msg time="2026-04-05T00:29:35.211261" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:35.180506" elapsed="0.030812"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.224175" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.237091" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.249818" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.250011" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.250180" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.250676" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:35.250463" elapsed="0.000359"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:35.250447" elapsed="0.000451"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.251086" elapsed="0.000029"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.251443" elapsed="0.000025"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.251820" elapsed="0.000024"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:35.250398" elapsed="0.001623"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:35.250257" elapsed="0.001794"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.252209" elapsed="0.000027"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:35.252298" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:29:35.252449" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:35.176042" elapsed="0.076436"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:35.254107" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:35.253720" elapsed="0.000584">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:35.254559" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:35.253159" elapsed="0.001429"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.254935" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:35.254674" elapsed="0.000433"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:35.255926" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:35.255309" elapsed="0.000660"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:35.255136" elapsed="0.000944"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:35.254644" elapsed="0.001460"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:35.262630" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:35.256270" elapsed="0.006387"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:29:35.262711" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:29:35.262867" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:35.252837" elapsed="0.010056"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:35.264616" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:35.264123" elapsed="0.000703">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:35.265013" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:35.263592" elapsed="0.001446"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:29:35.265246" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:29:35.265111" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:35.265092" elapsed="0.000237"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.265488" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.265669" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:29:35.265738" elapsed="0.000014"/>
</return>
<msg time="2026-04-05T00:29:35.267892" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:35.263217" elapsed="0.004702"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:35.269834" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:35.269169" elapsed="0.000715"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:35.270521" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:35.270037" elapsed="0.000531"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:35.385570" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:35.386353" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:29:35.386834" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:29:35.272977" elapsed="0.114925">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:29:35.270637" elapsed="0.117743">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.388866" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:35.388500" elapsed="0.000797"/>
</branch>
<status status="FAIL" start="2026-04-05T00:29:35.270618" elapsed="0.118765">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.390734" elapsed="0.000064"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:35.391054" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:35.390965" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:35.390924" elapsed="0.000276"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.391603" elapsed="0.000070"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:29:35.391794" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:29:35.268286" elapsed="0.123756">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:35.392214" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:29:35.150133" elapsed="0.242334">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:35.393152" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:35.392692" elapsed="0.000631"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:35.392641" elapsed="0.000736"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:35.393484" elapsed="0.000036"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:29:35.140742" elapsed="0.252990">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:38.448364" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:38.447742" elapsed="0.000689"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:38.449539" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:38.449227" elapsed="0.000389">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:38.449810" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:38.448784" elapsed="0.001069"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:38.450797" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:38.450187" elapsed="0.000656"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:38.451443" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:38.451709" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:38.451178" elapsed="0.000575"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:38.452472" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:38.452097" elapsed="0.000481"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:38.453769" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:38.453511" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:38.454299" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:38.454029" elapsed="0.000296"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:38.455001" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:38.454705" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:38.455770" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:38.455550" elapsed="0.000245"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:38.455848" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:29:38.456027" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:38.455210" elapsed="0.000842"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:38.456201" elapsed="0.000258"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:38.454573" elapsed="0.001927"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:38.457039" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:38.456747" elapsed="0.000317"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:38.457903" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:38.457695" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:38.457977" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:38.458124" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:38.457243" elapsed="0.000905"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:38.458297" elapsed="0.000236"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:38.456619" elapsed="0.001955"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:38.454381" elapsed="0.004226"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:38.458649" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:29:38.458806" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:38.453131" elapsed="0.005700"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:38.452734" elapsed="0.006154"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.459154" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:38.458948" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:38.452688" elapsed="0.006595"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:38.460587" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:38.459599" elapsed="0.001035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:38.460764" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:38.446184" elapsed="0.014810"/>
</kw>
<msg time="2026-04-05T00:29:38.461161" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:38.432259" elapsed="0.028956"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.473758" elapsed="0.000035"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.487381" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.499960" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.500164" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.500337" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.500852" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:38.500637" elapsed="0.000360"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:38.500618" elapsed="0.000458"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.501251" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.501581" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.501926" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:38.500582" elapsed="0.001540"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:38.500436" elapsed="0.001717"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.502298" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:38.502375" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:29:38.502538" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:38.428084" elapsed="0.074481"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:38.504303" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:38.503891" elapsed="0.000625">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:38.504695" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:38.503265" elapsed="0.001455"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.505045" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:38.504791" elapsed="0.000390"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:38.505886" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:38.505377" elapsed="0.000549"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:38.505208" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:38.504773" elapsed="0.001287"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:38.512329" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:38.506206" elapsed="0.006150"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:29:38.512406" elapsed="0.000047"/>
</return>
<msg time="2026-04-05T00:29:38.512580" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:38.502919" elapsed="0.009686"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:38.514113" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:38.513753" elapsed="0.000590">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:38.514573" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:38.513248" elapsed="0.001350"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:29:38.514804" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:29:38.514669" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:38.514651" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.515027" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.515190" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:29:38.515255" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:29:38.517528" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:38.512931" elapsed="0.004624"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:38.519194" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:38.518737" elapsed="0.000505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:38.520002" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:38.519389" elapsed="0.000658"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:38.630163" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:38.630953" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:29:38.631377" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:29:38.522257" elapsed="0.110109">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:29:38.520115" elapsed="0.112714">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.633289" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:38.632913" elapsed="0.000837"/>
</branch>
<status status="FAIL" start="2026-04-05T00:29:38.520097" elapsed="0.113720">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.634965" elapsed="0.000066"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:38.635282" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:38.635198" elapsed="0.000179"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:38.635155" elapsed="0.000306"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.635809" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:29:38.635969" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:29:38.517920" elapsed="0.118299">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:38.636389" elapsed="0.000065"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:29:38.403215" elapsed="0.233519">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:38.637342" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:38.636946" elapsed="0.000681"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:38.636907" elapsed="0.000790"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:38.637778" elapsed="0.000034"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:29:38.394867" elapsed="0.243145">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:41.691860" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:41.691199" elapsed="0.000715"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:41.693031" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:41.692767" elapsed="0.000352">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:41.693313" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:41.692261" elapsed="0.001095"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:41.694339" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:41.693716" elapsed="0.000672"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:41.694997" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:41.695258" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:41.694741" elapsed="0.000561"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:41.696039" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:41.695671" elapsed="0.000464"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:41.697335" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:41.697079" elapsed="0.000300"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:41.697887" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:41.697611" elapsed="0.000302"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:41.698606" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:41.698288" elapsed="0.000344"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:41.699356" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:41.699134" elapsed="0.000248"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:41.699448" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:29:41.699612" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:41.698814" elapsed="0.000827"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:41.699791" elapsed="0.000239"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:41.698141" elapsed="0.001930"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:41.700635" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:41.700315" elapsed="0.000345"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:41.701557" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:41.701226" elapsed="0.000359"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:41.701634" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:29:41.701784" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:41.700916" elapsed="0.000892"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:41.701954" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:41.700185" elapsed="0.002029"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:41.697965" elapsed="0.004297"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:41.702307" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:29:41.702486" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:41.696749" elapsed="0.005764"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:41.696293" elapsed="0.006279"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.702840" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:41.702633" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:41.696245" elapsed="0.006726"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:41.704070" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:41.703267" elapsed="0.000962"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:41.704364" elapsed="0.000089"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:41.689626" elapsed="0.014999"/>
</kw>
<msg time="2026-04-05T00:29:41.704793" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:41.675727" elapsed="0.029119"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.742658" elapsed="0.000058"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.755304" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.767906" elapsed="0.000033"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.768129" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.768311" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.768839" elapsed="0.000141"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:41.768623" elapsed="0.000441"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:41.768604" elapsed="0.000542"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.769328" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.769659" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.770011" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:41.768562" elapsed="0.001661"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:41.768396" elapsed="0.001867"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.770410" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:41.770505" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:29:41.770667" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:41.671530" elapsed="0.099165"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:41.772412" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:41.771982" elapsed="0.000645">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:41.772809" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:41.771405" elapsed="0.001429"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.773166" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:41.772905" elapsed="0.000402"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:41.774015" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:41.773518" elapsed="0.000539"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:41.773336" elapsed="0.000871"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:41.772887" elapsed="0.001348"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:41.780766" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:41.774386" elapsed="0.006408"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:29:41.780845" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:29:41.781003" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:41.771055" elapsed="0.009972"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:41.782607" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:41.782207" elapsed="0.000587">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:41.782973" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:41.781699" elapsed="0.001299"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:29:41.783206" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:29:41.783070" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:41.783052" elapsed="0.000237"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.783579" elapsed="0.000024"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.783752" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:29:41.783818" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:29:41.785752" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:41.781354" elapsed="0.004425"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:41.787617" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:41.787004" elapsed="0.000663"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:41.788268" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:41.787818" elapsed="0.000496"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:41.901982" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:41.902764" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:29:41.903222" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:29:41.790592" elapsed="0.113602">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:29:41.788382" elapsed="0.116298">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.905157" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:41.904769" elapsed="0.000809"/>
</branch>
<status status="FAIL" start="2026-04-05T00:29:41.788364" elapsed="0.117275">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.906766" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:41.907079" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:41.906992" elapsed="0.000185"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:41.906951" elapsed="0.000274"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.907570" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:29:41.907729" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:29:41.786162" elapsed="0.121814">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:41.908146" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:29:41.648095" elapsed="0.260265">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:41.909016" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:41.908598" elapsed="0.000588"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:41.908558" elapsed="0.000683"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:41.909316" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:29:41.639599" elapsed="0.269980">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:44.964746" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:44.964115" elapsed="0.000688"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:44.965894" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:44.965628" elapsed="0.000340">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:44.966181" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:44.965157" elapsed="0.001069"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:44.967175" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:44.966581" elapsed="0.000640"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:44.967830" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:44.968088" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:44.967580" elapsed="0.000553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:44.968859" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:44.968496" elapsed="0.000461"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:44.970221" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:44.969929" elapsed="0.000340"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:44.970714" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:44.970443" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:44.971396" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:44.971100" elapsed="0.000334"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:44.972156" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:44.971937" elapsed="0.000245"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:44.972233" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:29:44.972392" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:44.971617" elapsed="0.000799"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:44.972593" elapsed="0.000248"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:44.970968" elapsed="0.001914"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:44.973416" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:44.973120" elapsed="0.000443"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:44.974448" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:44.974224" elapsed="0.000251"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:44.974524" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:29:44.974675" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:44.973883" elapsed="0.000816"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:44.974846" elapsed="0.000222"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:44.972993" elapsed="0.002115"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:44.970793" elapsed="0.004349"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:44.975184" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:29:44.975412" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:44.969602" elapsed="0.005850"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:44.969111" elapsed="0.006399"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:44.975775" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:44.975568" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:44.969066" elapsed="0.006839"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:44.977006" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:44.976199" elapsed="0.000853"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:44.977184" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:44.962549" elapsed="0.014866"/>
</kw>
<msg time="2026-04-05T00:29:44.977634" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:44.948305" elapsed="0.029383"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:44.990205" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.002724" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.017550" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.017741" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.017912" elapsed="0.000032"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.018396" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:45.018181" elapsed="0.000372"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:45.018166" elapsed="0.000463"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.018811" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.019121" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.019480" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:45.018134" elapsed="0.001543"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:45.018000" elapsed="0.001707"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.019852" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:45.019963" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:29:45.020085" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:44.944101" elapsed="0.076010"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:45.021775" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:45.021346" elapsed="0.000675">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:45.022210" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:45.020851" elapsed="0.001385"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.022568" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:45.022308" elapsed="0.000399"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:45.023400" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:45.022904" elapsed="0.000556"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:45.022736" elapsed="0.000841"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:45.022290" elapsed="0.001311"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:45.030221" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:45.023748" elapsed="0.006500"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:29:45.030300" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:29:45.030471" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:45.020525" elapsed="0.009971"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:45.032009" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:45.031642" elapsed="0.000551">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:45.032372" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:45.031137" elapsed="0.001260"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:29:45.032632" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:29:45.032497" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:45.032478" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.032855" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.033019" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:29:45.033084" elapsed="0.000014"/>
</return>
<msg time="2026-04-05T00:29:45.035195" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:45.030816" elapsed="0.004405"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:45.036875" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:45.036388" elapsed="0.000534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:45.037634" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:45.037071" elapsed="0.000609"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:45.129197" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:45.130144" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:29:45.130610" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:29:45.039975" elapsed="0.091626">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:29:45.037748" elapsed="0.094292">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.132514" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:45.132123" elapsed="0.000787"/>
</branch>
<status status="FAIL" start="2026-04-05T00:29:45.037729" elapsed="0.095242">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.134108" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:45.134496" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:45.134333" elapsed="0.000268"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:45.134293" elapsed="0.000357"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.134962" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:29:45.135120" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:29:45.035589" elapsed="0.099775">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:45.135569" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:29:44.919496" elapsed="0.216297">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:45.136393" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:45.135999" elapsed="0.000586"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:45.135960" elapsed="0.000678"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:45.136712" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:29:44.911218" elapsed="0.225715">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:48.191578" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:48.190956" elapsed="0.000675"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:48.192733" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:48.192469" elapsed="0.000340">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:48.193008" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:48.191976" elapsed="0.001138"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:48.194075" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:48.193476" elapsed="0.000647"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:48.194729" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:48.195072" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:48.194477" elapsed="0.000642"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:48.195844" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:48.195477" elapsed="0.000471"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:48.197132" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:48.196873" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:48.197621" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:48.197333" elapsed="0.000313"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:48.198302" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:48.198007" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:48.199085" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:48.198864" elapsed="0.000248"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:48.199163" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:29:48.199327" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:48.198524" elapsed="0.000828"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:48.199516" elapsed="0.000242"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:48.197874" elapsed="0.001924"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:48.200336" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:48.200038" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:48.201359" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:48.201148" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:48.201451" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:29:48.201605" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:48.200682" elapsed="0.000947"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:48.201778" elapsed="0.000222"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:48.199910" elapsed="0.002131"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:48.197701" elapsed="0.004374"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:48.202118" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:29:48.202273" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:48.196537" elapsed="0.005762"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:48.196106" elapsed="0.006249"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.202642" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:48.202415" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:48.196058" elapsed="0.006743"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:48.203929" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:48.203111" elapsed="0.000890"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:48.204204" elapsed="0.000100"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:48.189356" elapsed="0.015318"/>
</kw>
<msg time="2026-04-05T00:29:48.204955" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:48.175251" elapsed="0.029781"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.219664" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.232753" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.245410" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.245616" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.245787" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.246266" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:48.246054" elapsed="0.000355"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:48.246038" elapsed="0.000465"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.246679" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.247018" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.247376" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:48.246006" elapsed="0.001584"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:48.245864" elapsed="0.001755"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.247767" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:48.247842" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:29:48.247964" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:48.171063" elapsed="0.076926"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:48.249591" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:48.249190" elapsed="0.000593">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:48.249962" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:48.248689" elapsed="0.001298"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.250341" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:48.250096" elapsed="0.000411"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:48.251240" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:48.250733" elapsed="0.000547"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:48.250535" elapsed="0.000856"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:48.250076" elapsed="0.001339"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:48.257905" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:48.251580" elapsed="0.006352"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:29:48.257983" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:48.258136" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:48.248343" elapsed="0.009817"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:48.259736" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:48.259323" elapsed="0.000599">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:48.260102" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:48.258832" elapsed="0.001295"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:29:48.260333" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:29:48.260199" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:48.260181" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.260706" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.260872" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:29:48.260937" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:29:48.262838" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:48.258498" elapsed="0.004367"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:48.264646" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:48.264035" elapsed="0.000658"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:48.265291" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:48.264843" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:48.339370" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:48.340296" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:29:48.340744" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:29:48.267627" elapsed="0.074041">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:29:48.265404" elapsed="0.076693">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.342545" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:48.342176" elapsed="0.000861"/>
</branch>
<status status="FAIL" start="2026-04-05T00:29:48.265385" elapsed="0.077786">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.344241" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:48.344581" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:48.344496" elapsed="0.000182"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:48.344455" elapsed="0.000272"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.345039" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:29:48.345197" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:29:48.263218" elapsed="0.082246">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:48.345639" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:29:48.148654" elapsed="0.197204">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:48.346478" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:48.346062" elapsed="0.000639"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:48.346025" elapsed="0.000743"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:48.346843" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:29:48.138058" elapsed="0.209015">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:51.401268" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:51.400660" elapsed="0.000661"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:51.402404" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:51.402140" elapsed="0.000365">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:51.402704" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:51.401686" elapsed="0.001063"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:51.403711" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:51.403094" elapsed="0.000674"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:51.404445" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:51.404713" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:51.404129" elapsed="0.000630"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:51.405471" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:51.405094" elapsed="0.000476"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:51.406837" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:51.406573" elapsed="0.000312"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:51.407322" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:51.407049" elapsed="0.000301"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:51.408055" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:51.407736" elapsed="0.000346"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:51.408864" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:51.408644" elapsed="0.000250"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:51.408957" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:29:51.409119" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:51.408303" elapsed="0.000841"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:51.409296" elapsed="0.000258"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:51.407598" elapsed="0.001998"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:51.410149" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:51.409843" elapsed="0.000332"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:51.411187" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:51.410973" elapsed="0.000240"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:51.411264" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:51.411431" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:51.410359" elapsed="0.001100"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:51.411610" elapsed="0.000226"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:51.409712" elapsed="0.002166"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:51.407404" elapsed="0.004508"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:51.411954" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:29:51.412119" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:51.406126" elapsed="0.006037"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:51.405726" elapsed="0.006496"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.412510" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:51.412284" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:51.405679" elapsed="0.006965"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:51.413819" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:51.412979" elapsed="0.000900"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:51.414018" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:51.399038" elapsed="0.015217"/>
</kw>
<msg time="2026-04-05T00:29:51.414522" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:51.384893" elapsed="0.029686"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.427132" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.439519" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.452417" elapsed="0.000051"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.452636" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.452806" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.453278" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:51.453065" elapsed="0.000372"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:51.453050" elapsed="0.000468"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.453692" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.454013" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.454369" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:51.453018" elapsed="0.001570"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:51.452884" elapsed="0.001733"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.454761" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:51.454836" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:29:51.454954" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:51.380624" elapsed="0.074356"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:51.456618" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:51.456219" elapsed="0.000593">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:51.457005" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:51.455678" elapsed="0.001351"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.457340" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:51.457100" elapsed="0.000398"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:51.458192" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:51.457697" elapsed="0.000536"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:51.457526" elapsed="0.000816"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:51.457081" elapsed="0.001285"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:51.464990" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:51.458534" elapsed="0.006484"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:29:51.465070" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:29:51.465224" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:51.455339" elapsed="0.009910"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:51.467077" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:51.466698" elapsed="0.000563">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:51.467454" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:51.465963" elapsed="0.001517"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:29:51.467685" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:29:51.467551" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:51.467533" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.467907" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.468071" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:29:51.468153" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:29:51.470043" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:51.465633" elapsed="0.004436"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:51.471769" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:51.471267" elapsed="0.000548"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:51.472465" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:51.471963" elapsed="0.000548"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:51.555597" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:51.555929" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:29:51.556202" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:29:51.474771" elapsed="0.081907">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:29:51.472579" elapsed="0.084295">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.557061" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:51.556909" elapsed="0.000332"/>
</branch>
<status status="FAIL" start="2026-04-05T00:29:51.472560" elapsed="0.084708">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.557743" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:51.557875" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:51.557840" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:51.557822" elapsed="0.000116"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.558075" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:29:51.558141" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:29:51.470460" elapsed="0.087787">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:51.558366" elapsed="0.000017"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:29:51.358028" elapsed="0.200454">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:51.558748" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:51.558574" elapsed="0.000245"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:51.558557" elapsed="0.000286"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:51.558875" elapsed="0.000014"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:29:51.348260" elapsed="0.210712">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:54.612713" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:54.612088" elapsed="0.000678"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:54.613837" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:54.613570" elapsed="0.000344">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:54.614109" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:54.613109" elapsed="0.001044"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:54.615130" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:54.614529" elapsed="0.000646"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:54.615786" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:54.616049" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:54.615535" elapsed="0.000559"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:54.616798" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:54.616438" elapsed="0.000457"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:54.618062" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:54.617807" elapsed="0.000300"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:54.618660" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:54.618263" elapsed="0.000422"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:54.619348" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:54.619049" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:54.620118" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:54.619901" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:54.620197" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:29:54.620357" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:54.619575" elapsed="0.000893"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:54.620626" elapsed="0.000245"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:54.618916" elapsed="0.001998"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:54.621476" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:54.621159" elapsed="0.000343"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:54.623642" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:54.623412" elapsed="0.000256"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:54.623719" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:29:54.623871" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:54.621686" elapsed="0.002209"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:54.624042" elapsed="0.000224"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:54.621029" elapsed="0.003278"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:54.618741" elapsed="0.005600"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:54.624384" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:29:54.624588" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:54.617477" elapsed="0.007144"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:54.617052" elapsed="0.007641"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.624969" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:54.624757" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:54.617006" elapsed="0.008104"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:54.626236" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:54.625451" elapsed="0.000832"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:54.626413" elapsed="0.000174"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:54.610528" elapsed="0.016219"/>
</kw>
<msg time="2026-04-05T00:29:54.626915" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:54.596536" elapsed="0.030433"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.639607" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.652244" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.664791" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.665085" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.665265" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.665787" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:54.665571" elapsed="0.000361"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:54.665554" elapsed="0.000457"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.666191" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.666576" elapsed="0.000025"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.666939" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:54.665514" elapsed="0.001626"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:54.665348" elapsed="0.001823"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.667324" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:54.667401" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:29:54.667557" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:54.592252" elapsed="0.075332"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:54.669289" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:54.668852" elapsed="0.000663">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:54.669700" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:54.668283" elapsed="0.001444"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.670064" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:54.669799" elapsed="0.000405"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:54.670976" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:54.670407" elapsed="0.000611"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:54.670233" elapsed="0.000898"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:54.669780" elapsed="0.001375"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:54.677962" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:54.671306" elapsed="0.006684"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:29:54.678044" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:29:54.678205" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:54.667940" elapsed="0.010290"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:54.679852" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:54.679467" elapsed="0.000574">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:54.680225" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:54.678957" elapsed="0.001293"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:29:54.680478" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:29:54.680323" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:54.680304" elapsed="0.000308"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.680759" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.680927" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:29:54.680993" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:29:54.683049" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:54.678622" elapsed="0.004454"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:54.685051" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:54.684390" elapsed="0.000709"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:54.685723" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:54.685250" elapsed="0.000520"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:54.780234" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:54.781018" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:29:54.781509" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:29:54.688019" elapsed="0.094435">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:29:54.685838" elapsed="0.097073">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.783392" elapsed="0.000081"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:54.782996" elapsed="0.000813"/>
</branch>
<status status="FAIL" start="2026-04-05T00:29:54.685820" elapsed="0.098048">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.784961" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:54.785272" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:54.785185" elapsed="0.000185"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:54.785144" elapsed="0.000274"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.785761" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:29:54.785915" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:29:54.683568" elapsed="0.102591">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:54.786328" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:29:54.568089" elapsed="0.218534">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:54.787202" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:54.786830" elapsed="0.000556"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:54.786792" elapsed="0.000650"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:54.787493" elapsed="0.000022"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:29:54.560008" elapsed="0.227633">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:57.841439" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:57.840811" elapsed="0.000683"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:57.842586" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:57.842301" elapsed="0.000361">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:57.842857" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:57.841857" elapsed="0.001044"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:57.843845" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:57.843234" elapsed="0.000657"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:57.844492" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:57.844752" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:57.844227" elapsed="0.000570"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:57.845535" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:57.845155" elapsed="0.000487"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:57.846821" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:57.846561" elapsed="0.000306"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:57.847299" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:57.847023" elapsed="0.000303"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:57.848001" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:57.847702" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:57.848761" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:57.848540" elapsed="0.000247"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:57.848839" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:29:57.848999" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:57.848208" elapsed="0.000816"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:57.849193" elapsed="0.000254"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:57.847570" elapsed="0.001920"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:57.850041" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:57.849736" elapsed="0.000331"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:57.851076" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:57.850850" elapsed="0.000258"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:57.851170" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:29:57.851343" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:57.850247" elapsed="0.001120"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:57.851606" elapsed="0.000228"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:57.849606" elapsed="0.002269"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:57.847379" elapsed="0.004530"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:57.851951" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:29:57.852107" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:57.846198" elapsed="0.005933"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:57.845796" elapsed="0.006393"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.852467" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:57.852247" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:57.845751" elapsed="0.006849"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:57.853716" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:57.852894" elapsed="0.000868"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:57.853892" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:57.839231" elapsed="0.014892"/>
</kw>
<msg time="2026-04-05T00:29:57.854287" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:57.825163" elapsed="0.029178"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.866958" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.879449" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.891785" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.891978" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.892151" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.892634" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:57.892409" elapsed="0.000366"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:57.892393" elapsed="0.000458"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.893023" elapsed="0.000046"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.893514" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.893899" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:57.892360" elapsed="0.001734"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:57.892226" elapsed="0.001898"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.894270" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:57.894346" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:29:57.894483" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:57.820899" elapsed="0.073610"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:57.896076" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:57.895693" elapsed="0.000570">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:57.896468" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:57.895187" elapsed="0.001308"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.896808" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:57.896567" elapsed="0.000377"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:57.897688" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:57.897159" elapsed="0.000569"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:57.896973" elapsed="0.000864"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:57.896549" elapsed="0.001313"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:57.904401" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:57.898009" elapsed="0.006433"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:29:57.904495" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:29:57.904658" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:57.894866" elapsed="0.009817"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:57.906303" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:57.905938" elapsed="0.000564">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:57.906681" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:57.905356" elapsed="0.001349"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:29:57.906911" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:29:57.906777" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:57.906758" elapsed="0.000243"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.907143" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.907307" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:29:57.907371" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:29:57.909279" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:57.905005" elapsed="0.004300"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:57.911123" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:57.910666" elapsed="0.000504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:57.911826" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:57.911320" elapsed="0.000554"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:57.988481" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:57.989217" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:29:57.989650" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:29:57.914165" elapsed="0.076424">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:29:57.911943" elapsed="0.079070">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.991462" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:57.991094" elapsed="0.000752"/>
</branch>
<status status="FAIL" start="2026-04-05T00:29:57.911924" elapsed="0.079980">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.992927" elapsed="0.000058"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:57.993262" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:57.993179" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:57.993139" elapsed="0.000262"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.993790" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:29:57.993945" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:29:57.909682" elapsed="0.084501">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:57.994348" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:29:57.798667" elapsed="0.195930">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:57.995191" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:57.994802" elapsed="0.000549"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:57.994764" elapsed="0.000640"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:57.995509" elapsed="0.000034"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:29:57.788690" elapsed="0.207037">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<msg time="2026-04-05T00:29:57.995939" level="FAIL">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${timeout}</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-05T00:29:25.473126" elapsed="32.523024">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${mapping}</arg>
<doc>Checks weather the device was mounted.</doc>
<status status="FAIL" start="2026-04-05T00:29:25.453263" elapsed="32.543247">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.005707" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${mod_session}</var>
<arg>member_index=${idx}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.006053" elapsed="0.000024"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}netconf-state</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${mod_session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.006242" elapsed="0.000022"/>
</kw>
<var name="${idx}"/>
<status status="NOT RUN" start="2026-04-05T00:29:58.005859" elapsed="0.000450"/>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="NOT RUN" start="2026-04-05T00:29:58.005795" elapsed="0.000542"/>
</for>
<kw name="Remove_Netconf_Device" type="TEARDOWN">
<kw name="Remove_Device_From_Netconf" owner="NetconfKeywords">
<kw name="Pop From Dictionary" owner="Collections">
<msg time="2026-04-05T00:29:58.007721" level="INFO">${device_type} = full-uri-device</msg>
<var>${device_type}</var>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<doc>Pops the given ``key`` from the ``dictionary`` and returns its value.</doc>
<status status="PASS" start="2026-04-05T00:29:58.007460" elapsed="0.000288"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.008332" level="INFO">${mapping} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:58.007909" elapsed="0.000449"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:58.026448" elapsed="0.000829"/>
</kw>
<msg time="2026-04-05T00:29:58.027523" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:58.026079" elapsed="0.001519"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:58.025671" elapsed="0.002002"/>
</kw>
<msg time="2026-04-05T00:29:58.027715" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:58.017109" elapsed="0.010662"/>
</kw>
<msg time="2026-04-05T00:29:58.027873" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:58.016749" elapsed="0.011148"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.070877" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:58.070212" elapsed="0.000775"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:58.072566" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:58.072050" elapsed="0.000623">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:58.072808" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:58.071286" elapsed="0.001628"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.074328" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:58.073274" elapsed="0.001185"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:58.075050" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:58.075266" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:58.074838" elapsed="0.000600"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.076236" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:58.075745" elapsed="0.000553"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.078250" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:58.077989" elapsed="0.000307"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.078847" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:58.078577" elapsed="0.000296"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.079632" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:58.079314" elapsed="0.000344"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:58.080538" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:58.080177" elapsed="0.000390"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:58.080617" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:29:58.080775" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:58.079839" elapsed="0.000960"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:58.080945" elapsed="0.000255"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:58.079181" elapsed="0.002059"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.081951" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:58.081651" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:58.082720" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:58.082511" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:58.082796" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:29:58.082943" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:58.082158" elapsed="0.000810"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:58.083113" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:58.081350" elapsed="0.002024"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:58.078970" elapsed="0.004473"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:58.083510" elapsed="0.000070"/>
</return>
<msg time="2026-04-05T00:29:58.083875" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:58.077189" elapsed="0.006774"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:58.076491" elapsed="0.007549"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.084333" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:58.084118" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:58.076469" elapsed="0.008120"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.085975" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:58.084738" elapsed="0.001346"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:58.086312" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:58.069212" elapsed="0.017262"/>
</kw>
<msg time="2026-04-05T00:29:58.086529" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:58.056548" elapsed="0.030042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.099044" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.111443" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.123734" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.123927" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.124098" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.124528" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:58.124365" elapsed="0.000220"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:58.124350" elapsed="0.000258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.124744" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.124904" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.125105" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:58.124318" elapsed="0.000839"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:58.124175" elapsed="0.001007"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.125321" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:58.125399" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:29:58.125535" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:58.052122" elapsed="0.073439"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.126687" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:58.126418" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:58.143869" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:58.143982" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:58.144198" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:29:58.128817" elapsed="0.015444"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:58.126800" elapsed="0.017559"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.144832" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:58.144464" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:58.126782" elapsed="0.018280"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.153602" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:58.147766" elapsed="0.005881"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:58.147243" elapsed="0.006474"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:58.147201" elapsed="0.006541"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.156688" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:58.154020" elapsed="0.002717"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:58.153798" elapsed="0.002975"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:58.153781" elapsed="0.003017"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.157379" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:58.156980" elapsed="0.000426"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.157733" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:58.157500" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.158370" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:58.157970" elapsed="0.000426"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:58.157815" elapsed="0.000632"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:58.157481" elapsed="0.000988"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.158983" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:58.158622" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:58.159305" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:58.159079" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:58.159962" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:58.159556" elapsed="0.000433"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:58.159386" elapsed="0.000638"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:58.159060" elapsed="0.000985"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:58.160190" elapsed="0.000486"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:29:58.161216" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:58.160836" elapsed="0.000406"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:29:58.161411" elapsed="0.005457"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:29:58.146238" elapsed="0.020694"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:29:58.166978" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:29:58.169261" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:29:58.125814" elapsed="0.043474"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:29:58.169343" elapsed="0.000028"/>
</return>
<arg>${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>${mapping}</arg>
<arg>session=${session}</arg>
<arg>location=${location}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:29:58.028112" elapsed="0.141399"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf to deconfigure the specified device</doc>
<status status="PASS" start="2026-04-05T00:29:58.007002" elapsed="0.162582"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<doc>Removes configured device</doc>
<status status="PASS" start="2026-04-05T00:29:58.006553" elapsed="0.163085"/>
</kw>
<arg>${idx}</arg>
<doc>Netconf readines for a node is done by creating a netconf device connected to that node
and performing GET operation got from the device's mount point.</doc>
<status status="FAIL" start="2026-04-05T00:29:24.246930" elapsed="33.922798">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<var name="${idx}">1</var>
<status status="FAIL" start="2026-04-05T00:29:24.244608" elapsed="33.925183">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="FAIL" start="2026-04-05T00:29:24.244470" elapsed="33.925381">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</for>
<doc>Verifies the netconf readiness for every odl node.</doc>
<status status="FAIL" start="2026-04-05T00:29:24.244285" elapsed="33.925660">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Check_Netconf_Topology_Ready">
<for flavor="IN">
<iter>
<kw name="Verify_Netconf_Topology_Ready_For_Node">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.174523" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:59.173733" elapsed="0.000862"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:29:59.174711" elapsed="0.000075"/>
</return>
<msg time="2026-04-05T00:29:59.175053" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${node_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:29:59.172939" elapsed="0.002170"/>
</kw>
<kw name="Configure_Netconf_Device">
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:59.201585" elapsed="0.000893"/>
</kw>
<msg time="2026-04-05T00:29:59.202626" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:59.201109" elapsed="0.001574"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:59.200721" elapsed="0.002039"/>
</kw>
<msg time="2026-04-05T00:29:59.202803" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:59.192160" elapsed="0.010688"/>
</kw>
<msg time="2026-04-05T00:29:59.202949" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:59.191833" elapsed="0.011140"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.203864" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.203133" elapsed="0.000759"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.204302" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.203986" elapsed="0.000382"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.237299" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:59.236912" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:59.238174" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:59.237896" elapsed="0.000363">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:59.238355" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:59.237560" elapsed="0.000819"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.238998" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:59.238609" elapsed="0.000416"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:59.239371" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:59.239554" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:59.239233" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.240032" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:59.239786" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.241172" level="INFO">mapping: {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:59.240916" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.241661" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.241371" elapsed="0.000315"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.242340" level="INFO">${value} = 10.30.170.184</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:59.242045" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:59.243100" level="INFO">${encoded} = 10.30.170.184</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.242882" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:59.243174" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:29:59.243323" level="INFO">${encoded_value} = 10.30.170.184</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:59.242567" elapsed="0.000780"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.243514" elapsed="0.000239"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.184</var>
<status status="PASS" start="2026-04-05T00:29:59.241915" elapsed="0.001878"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.244323" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:59.244030" elapsed="0.000317"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:59.245177" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.244972" elapsed="0.000231"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:59.245252" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:59.245399" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:59.244557" elapsed="0.000906"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.245613" elapsed="0.000222"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:59.243903" elapsed="0.001972"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.246404" level="INFO">${value} = 2830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:59.246111" elapsed="0.000334"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:59.247147" level="INFO">${encoded} = 2830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.246940" elapsed="0.000232"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:59.247220" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:59.247536" level="INFO">${encoded_value} = 2830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:59.246625" elapsed="0.000936"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.247708" elapsed="0.000221"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">2830</var>
<status status="PASS" start="2026-04-05T00:29:59.245984" elapsed="0.001986"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.248528" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:59.248206" elapsed="0.000346"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:59.249241" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.249035" elapsed="0.000230"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:59.249314" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:59.249490" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:59.248731" elapsed="0.000784"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.249660" elapsed="0.000219"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:29:59.248079" elapsed="0.001840"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.250466" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:59.250153" elapsed="0.000339"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:59.251194" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.250986" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:59.251267" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:59.251474" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:59.250672" elapsed="0.000829"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.251647" elapsed="0.000219"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:29:59.250027" elapsed="0.001879"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.252473" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:59.252142" elapsed="0.000363"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:59.253210" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.253003" elapsed="0.000232"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:59.253284" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:59.253447" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:59.252691" elapsed="0.000781"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.253617" elapsed="0.000220"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:29:59.252016" elapsed="0.001861"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.254406" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:59.254112" elapsed="0.000334"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:59.255160" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.254949" elapsed="0.000236"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:59.255234" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:29:59.255381" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:59.254628" elapsed="0.000782"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.255571" elapsed="0.000219"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:29:59.253986" elapsed="0.001845"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.256368" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:59.256073" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:59.257132" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.256926" elapsed="0.000231"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:59.257207" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:29:59.257352" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:59.256599" elapsed="0.000776"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.257534" elapsed="0.000224"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:59.255945" elapsed="0.001858"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:59.241741" elapsed="0.016096"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:59.257882" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:29:59.258045" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:59.240599" elapsed="0.017473"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:59.240194" elapsed="0.017910"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.258274" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.258128" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:59.240173" elapsed="0.018178"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.260360" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:59.258561" elapsed="0.001828"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:59.260519" elapsed="0.000056"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:59.235903" elapsed="0.024898"/>
</kw>
<msg time="2026-04-05T00:29:59.260922" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:59.222506" elapsed="0.038513"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.282762" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.304590" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.326190" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.326467" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.326660" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.327219" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.326961" elapsed="0.000342"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:59.326945" elapsed="0.000442"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.327671" elapsed="0.000044"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.327996" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.328317" elapsed="0.000044"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:59.326914" elapsed="0.001603"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:59.326784" elapsed="0.001794"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.328724" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:59.328875" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:29:59.328999" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:59.218071" elapsed="0.110954"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.356910" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:59.356534" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:59.357720" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:59.357492" elapsed="0.000295">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:59.357921" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:59.357146" elapsed="0.000800"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.358562" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:59.358157" elapsed="0.000432"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:59.358933" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:59.359069" level="INFO">${template} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVI...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:59.358795" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.359567" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;$DEVICE_USER&lt;/username&gt;
      &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:59.359299" elapsed="0.000319"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:29:59.360028" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.359735" elapsed="0.000352"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.360594" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:59.360254" elapsed="0.000368"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:59.360112" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:59.359714" elapsed="0.000965"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.361608" level="INFO">${final_text} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:59.360870" elapsed="0.000768"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:59.361735" elapsed="0.000053"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:59.355522" elapsed="0.006482"/>
</kw>
<msg time="2026-04-05T00:29:59.362092" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:59.342302" elapsed="0.019884"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.384192" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.406145" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.428010" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.428310" elapsed="0.000045"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.428560" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.429147" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.428883" elapsed="0.000349"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:59.428866" elapsed="0.000451"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.429581" elapsed="0.000045"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.429908" elapsed="0.000043"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.430229" elapsed="0.000045"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:59.428830" elapsed="0.001566"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:59.428691" elapsed="0.001780"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.430622" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:59.430775" elapsed="0.000019"/>
</return>
<msg time="2026-04-05T00:29:59.430924" level="INFO">${data} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:59.339470" elapsed="0.091484"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:59.433790" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:59.433027" elapsed="0.000889">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:59.434045" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:59.431716" elapsed="0.002355"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.434545" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.434179" elapsed="0.000520"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.435830" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:59.435184" elapsed="0.000686"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:59.434726" elapsed="0.001224"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:59.434160" elapsed="0.001813"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.438799" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:59.436121" elapsed="0.002704"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:29:59.438924" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:29:59.439082" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:59.431340" elapsed="0.007767"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.440963" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:59.440474" elapsed="0.000553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.441903" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:59.441192" elapsed="0.000781"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.442678" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:59.442181" elapsed="0.000558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.443370" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:59.442904" elapsed="0.000570"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:29:59.444987" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:29:59.444374" elapsed="0.000711"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:29:59.445895" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:29:59.445346" elapsed="0.000645"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.446249" elapsed="0.000522"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.447732" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:59.447034" elapsed="0.000893"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:29:59.448014" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:29:59.448287" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:29:59.443692" elapsed="0.004621"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:59.471861" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '439', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt; 
 </msg>
<msg time="2026-04-05T00:29:59.471994" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:59.472237" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:29:59.457259" elapsed="0.015023"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:59.448512" elapsed="0.023995"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.472827" elapsed="0.000081"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.472554" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:59.448490" elapsed="0.024572"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.477973" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:59.475103" elapsed="0.003012"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:59.474606" elapsed="0.003588"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:59.474567" elapsed="0.003757"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.482980" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:59.479207" elapsed="0.003872"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:59.478494" elapsed="0.004656"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:59.478411" elapsed="0.004840"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.485609" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:59.484053" elapsed="0.001705"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.486685" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.485949" elapsed="0.000875"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.488165" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:59.487415" elapsed="0.000801"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:59.486925" elapsed="0.001363"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:59.485902" elapsed="0.002537"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.490264" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:59.489173" elapsed="0.001189"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.490990" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.490509" elapsed="0.000644"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.492090" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:59.491635" elapsed="0.000491"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:59.491227" elapsed="0.000948"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:59.490476" elapsed="0.001765"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:59.492563" elapsed="0.000816"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:29:59.494333" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:59.493669" elapsed="0.000780"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.494718" elapsed="0.002691"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:29:59.473640" elapsed="0.023895"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:29:59.497772" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-05T00:29:59.497620" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:59.497601" elapsed="0.000326"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.498078" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:29:59.498185" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:29:59.500611" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:29:59.439530" elapsed="0.061108"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:29:59.500704" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:29:59.500859" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:29:59.207245" elapsed="0.293639"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.501225" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.500984" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:59.500967" elapsed="0.000350"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:29:59.501350" elapsed="0.000026"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:29:59.204658" elapsed="0.296832"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:59.204394" elapsed="0.297142"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:59.203966" elapsed="0.297593"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.501700" elapsed="0.000242"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=full-uri-device</arg>
<arg>device_port=${DEVICE_PORT}</arg>
<arg>device_address=${device_ip}</arg>
<arg>device_user=admin</arg>
<arg>device_password=admin</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:29:59.176703" elapsed="0.325303"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${ODL_SYSTEM_${node_index}_IP}</arg>
<doc>Configures the device via REST api.</doc>
<status status="PASS" start="2026-04-05T00:29:59.175380" elapsed="0.326695"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.502734" level="INFO">&amp;{mapping} = { DEVICE_NAME=test-device | RESTCONF_ROOT=/rests }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.502250" elapsed="0.000511"/>
</kw>
<kw name="Wait_Netconf_Device_Mounted">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:59.522550" elapsed="0.000779"/>
</kw>
<msg time="2026-04-05T00:29:59.523386" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:59.522172" elapsed="0.001299"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:59.521782" elapsed="0.001814"/>
</kw>
<msg time="2026-04-05T00:29:59.523640" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:59.512732" elapsed="0.010954"/>
</kw>
<msg time="2026-04-05T00:29:59.523787" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:59.512332" elapsed="0.011480"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.571154" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:59.570573" elapsed="0.000628"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:59.572307" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:59.571996" elapsed="0.000395">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:59.572618" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:59.571554" elapsed="0.001107"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.573604" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:59.572997" elapsed="0.000653"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:29:59.574228" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:29:59.574496" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:29:59.573983" elapsed="0.000558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.575216" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:59.574865" elapsed="0.000447"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.576532" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:59.576202" elapsed="0.000376"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.576997" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.576733" elapsed="0.000290"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.577867" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:59.577393" elapsed="0.000500"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:59.578641" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.578396" elapsed="0.000271"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:59.578719" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:29:59.578875" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:59.578080" elapsed="0.000820"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.579054" elapsed="0.000229"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:29:59.577259" elapsed="0.002064"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.579878" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:29:59.579582" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:29:59.580761" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.580415" elapsed="0.000371"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:29:59.580835" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:29:59.580982" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:29:59.580085" elapsed="0.000921"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:29:59.581193" elapsed="0.000245"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:29:59.579452" elapsed="0.002029"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:29:59.577079" elapsed="0.004437"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:29:59.581560" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:29:59.581715" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:29:59.575875" elapsed="0.005864"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:59.575479" elapsed="0.006317"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.582058" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.581855" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:59.575417" elapsed="0.006774"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.583264" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:29:59.582497" elapsed="0.000814"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:29:59.583454" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:29:59.569023" elapsed="0.014661"/>
</kw>
<msg time="2026-04-05T00:29:59.583849" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:29:59.555201" elapsed="0.028701"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.596685" elapsed="0.000039"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.608953" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.621312" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.621514" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.621685" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.622148" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.621940" elapsed="0.000351"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:59.621925" elapsed="0.000442"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.622559" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.622872" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.623274" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:29:59.621894" elapsed="0.001601"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:29:59.621761" elapsed="0.001770"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.623679" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:59.623756" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:29:59.623876" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:29:59.551044" elapsed="0.072858"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:59.625516" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:59.625122" elapsed="0.000588">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:59.625891" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:59.624628" elapsed="0.001287"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.626226" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.625986" elapsed="0.000378"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.627063" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:29:59.626572" elapsed="0.000532"/>
</kw>
<status status="PASS" start="2026-04-05T00:29:59.626392" elapsed="0.000822"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:59.625968" elapsed="0.001269"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.633746" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:29:59.627383" elapsed="0.006389"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:29:59.633823" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:29:59.633976" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:59.624288" elapsed="0.009713"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:29:59.635627" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:29:59.635149" elapsed="0.000664">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:29:59.635992" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:29:59.634663" elapsed="0.001353"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:29:59.636220" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-05T00:29:59.636087" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-05T00:29:59.636069" elapsed="0.000250"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.636475" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.636643" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:29:59.636707" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:29:59.638582" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:29:59.634327" elapsed="0.004281"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.640442" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:59.639956" elapsed="0.000533"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:29:59.641127" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:29:59.640636" elapsed="0.000536"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:29:59.656371" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:29:59.656852" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=503, reason=Service Unavailable 
 headers={'Content-Type': 'application/xml', 'Content-Length': '433'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;protocol&lt;/error-type&gt;&lt;error-path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology/a:topology[a:topology-id='topology-netconf']/a:node[a:node-id='test-device']&lt;/error-path&gt;&lt;error-message&gt;Mount point does not exist&lt;/error-message&gt;&lt;error-tag&gt;resource-denied-transport&lt;/error-tag&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:29:59.657103" level="FAIL">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:29:59.643399" elapsed="0.014350">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:29:59.641240" elapsed="0.016777">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.658272" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.658065" elapsed="0.000503"/>
</branch>
<status status="FAIL" start="2026-04-05T00:29:59.641222" elapsed="0.017391">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.659232" elapsed="0.000037"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:59.659417" elapsed="0.000311"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:29:59.659366" elapsed="0.000403"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:59.659342" elapsed="0.000457"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.659992" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:29:59.660089" elapsed="0.000020"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:29:59.638964" elapsed="0.021289">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:59.660370" elapsed="0.000023"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:29:59.528959" elapsed="0.131572">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:29:59.660902" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:29:59.660659" elapsed="0.000343"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:29:59.660636" elapsed="0.000398"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:29:59.661078" elapsed="0.000019"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:29:59.524618" elapsed="0.136593">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:02.721687" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:02.720988" elapsed="0.000830"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:02.723050" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:02.722730" elapsed="0.000400">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:02.723346" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:02.722197" elapsed="0.001200"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:02.724490" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:02.723811" elapsed="0.000737"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:02.725172" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:02.725574" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:02.724896" elapsed="0.000741"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:02.726369" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:02.725980" elapsed="0.000523"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:02.727796" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:02.727507" elapsed="0.000336"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:02.728318" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:02.728018" elapsed="0.000330"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:02.729053" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:02.728739" elapsed="0.000339"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:02.729998" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:02.729774" elapsed="0.000250"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:02.730078" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:30:02.730240" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:02.729286" elapsed="0.000978"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:02.730462" elapsed="0.000282"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:02.728605" elapsed="0.002181"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:02.731378" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:02.731069" elapsed="0.000338"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:02.732344" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:02.732123" elapsed="0.000250"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:02.732446" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:30:02.732603" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:02.731609" elapsed="0.001019"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:02.732780" elapsed="0.000228"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:02.730938" elapsed="0.002112"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:02.728404" elapsed="0.004680"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:02.733140" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:02.733324" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:02.727150" elapsed="0.006200"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:02.726682" elapsed="0.006849"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.733822" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:02.733610" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:02.726622" elapsed="0.007366"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:02.735196" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:02.734293" elapsed="0.000954"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:02.735383" elapsed="0.000103"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:02.719111" elapsed="0.016544"/>
</kw>
<msg time="2026-04-05T00:30:02.735826" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:02.704263" elapsed="0.031618"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.748938" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.761880" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.774822" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.775031" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.775202" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.775749" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:02.775503" elapsed="0.000405"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:02.775485" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.776175" elapsed="0.000027"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.776521" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.776910" elapsed="0.000024"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:02.775450" elapsed="0.001683"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:02.775289" elapsed="0.001876"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.777325" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:02.777404" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:30:02.777550" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:02.699859" elapsed="0.077716"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:02.779358" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:02.778945" elapsed="0.000628">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:02.779777" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:02.778356" elapsed="0.001453"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.780160" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:02.779889" elapsed="0.000421"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:02.781087" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:02.780545" elapsed="0.000593"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:02.780339" elapsed="0.000912"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:02.779870" elapsed="0.001405"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:02.788025" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:02.781442" elapsed="0.006612"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:02.788106" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:30:02.788279" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:02.777994" elapsed="0.010311"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:02.790053" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:02.789660" elapsed="0.000602">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:02.790478" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:02.789009" elapsed="0.001497"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:02.790730" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:30:02.790580" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:02.790561" elapsed="0.000280"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.790997" elapsed="0.000025"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.791184" elapsed="0.000027"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:02.791264" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:30:02.793256" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:02.788669" elapsed="0.004616"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:02.795275" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:02.794746" elapsed="0.000581"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:02.795983" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:02.795494" elapsed="0.000538"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:02.872067" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:02.872913" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:02.873365" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:02.798339" elapsed="0.076137">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:02.796100" elapsed="0.079028">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.875724" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:02.875231" elapsed="0.000749"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:02.796082" elapsed="0.079948">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.876839" elapsed="0.000043"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:02.877057" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:02.877002" elapsed="0.000117"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:02.876974" elapsed="0.000175"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.877346" elapsed="0.000032"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:02.877469" elapsed="0.000028"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:02.793875" elapsed="0.083785">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:02.877787" elapsed="0.000030"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:02.673414" elapsed="0.204528">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:02.878342" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:02.878071" elapsed="0.000414"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:02.878047" elapsed="0.000473"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:02.878566" elapsed="0.000020"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:02.662381" elapsed="0.216337">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:05.932728" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:05.932106" elapsed="0.000677"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:05.933887" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:05.933624" elapsed="0.000338">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:05.934160" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:05.933133" elapsed="0.001071"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:05.935172" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:05.934575" elapsed="0.000644"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:05.935830" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:05.936154" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:05.935573" elapsed="0.000627"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:05.936914" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:05.936549" elapsed="0.000464"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:05.938243" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:05.937932" elapsed="0.000357"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:05.938787" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:05.938516" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:05.939483" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:05.939170" elapsed="0.000339"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:05.940233" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:05.940014" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:05.940310" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:30:05.940486" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:05.939690" elapsed="0.000821"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:05.940657" elapsed="0.000242"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:05.939040" elapsed="0.001901"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:05.941915" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:05.941180" elapsed="0.000762"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:05.942802" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:05.942594" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:05.942877" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:05.943025" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:05.942126" elapsed="0.000923"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:05.943194" elapsed="0.000219"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:05.941054" elapsed="0.002413"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:05.938866" elapsed="0.004636"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:05.943544" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:30:05.943697" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:05.937609" elapsed="0.006113"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:05.937169" elapsed="0.006624"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:05.944059" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:05.943854" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:05.937121" elapsed="0.007069"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:05.945301" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:05.944506" elapsed="0.000857"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:05.945515" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:05.930385" elapsed="0.015373"/>
</kw>
<msg time="2026-04-05T00:30:05.945927" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:05.916551" elapsed="0.029429"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:05.958384" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:05.970841" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:05.983029" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:05.983216" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:05.983384" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:05.983862" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:05.983655" elapsed="0.000347"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:05.983641" elapsed="0.000437"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:05.984248" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:05.984576" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:05.984918" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:05.983609" elapsed="0.001500"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:05.983480" elapsed="0.001658"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:05.985281" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:05.985382" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:30:05.985522" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:05.912268" elapsed="0.073280"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:05.987110" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:05.986724" elapsed="0.000572">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:05.987496" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:05.986217" elapsed="0.001305"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:05.987838" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:05.987593" elapsed="0.000379"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:05.988671" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:05.988167" elapsed="0.000544"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:05.987999" elapsed="0.000849"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:05.987574" elapsed="0.001300"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:05.995220" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:05.989023" elapsed="0.006223"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:05.995297" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:30:05.995570" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:05.985900" elapsed="0.009695"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:05.997092" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:05.996729" elapsed="0.000546">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:05.997491" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:05.996229" elapsed="0.001288"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:05.997722" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:30:05.997588" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:05.997570" elapsed="0.000233"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:05.997943" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:05.998104" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:05.998168" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:06.000182" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:05.995914" elapsed="0.004295"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:06.001889" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:06.001412" elapsed="0.000523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:06.002547" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:06.002083" elapsed="0.000509"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:06.075613" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:06.076299" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:06.076729" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:06.004981" elapsed="0.072721">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:06.002659" elapsed="0.075468">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:06.078568" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:06.078204" elapsed="0.000744"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:06.002641" elapsed="0.076367">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:06.080072" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:06.080370" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:06.080290" elapsed="0.000313"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:06.080251" elapsed="0.000406"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:06.080966" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:06.081121" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:06.000572" elapsed="0.080809">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:06.081584" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:05.890218" elapsed="0.191598">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:06.082400" elapsed="0.000127"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:06.082016" elapsed="0.000620"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:06.081979" elapsed="0.000709"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:06.082760" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:05.879858" elapsed="0.203117">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:09.137935" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:09.137326" elapsed="0.000662"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:09.139091" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:09.138820" elapsed="0.000345">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:09.139364" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:09.138345" elapsed="0.001063"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:09.140878" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:09.139774" elapsed="0.001154"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:09.141532" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:09.141820" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:09.141265" elapsed="0.000602"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:09.142582" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:09.142203" elapsed="0.000477"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:09.143910" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:09.143629" elapsed="0.000332"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:09.144385" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:09.144117" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:09.145085" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:09.144788" elapsed="0.000382"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:09.145905" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:09.145687" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:09.145983" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:30:09.146143" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:09.145357" elapsed="0.000811"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:09.146315" elapsed="0.000262"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:09.144656" elapsed="0.001961"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:09.147313" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:09.147013" elapsed="0.000325"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:09.148334" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:09.148123" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:09.148409" elapsed="0.000044"/>
</return>
<msg time="2026-04-05T00:30:09.148575" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:09.147640" elapsed="0.000959"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:09.148744" elapsed="0.000226"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:09.146730" elapsed="0.002280"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:09.144481" elapsed="0.004564"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:09.149088" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:30:09.149239" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:09.143241" elapsed="0.006023"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:09.142837" elapsed="0.006486"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.149605" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:09.149384" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:09.142791" elapsed="0.006946"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:09.150836" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:09.150035" elapsed="0.000848"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:09.151015" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:09.135770" elapsed="0.015476"/>
</kw>
<msg time="2026-04-05T00:30:09.151416" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:09.121740" elapsed="0.029833"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.163999" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.176263" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.188563" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.188750" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.188919" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.189378" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:09.189170" elapsed="0.000371"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:09.189155" elapsed="0.000464"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.189792" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.190101" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.190459" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:09.189125" elapsed="0.001532"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:09.188993" elapsed="0.001692"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.190828" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:09.190905" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:30:09.191023" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:09.117548" elapsed="0.073501"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:09.192645" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:09.192257" elapsed="0.000576">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:09.193012" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:09.191735" elapsed="0.001301"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.193353" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:09.193108" elapsed="0.000403"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:09.194206" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:09.193712" elapsed="0.000534"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:09.193539" elapsed="0.000816"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:09.193090" elapsed="0.001288"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:09.200567" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:09.194541" elapsed="0.006053"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:09.200645" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:09.200796" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:09.191401" elapsed="0.009419"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:09.202389" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:09.202024" elapsed="0.000563">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:09.202801" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:09.201540" elapsed="0.001287"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:09.203030" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:30:09.202898" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:09.202880" elapsed="0.000233"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.203253" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.203434" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:09.203504" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:09.205732" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:09.201139" elapsed="0.004619"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:09.207384" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:09.206929" elapsed="0.000517"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:09.208084" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:09.207597" elapsed="0.000533"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:09.274651" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:09.275369" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:09.275849" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:09.210489" elapsed="0.066286">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:09.208198" elapsed="0.069004">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.277649" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:09.277281" elapsed="0.000751"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:09.208180" elapsed="0.069912">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.279138" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:09.279498" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:09.279355" elapsed="0.000243"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:09.279317" elapsed="0.000329"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.279972" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:09.280129" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:09.206111" elapsed="0.074253">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:09.280567" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:09.094681" elapsed="0.186178">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:09.281486" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:09.281067" elapsed="0.000584"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:09.281029" elapsed="0.000674"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:09.281775" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:09.084109" elapsed="0.197883">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:12.334485" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:12.333844" elapsed="0.000696"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:12.335611" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:12.335332" elapsed="0.000355">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:12.335886" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:12.334888" elapsed="0.001043"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:12.336901" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:12.336271" elapsed="0.000676"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:12.337550" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:12.337809" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:12.337283" elapsed="0.000572"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:12.338600" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:12.338186" elapsed="0.000512"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:12.339851" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:12.339591" elapsed="0.000306"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:12.340320" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:12.340054" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:12.341084" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:12.340784" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:12.341845" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:12.341625" elapsed="0.000245"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:12.341924" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:30:12.342087" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:12.341291" elapsed="0.000820"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:12.342259" elapsed="0.000272"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:12.340652" elapsed="0.001920"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:12.343105" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:12.342811" elapsed="0.000319"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:12.343910" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:12.343702" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:12.343986" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:12.344135" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:12.343375" elapsed="0.000785"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:12.344308" elapsed="0.000394"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:12.342683" elapsed="0.002061"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:12.340399" elapsed="0.004379"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:12.344821" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:30:12.344975" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:12.339253" elapsed="0.005747"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:12.338855" elapsed="0.006202"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.345323" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:12.345114" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:12.338809" elapsed="0.006667"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:12.346762" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:12.345777" elapsed="0.001034"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:12.346941" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:12.332257" elapsed="0.014914"/>
</kw>
<msg time="2026-04-05T00:30:12.347336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:12.318401" elapsed="0.028988"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.361664" elapsed="0.000068"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.379349" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.391718" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.391911" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.392087" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.392567" elapsed="0.000103"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:12.392338" elapsed="0.000414"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:12.392323" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.393006" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.393315" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.393680" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:12.392292" elapsed="0.001582"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:12.392162" elapsed="0.001740"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.394045" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:12.394121" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:12.394240" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:12.313977" elapsed="0.080289"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:12.395958" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:12.395579" elapsed="0.000569">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:12.396328" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:12.395065" elapsed="0.001288"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.396684" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:12.396440" elapsed="0.000381"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:12.397527" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:12.397018" elapsed="0.000551"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:12.396848" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:12.396406" elapsed="0.001294"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:12.403912" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:12.397854" elapsed="0.006085"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:12.403991" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:12.404143" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:12.394721" elapsed="0.009446"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:12.405694" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:12.405311" elapsed="0.000564">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:12.406054" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:12.404823" elapsed="0.001256"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:12.406285" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:30:12.406151" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:12.406132" elapsed="0.000262"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.406729" elapsed="0.000024"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.406896" elapsed="0.000026"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:12.406967" elapsed="0.000014"/>
</return>
<msg time="2026-04-05T00:30:12.409077" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:12.404505" elapsed="0.004599"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:12.410872" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:12.410282" elapsed="0.000638"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:12.411533" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:12.411070" elapsed="0.000508"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:12.482371" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:12.483133" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:12.483591" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:12.413798" elapsed="0.070734">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:12.411646" elapsed="0.073321">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.485481" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:12.485053" elapsed="0.000867"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:12.411627" elapsed="0.074353">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.487124" elapsed="0.000043"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:12.487334" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:12.487276" elapsed="0.000124"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:12.487249" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.487667" elapsed="0.000032"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:12.487772" elapsed="0.000023"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:12.409476" elapsed="0.078460">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:12.488048" elapsed="0.000025"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:12.292087" elapsed="0.196108">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:12.488614" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:12.488330" elapsed="0.000392"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:12.488304" elapsed="0.000453"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:12.488804" elapsed="0.000020"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:12.283098" elapsed="0.205849">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:15.542692" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:15.542070" elapsed="0.000676"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:15.543838" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:15.543554" elapsed="0.000364">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:15.544115" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:15.543093" elapsed="0.001066"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:15.545146" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:15.544530" elapsed="0.000663"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:15.545802" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:15.546068" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:15.545546" elapsed="0.000566"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:15.546824" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:15.546460" elapsed="0.000460"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:15.548077" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:15.547819" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:15.548645" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:15.548276" elapsed="0.000395"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:15.549371" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:15.549069" elapsed="0.000327"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:15.550126" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:15.549909" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:15.550203" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:30:15.550363" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:15.549597" elapsed="0.000790"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:15.550548" elapsed="0.000243"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:15.548935" elapsed="0.001897"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:15.551374" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:15.551072" elapsed="0.000328"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:15.552114" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:15.551906" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:15.552195" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:15.552344" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:15.551597" elapsed="0.000771"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:15.552612" elapsed="0.000223"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:15.550945" elapsed="0.001932"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:15.548725" elapsed="0.004201"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:15.552970" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:30:15.553195" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:15.547495" elapsed="0.005726"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:15.547078" elapsed="0.006200"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.553564" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:15.553338" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:15.547030" elapsed="0.006666"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:15.554953" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:15.553988" elapsed="0.001012"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:15.555131" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:15.540481" elapsed="0.014881"/>
</kw>
<msg time="2026-04-05T00:30:15.555546" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:15.526478" elapsed="0.029122"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.568047" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.580442" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.592704" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.592936" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.593114" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.593605" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:15.593379" elapsed="0.000367"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:15.593363" elapsed="0.000459"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.593997" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.594311" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.594672" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:15.593330" elapsed="0.001539"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:15.593193" elapsed="0.001706"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.595044" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:15.595163" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:30:15.595294" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:15.522079" elapsed="0.073240"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:15.596960" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:15.596555" elapsed="0.000596">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:15.597329" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:15.596032" elapsed="0.001323"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.597693" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:15.597441" elapsed="0.000388"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:15.598532" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:15.598027" elapsed="0.000545"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:15.597857" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:15.597408" elapsed="0.001293"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:15.604936" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:15.598867" elapsed="0.006095"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:15.605013" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:30:15.605167" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:15.595700" elapsed="0.009491"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:15.606735" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:15.606353" elapsed="0.000568">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:15.607100" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:15.605871" elapsed="0.001255"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:15.607330" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:30:15.607196" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:15.607178" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.607696" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.607860" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:15.607924" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:15.610021" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:15.605553" elapsed="0.004494"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:15.611884" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:15.611216" elapsed="0.000715"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:15.612545" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:15.612081" elapsed="0.000510"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:15.683100" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:15.684008" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:15.684554" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:15.614838" elapsed="0.071085">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:15.612657" elapsed="0.073825">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.687085" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:15.686586" elapsed="0.001019"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:15.612639" elapsed="0.075039">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.688697" elapsed="0.000042"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:15.688925" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:15.688866" elapsed="0.000121"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:15.688836" elapsed="0.000181"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.689263" elapsed="0.000041"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:15.689393" elapsed="0.000054"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:15.610401" elapsed="0.079197">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:15.689707" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:15.497631" elapsed="0.192217">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:15.690228" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:15.689977" elapsed="0.000350"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:15.689954" elapsed="0.000406"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:15.690405" elapsed="0.000040"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:15.490051" elapsed="0.200517">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:18.744885" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:18.744266" elapsed="0.000673"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:18.746011" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:18.745747" elapsed="0.000341">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:18.746288" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:18.745287" elapsed="0.001115"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:18.747355" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:18.746761" elapsed="0.000640"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:18.748026" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:18.748290" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:18.747775" elapsed="0.000560"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:18.749046" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:18.748689" elapsed="0.000453"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:18.750295" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:18.750039" elapsed="0.000301"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:18.750830" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:18.750561" elapsed="0.000295"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:18.751539" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:18.751214" elapsed="0.000351"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:18.752281" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:18.752063" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:18.752360" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:30:18.752538" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:18.751746" elapsed="0.000817"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:18.752710" elapsed="0.000250"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:18.751083" elapsed="0.001919"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:18.753550" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:18.753240" elapsed="0.000336"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:18.754282" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:18.754076" elapsed="0.000232"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:18.754356" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:18.754635" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:18.753754" elapsed="0.000906"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:18.754804" elapsed="0.000221"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:18.753114" elapsed="0.001951"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:18.750910" elapsed="0.004189"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:18.755142" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:30:18.755295" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:18.749717" elapsed="0.005603"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:18.749298" elapsed="0.006079"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.755694" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:18.755483" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:18.749252" elapsed="0.006571"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:18.757107" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:18.756120" elapsed="0.001033"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:18.757284" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:18.742697" elapsed="0.014832"/>
</kw>
<msg time="2026-04-05T00:30:18.757729" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:18.728796" elapsed="0.028988"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.770304" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.782900" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.795233" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.795456" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.795630" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.796096" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:18.795888" elapsed="0.000349"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:18.795872" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.796503" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.796813" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.797157" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:18.795841" elapsed="0.001513"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:18.795706" elapsed="0.001677"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.797543" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:18.797619" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:30:18.797741" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:18.724599" elapsed="0.073167"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:18.799335" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:18.798952" elapsed="0.000612">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:18.799745" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:18.798455" elapsed="0.001315"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.800122" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:18.799877" elapsed="0.000383"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:18.800970" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:18.800479" elapsed="0.000531"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:18.800288" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:18.799858" elapsed="0.001284"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:18.807293" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:18.801289" elapsed="0.006030"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:18.807371" elapsed="0.000046"/>
</return>
<msg time="2026-04-05T00:30:18.807636" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:18.798122" elapsed="0.009539"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:18.809177" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:18.808814" elapsed="0.000544">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:18.809553" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:18.808316" elapsed="0.001262"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:18.809781" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:30:18.809648" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:18.809630" elapsed="0.000233"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.810009" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.810173" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:18.810238" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:18.812530" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:18.808001" elapsed="0.004556"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:18.814191" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:18.813736" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:18.814855" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:18.814388" elapsed="0.000512"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:18.883519" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:18.884334" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:18.884833" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:18.817234" elapsed="0.068642">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:18.814967" elapsed="0.071386">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.886903" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:18.886474" elapsed="0.000848"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:18.814949" elapsed="0.072628">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.888802" elapsed="0.000066"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:18.889214" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:18.889078" elapsed="0.000286"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:18.889005" elapsed="0.000454"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.889830" elapsed="0.000054"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:18.889995" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:18.812915" elapsed="0.077332">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:18.890417" elapsed="0.000069"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:18.699788" elapsed="0.190888">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:18.891551" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:18.890964" elapsed="0.000762"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:18.890918" elapsed="0.000861"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:18.891850" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:18.691678" elapsed="0.200393">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:21.947933" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:21.947312" elapsed="0.000674"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:21.949102" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:21.948810" elapsed="0.000366">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:21.949372" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:21.948330" elapsed="0.001086"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:21.950380" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:21.949767" elapsed="0.000673"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:21.951030" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:21.951284" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:21.950783" elapsed="0.000547"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:21.952043" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:21.951680" elapsed="0.000459"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:21.953363" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:21.953099" elapsed="0.000309"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:21.953849" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:21.953580" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:21.954555" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:21.954240" elapsed="0.000341"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:21.955297" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:21.955078" elapsed="0.000245"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:21.955376" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:30:21.955552" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:21.954764" elapsed="0.000814"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:21.955728" elapsed="0.000238"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:21.954109" elapsed="0.001898"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:21.956676" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:21.956249" elapsed="0.000454"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:21.957399" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:21.957193" elapsed="0.000246"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:21.957491" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:30:21.957643" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:21.956887" elapsed="0.000780"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:21.957812" elapsed="0.000247"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:21.956120" elapsed="0.001980"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:21.953936" elapsed="0.004198"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:21.958175" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:30:21.958328" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:21.952722" elapsed="0.005631"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:21.952299" elapsed="0.006112"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:21.958692" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:21.958489" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:21.952253" elapsed="0.006570"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:21.959910" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:21.959114" elapsed="0.000843"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:21.960087" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:21.945742" elapsed="0.014575"/>
</kw>
<msg time="2026-04-05T00:30:21.960602" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:21.931919" elapsed="0.028738"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:21.973252" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:21.985524" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:21.997884" elapsed="0.000037"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:21.998085" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:21.998254" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:21.998734" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:21.998525" elapsed="0.000351"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:21.998509" elapsed="0.000442"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:21.999123" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:21.999453" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:21.999806" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:21.998477" elapsed="0.001530"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:21.998330" elapsed="0.001707"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:22.000180" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:22.000256" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:30:22.000374" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:21.927740" elapsed="0.072660"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:22.002023" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:22.001615" elapsed="0.000598">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:22.002392" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:22.001098" elapsed="0.001318"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:22.002746" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:22.002506" elapsed="0.000378"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:22.003583" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:22.003079" elapsed="0.000543"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:22.002911" elapsed="0.000820"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:22.002488" elapsed="0.001267"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:22.010260" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:22.003901" elapsed="0.006386"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:22.010338" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:22.010506" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:22.000776" elapsed="0.009754"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:22.012096" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:22.011721" elapsed="0.000572">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:22.012489" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:22.011210" elapsed="0.001304"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:22.012733" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:30:22.012590" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:22.012572" elapsed="0.000243"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:22.012957" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:22.013120" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:22.013185" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:22.015337" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:22.010893" elapsed="0.004471"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:22.017009" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:22.016553" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:22.017847" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:22.017202" elapsed="0.000713"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:22.085252" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:22.086027" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:22.086482" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:22.020155" elapsed="0.067210">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:22.017989" elapsed="0.069832">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:22.088238" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:22.087901" elapsed="0.000752"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:22.017970" elapsed="0.070745">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:22.089756" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:22.090081" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:22.089997" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:22.089956" elapsed="0.000269"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:22.090567" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:22.090723" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:22.015731" elapsed="0.075232">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:22.091201" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:21.901846" elapsed="0.189603">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:22.092046" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:22.091658" elapsed="0.000548"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:22.091620" elapsed="0.000640"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:22.092332" elapsed="0.000031"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:21.893197" elapsed="0.199383">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:25.149520" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:25.148842" elapsed="0.000733"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:25.150678" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:25.150375" elapsed="0.000392">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:25.150965" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:25.149927" elapsed="0.001083"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:25.151970" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:25.151353" elapsed="0.000664"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:25.152628" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:25.152891" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:25.152359" elapsed="0.000577"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:25.153680" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:25.153271" elapsed="0.000509"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:25.154978" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:25.154719" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:25.155469" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:25.155180" elapsed="0.000316"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:25.156180" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:25.155879" elapsed="0.000327"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:25.156957" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:25.156730" elapsed="0.000253"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:25.157036" elapsed="0.000038"/>
</return>
<msg time="2026-04-05T00:30:25.157203" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:25.156390" elapsed="0.000895"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:25.157493" elapsed="0.000253"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:25.155744" elapsed="0.002044"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:25.158330" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:25.158034" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:25.159204" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:25.158997" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:25.159280" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:25.159449" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:25.158683" elapsed="0.000792"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:25.159622" elapsed="0.000222"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:25.157904" elapsed="0.001981"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:25.155562" elapsed="0.004357"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:25.159963" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:30:25.160117" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:25.154349" elapsed="0.005793"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:25.153939" elapsed="0.006261"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.160486" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:25.160260" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:25.153892" elapsed="0.006726"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:25.161927" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:25.160913" elapsed="0.001062"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:25.162104" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:25.147248" elapsed="0.015086"/>
</kw>
<msg time="2026-04-05T00:30:25.162602" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:25.133243" elapsed="0.029416"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.175099" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.187371" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.199635" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.199876" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.200050" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.200548" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:25.200315" elapsed="0.000377"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:25.200298" elapsed="0.000471"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.200946" elapsed="0.000033"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.201270" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.201643" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:25.200265" elapsed="0.001571"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:25.200128" elapsed="0.001737"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.202010" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:25.202087" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:30:25.202219" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:25.128731" elapsed="0.073515"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:25.203878" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:25.203480" elapsed="0.000589">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:25.204247" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:25.202957" elapsed="0.001315"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.204615" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:25.204342" elapsed="0.000409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:25.205492" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:25.204980" elapsed="0.000552"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:25.204778" elapsed="0.000862"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:25.204324" elapsed="0.001340"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:25.211874" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:25.205812" elapsed="0.006089"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:25.211952" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:25.212105" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:25.202619" elapsed="0.009510"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:25.213752" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:25.213364" elapsed="0.000572">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:25.214112" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:25.212860" elapsed="0.001277"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:25.214343" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:30:25.214208" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:25.214190" elapsed="0.000290"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.214628" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.214796" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:25.214862" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:30:25.217107" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:25.212538" elapsed="0.004595"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:25.218812" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:25.218328" elapsed="0.000531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:25.219485" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:25.219009" elapsed="0.000521"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:25.293586" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:25.294325" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:25.294801" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:25.221940" elapsed="0.073819">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:25.219599" elapsed="0.076608">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.296779" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:25.296319" elapsed="0.000849"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:25.219580" elapsed="0.077649">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.298314" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:25.298692" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:25.298606" elapsed="0.000181"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:25.298563" elapsed="0.000272"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.299144" elapsed="0.000046"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:25.299294" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:25.217518" elapsed="0.082052">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:25.299742" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:25.103180" elapsed="0.196778">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:25.300620" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:25.300158" elapsed="0.000720"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:25.300120" elapsed="0.000814"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:25.301007" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:25.093632" elapsed="0.207595">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:28.358142" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:28.357530" elapsed="0.000671"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:28.359284" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:28.359015" elapsed="0.000347">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:28.359581" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:28.358567" elapsed="0.001058"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:28.360575" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:28.359965" elapsed="0.000658"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:28.361204" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:28.361487" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:28.360956" elapsed="0.000576"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:28.362244" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:28.361884" elapsed="0.000665"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:28.363747" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:28.363486" elapsed="0.000306"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:28.364222" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:28.363954" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:28.364930" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:28.364630" elapsed="0.000325"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:28.365697" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:28.365464" elapsed="0.000259"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:28.365775" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:30:28.365934" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:28.365135" elapsed="0.000823"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:28.366105" elapsed="0.000239"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:28.364496" elapsed="0.001889"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:28.366935" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:28.366642" elapsed="0.000318"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:28.367792" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:28.367580" elapsed="0.000238"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:28.367868" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:30:28.368015" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:28.367140" elapsed="0.000899"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:28.368239" elapsed="0.000241"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:28.366514" elapsed="0.002008"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:28.364301" elapsed="0.004256"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:28.368600" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:30:28.368754" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:28.363100" elapsed="0.005679"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:28.362705" elapsed="0.006133"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.369102" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:28.368897" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:28.362659" elapsed="0.006574"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:28.370523" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:28.369543" elapsed="0.001029"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:28.370703" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:28.355980" elapsed="0.014953"/>
</kw>
<msg time="2026-04-05T00:30:28.371099" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:28.342069" elapsed="0.029084"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.383612" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.395898" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.408095" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.408283" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.408469" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.408933" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:28.408724" elapsed="0.000349"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:28.408709" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.409323" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.409836" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.410240" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:28.408678" elapsed="0.001778"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:28.408546" elapsed="0.001941"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.410633" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:28.410711" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:30:28.410850" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:28.337741" elapsed="0.073140"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:28.412480" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:28.412074" elapsed="0.000592">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:28.412844" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:28.411582" elapsed="0.001288"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.413181" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:28.412941" elapsed="0.000375"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:28.414034" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:28.413547" elapsed="0.000527"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:28.413344" elapsed="0.000838"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:28.412923" elapsed="0.001282"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:28.420382" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:28.414352" elapsed="0.006057"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:28.420547" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:30:28.420701" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:28.411235" elapsed="0.009490"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:28.422248" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:28.421885" elapsed="0.000561">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:28.422626" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:28.421361" elapsed="0.001290"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:28.422854" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:30:28.422721" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:28.422703" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.423078" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.423247" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:28.423311" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:28.425519" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:28.421044" elapsed="0.004502"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:28.427175" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:28.426722" elapsed="0.000500"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:28.427865" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:28.427370" elapsed="0.000541"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:28.499005" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:28.499505" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:28.499783" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:28.430334" elapsed="0.070060">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:28.427979" elapsed="0.072717">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.501030" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:28.500753" elapsed="0.000522"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:28.427960" elapsed="0.073353">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.502003" elapsed="0.000038"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:28.502199" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:28.502144" elapsed="0.000115"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:28.502118" elapsed="0.000171"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.502509" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:28.502608" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:28.425900" elapsed="0.076862">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:28.502869" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:28.313877" elapsed="0.189130">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:28.503381" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:28.503135" elapsed="0.000374"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:28.503112" elapsed="0.000429"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:28.503586" elapsed="0.000020"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:28.302724" elapsed="0.200999">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.557775" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:31.557139" elapsed="0.000764"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:31.558980" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:31.558724" elapsed="0.000329">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:31.559254" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:31.558260" elapsed="0.001039"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.560259" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:31.559659" elapsed="0.000664"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:31.560955" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:31.561213" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:31.560693" elapsed="0.000566"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.561985" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:31.561626" elapsed="0.000459"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.563241" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:31.562978" elapsed="0.000309"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.563726" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:31.563458" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.564461" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:31.564107" elapsed="0.000381"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:31.565209" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:31.564986" elapsed="0.000250"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:31.565289" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:30:31.565566" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:31.564672" elapsed="0.000920"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:31.565743" elapsed="0.000242"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:31.563975" elapsed="0.002051"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.566584" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:31.566267" elapsed="0.000344"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:31.567308" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:31.567101" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:31.567384" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:30:31.567549" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:31.566793" elapsed="0.000785"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:31.567725" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:31.566138" elapsed="0.001849"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:31.563804" elapsed="0.004217"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:31.568063" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:30:31.568215" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:31.562654" elapsed="0.005586"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:31.562241" elapsed="0.006084"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.568619" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:31.568384" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:31.562195" elapsed="0.006556"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.570142" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:31.569047" elapsed="0.001143"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:31.570321" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:31.555525" elapsed="0.015042"/>
</kw>
<msg time="2026-04-05T00:30:31.570738" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:31.541468" elapsed="0.029323"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.583329" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.595685" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.607880" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.608076" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.608260" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.608735" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:31.608527" elapsed="0.000350"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:31.608512" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.609123" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.609450" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.609795" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:31.608480" elapsed="0.001512"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:31.608334" elapsed="0.001686"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.610163" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:31.610238" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:31.610365" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:31.537270" elapsed="0.073122"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:31.612006" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:31.611631" elapsed="0.000571">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:31.612382" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:31.611123" elapsed="0.001284"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.612735" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:31.612495" elapsed="0.000377"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.613583" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:31.613068" elapsed="0.000555"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:31.612900" elapsed="0.000831"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:31.612477" elapsed="0.001278"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.619943" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:31.613901" elapsed="0.006068"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:31.620020" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:31.620186" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:31.610804" elapsed="0.009407"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:31.621823" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:31.621360" elapsed="0.000644">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:31.622180" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:31.620874" elapsed="0.001331"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:31.622410" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-05T00:30:31.622277" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:31.622258" elapsed="0.000252"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.622649" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.622811" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:31.622875" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:31.624916" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:31.620558" elapsed="0.004384"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.626778" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:31.626287" elapsed="0.000537"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.627418" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:31.626972" elapsed="0.000511"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:31.702224" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:31.702611" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:31.702802" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:31.629973" elapsed="0.073276">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:31.627550" elapsed="0.075954">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.703705" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:31.703542" elapsed="0.000349"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:31.627532" elapsed="0.076386">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.704375" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:31.704531" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:31.704493" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:31.704474" elapsed="0.000122"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.704734" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:31.704804" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:31.625293" elapsed="0.079619">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:31.704992" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:31.512769" elapsed="0.192321">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.705356" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:31.705181" elapsed="0.000262"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:31.705164" elapsed="0.000304"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:31.705501" elapsed="0.000014"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:31.505071" elapsed="0.200528">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<msg time="2026-04-05T00:30:31.705698" level="FAIL">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${timeout}</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-05T00:29:59.523974" elapsed="32.181818">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${mapping}</arg>
<doc>Checks weather the device was mounted.</doc>
<status status="FAIL" start="2026-04-05T00:29:59.502904" elapsed="32.203001">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.714309" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${mod_session}</var>
<arg>member_index=${idx}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.714661" elapsed="0.000024"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}netconf-state</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${mod_session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.714841" elapsed="0.000022"/>
</kw>
<var name="${idx}"/>
<status status="NOT RUN" start="2026-04-05T00:30:31.714472" elapsed="0.000471"/>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:31.714394" elapsed="0.000579"/>
</for>
<kw name="Remove_Netconf_Device" type="TEARDOWN">
<kw name="Remove_Device_From_Netconf" owner="NetconfKeywords">
<kw name="Pop From Dictionary" owner="Collections">
<msg time="2026-04-05T00:30:31.716363" level="INFO">${device_type} = full-uri-device</msg>
<var>${device_type}</var>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<doc>Pops the given ``key`` from the ``dictionary`` and returns its value.</doc>
<status status="PASS" start="2026-04-05T00:30:31.716106" elapsed="0.000284"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.716993" level="INFO">${mapping} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:31.716565" elapsed="0.000455"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:31.736208" elapsed="0.000861"/>
</kw>
<msg time="2026-04-05T00:30:31.737294" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:31.735846" elapsed="0.001516"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:31.735398" elapsed="0.002056"/>
</kw>
<msg time="2026-04-05T00:30:31.737499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:31.726845" elapsed="0.010711"/>
</kw>
<msg time="2026-04-05T00:30:31.737658" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:31.726495" elapsed="0.011188"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.780474" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:31.779814" elapsed="0.000768"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:31.782113" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:31.781626" elapsed="0.000590">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:31.782337" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:31.780880" elapsed="0.001576"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.783852" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:31.782793" elapsed="0.001171"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:31.784567" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:31.784790" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:31.784335" elapsed="0.000561"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.785692" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:31.785188" elapsed="0.000566"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.787747" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:31.787472" elapsed="0.000321"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.788257" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:31.787992" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.789038" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:31.788735" elapsed="0.000329"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:31.789989" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:31.789765" elapsed="0.000250"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:31.790252" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:30:31.790408" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:31.789401" elapsed="0.001191"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:31.790743" elapsed="0.000227"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:31.788604" elapsed="0.002407"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.791577" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:31.791251" elapsed="0.000352"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:31.792330" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:31.792121" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:31.792404" elapsed="0.000044"/>
</return>
<msg time="2026-04-05T00:30:31.792571" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:31.791784" elapsed="0.000812"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:31.792740" elapsed="0.000221"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:31.791122" elapsed="0.001879"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:31.788378" elapsed="0.004677"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:31.793119" elapsed="0.000070"/>
</return>
<msg time="2026-04-05T00:30:31.793499" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:31.786685" elapsed="0.006902"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:31.785930" elapsed="0.007732"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.793951" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:31.793739" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:31.785906" elapsed="0.008278"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.795284" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:31.794327" elapsed="0.001064"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:31.795680" elapsed="0.000033"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:31.778836" elapsed="0.016992"/>
</kw>
<msg time="2026-04-05T00:30:31.795882" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:31.766243" elapsed="0.029705"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.808338" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.820571" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.832777" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.832996" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.833164" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.833587" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:31.833443" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:31.833408" elapsed="0.000259"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.833803" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.833965" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.834124" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:31.833377" elapsed="0.000800"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:31.833238" elapsed="0.000964"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.834339" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:31.834413" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:30:31.834547" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:31.761994" elapsed="0.072578"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.835698" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:31.835444" elapsed="0.000299"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:31.849774" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:31.849819" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:31.849907" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:30:31.837978" elapsed="0.011954"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:31.835810" elapsed="0.014162"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.850144" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:31.849997" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:31.835791" elapsed="0.014434"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.853942" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:31.851395" elapsed="0.002590"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:31.851167" elapsed="0.002853"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:31.851148" elapsed="0.002896"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.856810" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:31.854315" elapsed="0.002541"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:31.854099" elapsed="0.002791"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:31.854083" elapsed="0.002831"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.857473" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:31.857079" elapsed="0.000421"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.857798" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:31.857569" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.858564" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:31.858030" elapsed="0.000561"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:31.857877" elapsed="0.000790"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:31.857552" elapsed="0.001137"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.859396" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:31.858968" elapsed="0.000489"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:31.859763" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:31.859531" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:31.860396" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:31.859997" elapsed="0.000440"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:31.859845" elapsed="0.000630"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:31.859512" elapsed="0.000984"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:31.860641" elapsed="0.000460"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:30:31.861639" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:31.861262" elapsed="0.000404"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:30:31.861817" elapsed="0.005556"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:30:31.850731" elapsed="0.016742"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:30:31.867521" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:30:31.869765" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:30:31.834831" elapsed="0.034961"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:30:31.869845" elapsed="0.000027"/>
</return>
<arg>${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>${mapping}</arg>
<arg>session=${session}</arg>
<arg>location=${location}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:30:31.737900" elapsed="0.132067"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf to deconfigure the specified device</doc>
<status status="PASS" start="2026-04-05T00:30:31.715642" elapsed="0.154385"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<doc>Removes configured device</doc>
<status status="PASS" start="2026-04-05T00:30:31.715169" elapsed="0.154909"/>
</kw>
<arg>${idx}</arg>
<doc>Netconf readines for a node is done by creating a netconf device connected to that node
and performing GET operation got from the device's mount point.</doc>
<status status="FAIL" start="2026-04-05T00:29:59.172033" elapsed="32.698122">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<var name="${idx}">1</var>
<status status="FAIL" start="2026-04-05T00:29:59.171647" elapsed="32.698568">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="FAIL" start="2026-04-05T00:29:59.171265" elapsed="32.699007">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</for>
<doc>Verifies the netconf readiness for every odl node.</doc>
<status status="FAIL" start="2026-04-05T00:29:59.170717" elapsed="32.699646">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Check_Netconf_Topology_Ready">
<for flavor="IN">
<iter>
<kw name="Verify_Netconf_Topology_Ready_For_Node">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.874908" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:32.874139" elapsed="0.000836"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:30:32.875088" elapsed="0.000075"/>
</return>
<msg time="2026-04-05T00:30:32.875458" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${node_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:30:32.873274" elapsed="0.002242"/>
</kw>
<kw name="Configure_Netconf_Device">
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:32.900566" elapsed="0.000912"/>
</kw>
<msg time="2026-04-05T00:30:32.901625" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:32.900059" elapsed="0.001714"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:32.899647" elapsed="0.002210"/>
</kw>
<msg time="2026-04-05T00:30:32.901902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:32.891109" elapsed="0.010839"/>
</kw>
<msg time="2026-04-05T00:30:32.902054" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:32.890751" elapsed="0.011329"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.902994" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.902243" elapsed="0.000780"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:32.903467" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:32.903121" elapsed="0.000415"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.936652" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:32.936201" elapsed="0.000485"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:32.937521" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:32.937238" elapsed="0.000357">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:32.937690" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:32.936902" elapsed="0.000814"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.938325" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:32.937927" elapsed="0.000426"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:32.938725" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:32.938880" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:32.938581" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.939363" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:32.939113" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.940516" level="INFO">mapping: {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:32.940226" elapsed="0.000339"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.940992" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.940721" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.941701" level="INFO">${value} = 10.30.170.184</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:32.941380" elapsed="0.000347"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:32.942464" level="INFO">${encoded} = 10.30.170.184</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.942226" elapsed="0.000266"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:32.942543" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:30:32.942737" level="INFO">${encoded_value} = 10.30.170.184</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:32.941913" elapsed="0.000850"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.942913" elapsed="0.000240"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.184</var>
<status status="PASS" start="2026-04-05T00:30:32.941249" elapsed="0.001945"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.943770" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:32.943461" elapsed="0.000336"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:32.944583" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.944320" elapsed="0.000290"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:32.944662" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:30:32.944815" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:32.944004" elapsed="0.000837"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.944988" elapsed="0.000224"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:32.943309" elapsed="0.001945"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.945813" level="INFO">${value} = 2830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:32.945512" elapsed="0.000327"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:32.946559" level="INFO">${encoded} = 2830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.946332" elapsed="0.000255"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:32.946637" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:32.946788" level="INFO">${encoded_value} = 2830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:32.946023" elapsed="0.000790"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.946957" elapsed="0.000401"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">2830</var>
<status status="PASS" start="2026-04-05T00:30:32.945368" elapsed="0.002032"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.947989" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:32.947674" elapsed="0.000340"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:32.948741" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.948531" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:32.948815" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:30:32.948961" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:32.948194" elapsed="0.000791"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.949128" elapsed="0.000222"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:30:32.947543" elapsed="0.001847"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.949939" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:32.949642" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:32.950665" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.950457" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:32.950738" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:30:32.950884" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:32.950141" elapsed="0.000766"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.951049" elapsed="0.000218"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:30:32.949515" elapsed="0.001792"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.951878" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:32.951555" elapsed="0.000350"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:32.952624" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.952393" elapsed="0.000256"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:32.952698" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:30:32.952845" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:32.952083" elapsed="0.000822"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.953055" elapsed="0.000224"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:30:32.951414" elapsed="0.001907"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.953870" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:32.953575" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:32.954601" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.954378" elapsed="0.000249"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:32.954676" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:30:32.954822" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:32.954076" elapsed="0.000770"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.954989" elapsed="0.000231"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:30:32.953447" elapsed="0.001814"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.955806" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:32.955512" elapsed="0.000332"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:32.956565" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.956342" elapsed="0.000248"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:32.956639" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:30:32.956786" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:32.956028" elapsed="0.000782"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:32.956954" elapsed="0.000225"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:32.955371" elapsed="0.001849"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:32.941068" elapsed="0.016185"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:32.957295" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:30:32.957474" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:32.939897" elapsed="0.017608"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:32.939563" elapsed="0.017974"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:32.957703" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:32.957561" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:32.939541" elapsed="0.018238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:32.958707" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:32.957969" elapsed="0.000766"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:32.958835" elapsed="0.000054"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:32.935156" elapsed="0.023958"/>
</kw>
<msg time="2026-04-05T00:30:32.959205" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:32.921670" elapsed="0.037630"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:32.982942" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.004537" elapsed="0.000060"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.026526" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.026766" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.026964" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.027536" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:33.027263" elapsed="0.000381"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:33.027248" elapsed="0.000484"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.027930" elapsed="0.000045"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.028252" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.028590" elapsed="0.000044"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:33.027217" elapsed="0.001541"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:33.027088" elapsed="0.001729"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.028964" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:33.029117" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:30:33.029238" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:32.917217" elapsed="0.112046"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.056672" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:33.056280" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:33.057466" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:33.057232" elapsed="0.000299">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:33.057623" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:33.056905" elapsed="0.000742"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.058239" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:33.057854" elapsed="0.000411"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:33.058619" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:33.058749" level="INFO">${template} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVI...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:33.058482" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.059259" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;$DEVICE_USER&lt;/username&gt;
      &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:33.059013" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:30:33.059747" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:33.059441" elapsed="0.000367"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.060276" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:33.059980" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:33.059839" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:33.059406" elapsed="0.000953"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.061264" level="INFO">${final_text} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:33.060573" elapsed="0.000722"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:33.061391" elapsed="0.000069"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:33.055277" elapsed="0.006403"/>
</kw>
<msg time="2026-04-05T00:30:33.061768" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:33.042151" elapsed="0.019711"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.083806" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.105505" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.127086" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.127322" elapsed="0.000041"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.127648" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.128205" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:33.127949" elapsed="0.000340"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:33.127934" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.128587" elapsed="0.000044"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.128947" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.129271" elapsed="0.000044"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:33.127903" elapsed="0.001549"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:33.127773" elapsed="0.001740"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.129660" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:33.129812" elapsed="0.000019"/>
</return>
<msg time="2026-04-05T00:30:33.129945" level="INFO">${data} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:33.039348" elapsed="0.090625"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:33.132709" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:33.132175" elapsed="0.000652">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:33.132956" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:33.130708" elapsed="0.002272"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.133439" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:33.133089" elapsed="0.000504"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.134715" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:33.134073" elapsed="0.000682"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:33.133619" elapsed="0.001214"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:33.133070" elapsed="0.001787"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.137650" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:33.135008" elapsed="0.002668"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:33.137773" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:30:33.137927" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:33.130353" elapsed="0.007599"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.139874" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:33.139374" elapsed="0.000561"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.140576" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:33.140097" elapsed="0.000548"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.141274" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:33.140805" elapsed="0.000528"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.141985" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:33.141506" elapsed="0.000538"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:30:33.143699" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:30:33.143084" elapsed="0.000713"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:30:33.144594" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:30:33.144056" elapsed="0.000636"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:33.144984" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.146465" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:33.145757" elapsed="0.000903"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:30:33.146746" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:30:33.147016" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:30:33.142254" elapsed="0.004788"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:33.171564" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '439', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt; 
 </msg>
<msg time="2026-04-05T00:30:33.171782" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:33.172166" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:30:33.155233" elapsed="0.017028"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:33.147152" elapsed="0.025446"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.173155" elapsed="0.000182"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:33.172676" elapsed="0.001007"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:33.147132" elapsed="0.026610"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.182266" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:33.178561" elapsed="0.003805"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:33.177850" elapsed="0.004665"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:33.177799" elapsed="0.004833"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.187239" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:33.183589" elapsed="0.003753"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:33.182760" elapsed="0.004651"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:33.182715" elapsed="0.004883"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.189244" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:33.188202" elapsed="0.001143"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.189977" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:33.189493" elapsed="0.000580"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.190997" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:33.190512" elapsed="0.000521"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:33.190143" elapsed="0.000939"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:33.189459" elapsed="0.001703"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.192747" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:33.191737" elapsed="0.001115"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.193477" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:33.192984" elapsed="0.000590"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.194460" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:33.193980" elapsed="0.000518"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:33.193643" elapsed="0.000904"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:33.192951" elapsed="0.001663"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:33.194872" elapsed="0.000967"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:30:33.196793" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:33.196114" elapsed="0.000847"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:30:33.197230" elapsed="0.002847"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:30:33.174898" elapsed="0.025296"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:30:33.200446" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-05T00:30:33.200281" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:33.200262" elapsed="0.000335"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.200744" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:33.200851" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:30:33.203089" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:30:33.138352" elapsed="0.064775"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:30:33.203195" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:30:33.203348" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:30:32.906408" elapsed="0.296965"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.203854" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:33.203594" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:33.203576" elapsed="0.000371"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:30:33.203979" elapsed="0.000025"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:30:32.903797" elapsed="0.300305"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:32.903563" elapsed="0.300587"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:32.903099" elapsed="0.301074"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:33.204316" elapsed="0.000257"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=full-uri-device</arg>
<arg>device_port=${DEVICE_PORT}</arg>
<arg>device_address=${device_ip}</arg>
<arg>device_user=admin</arg>
<arg>device_password=admin</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:30:32.877036" elapsed="0.327601"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${ODL_SYSTEM_${node_index}_IP}</arg>
<doc>Configures the device via REST api.</doc>
<status status="PASS" start="2026-04-05T00:30:32.875789" elapsed="0.328918"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.205338" level="INFO">&amp;{mapping} = { DEVICE_NAME=test-device | RESTCONF_ROOT=/rests }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:33.204871" elapsed="0.000494"/>
</kw>
<kw name="Wait_Netconf_Device_Mounted">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:33.223975" elapsed="0.000859"/>
</kw>
<msg time="2026-04-05T00:30:33.224906" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:33.223596" elapsed="0.001376"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:33.223163" elapsed="0.001886"/>
</kw>
<msg time="2026-04-05T00:30:33.225092" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:33.214651" elapsed="0.010486"/>
</kw>
<msg time="2026-04-05T00:30:33.225242" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:33.214286" elapsed="0.010980"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.273200" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:33.272576" elapsed="0.000675"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:33.274330" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:33.274069" elapsed="0.000337">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:33.274627" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:33.273622" elapsed="0.001048"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.275643" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:33.275027" elapsed="0.000663"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:33.276273" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:33.276580" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:33.276022" elapsed="0.000603"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.277498" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:33.277111" elapsed="0.000484"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.279109" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:33.278817" elapsed="0.000338"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.279597" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:33.279311" elapsed="0.000313"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.280439" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:33.280127" elapsed="0.000340"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:33.281187" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:33.280964" elapsed="0.000248"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:33.281264" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:30:33.281436" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:33.280651" elapsed="0.000811"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:33.281609" elapsed="0.000238"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:33.279848" elapsed="0.002039"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.282416" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:33.282123" elapsed="0.000683"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:33.284531" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:33.284029" elapsed="0.000560"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:33.284699" elapsed="0.000064"/>
</return>
<msg time="2026-04-05T00:30:33.285026" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:33.283275" elapsed="0.001805"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:33.285399" elapsed="0.000523"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:33.281997" elapsed="0.004012"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:33.279676" elapsed="0.006407"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:33.286174" elapsed="0.000059"/>
</return>
<msg time="2026-04-05T00:30:33.286727" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:33.278208" elapsed="0.008575"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:33.277757" elapsed="0.009182"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.287687" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:33.287182" elapsed="0.000677"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:33.277709" elapsed="0.010268"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.290474" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:33.288666" elapsed="0.001913"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:33.290933" elapsed="0.000164"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:33.270821" elapsed="0.020655"/>
</kw>
<msg time="2026-04-05T00:30:33.291832" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:33.256873" elapsed="0.035019"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.304276" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.316552" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.328943" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.329147" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.329321" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.329820" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:33.329607" elapsed="0.000355"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:33.329591" elapsed="0.000451"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.330215" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.330588" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.331006" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:33.329554" elapsed="0.001653"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:33.329401" elapsed="0.001836"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.331400" elapsed="0.000042"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:33.331509" elapsed="0.000020"/>
</return>
<msg time="2026-04-05T00:30:33.331674" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:33.252512" elapsed="0.079244"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:33.333593" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:33.333129" elapsed="0.000666">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:33.333982" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:33.332508" elapsed="0.001499"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.334337" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:33.334079" elapsed="0.000416"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.335275" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:33.334696" elapsed="0.000621"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:33.334523" elapsed="0.000933"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:33.334061" elapsed="0.001424"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.341965" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:33.335647" elapsed="0.006344"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:33.342042" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:30:33.342199" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:33.332140" elapsed="0.010083"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:33.343869" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:33.343493" elapsed="0.000561">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:33.344235" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:33.342986" elapsed="0.001274"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:33.344483" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:30:33.344332" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:33.344313" elapsed="0.000253"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.344706" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.344871" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:33.344935" elapsed="0.000014"/>
</return>
<msg time="2026-04-05T00:30:33.347004" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:33.342629" elapsed="0.004401"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.348699" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:33.348211" elapsed="0.000535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:33.349349" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:33.348895" elapsed="0.000498"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:33.366413" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:33.367042" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=503, reason=Service Unavailable 
 headers={'Content-Type': 'application/xml', 'Content-Length': '433'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;protocol&lt;/error-type&gt;&lt;error-path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology/a:topology[a:topology-id='topology-netconf']/a:node[a:node-id='test-device']&lt;/error-path&gt;&lt;error-message&gt;Mount point does not exist&lt;/error-message&gt;&lt;error-tag&gt;resource-denied-transport&lt;/error-tag&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:33.367274" level="FAIL">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:33.353043" elapsed="0.014669">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:33.349476" elapsed="0.018434">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.368098" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:33.367946" elapsed="0.000325"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:33.349457" elapsed="0.018840">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.368765" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:33.368902" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:33.368864" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:33.368846" elapsed="0.000120"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.369102" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:33.369171" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:33.347389" elapsed="0.021888">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:33.369352" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:33.230471" elapsed="0.139001">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:33.369737" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:33.369564" elapsed="0.000247"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:33.369547" elapsed="0.000291"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:33.369870" elapsed="0.000014"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:33.226063" elapsed="0.143903">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:36.424399" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:36.423789" elapsed="0.000679"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:36.425550" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:36.425269" elapsed="0.000359">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:36.425829" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:36.424821" elapsed="0.001053"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:36.426837" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:36.426215" elapsed="0.000670"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:36.427571" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:36.427824" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:36.427301" elapsed="0.000569"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:36.428575" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:36.428199" elapsed="0.000478"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:36.430028" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:36.429563" elapsed="0.000512"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:36.430550" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:36.430234" elapsed="0.000343"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:36.431249" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:36.430934" elapsed="0.000342"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:36.432073" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:36.431848" elapsed="0.000251"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:36.432152" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:30:36.432309" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:36.431524" elapsed="0.000810"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:36.432500" elapsed="0.000238"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:36.430803" elapsed="0.001976"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:36.433314" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:36.433015" elapsed="0.000325"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:36.434053" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:36.433844" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:36.434129" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:36.434277" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:36.433536" elapsed="0.000766"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:36.434564" elapsed="0.000225"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:36.432888" elapsed="0.001942"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:36.430631" elapsed="0.004233"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:36.434907" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:30:36.435060" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:36.429224" elapsed="0.005861"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:36.428829" elapsed="0.006313"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.435446" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:36.435225" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:36.428785" elapsed="0.006797"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:36.436676" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:36.435877" elapsed="0.000845"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:36.436852" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:36.422147" elapsed="0.014937"/>
</kw>
<msg time="2026-04-05T00:30:36.437253" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:36.408174" elapsed="0.029133"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.449832" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.462137" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.474416" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.474624" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.474794" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.475266" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:36.475047" elapsed="0.000362"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:36.475032" elapsed="0.000470"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.475676" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.475983" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.476329" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:36.475001" elapsed="0.001537"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:36.474870" elapsed="0.001697"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.476711" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:36.476792" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:36.476909" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:36.403996" elapsed="0.072938"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:36.478502" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:36.478110" elapsed="0.000579">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:36.478866" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:36.477619" elapsed="0.001273"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.479219" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:36.478965" elapsed="0.000423"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:36.480101" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:36.479607" elapsed="0.000535"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:36.479416" elapsed="0.000836"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:36.478946" elapsed="0.001331"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:36.486725" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:36.480439" elapsed="0.006314"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:36.486807" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:36.486960" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:36.477284" elapsed="0.009701"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:36.488531" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:36.488151" elapsed="0.000561">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:36.488892" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:36.487667" elapsed="0.001250"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:36.489123" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:30:36.488990" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:36.488972" elapsed="0.000233"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.489344" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.489525" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:36.489591" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:36.491711" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:36.487330" elapsed="0.004407"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:36.493391" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:36.492939" elapsed="0.000514"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:36.494077" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:36.493603" elapsed="0.000519"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:36.564112" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:36.564868" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:36.565272" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:36.496496" elapsed="0.069690">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:36.494189" elapsed="0.072456">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.567093" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:36.566725" elapsed="0.000789"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:36.494171" elapsed="0.073406">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.568695" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:36.568996" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:36.568916" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:36.568878" elapsed="0.000259"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.569474" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:36.569635" elapsed="0.000039"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:36.492084" elapsed="0.077820">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:36.570070" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:36.379089" elapsed="0.191195">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:36.570980" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:36.570515" elapsed="0.000627"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:36.570476" elapsed="0.000719"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:36.571266" elapsed="0.000031"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:36.371002" elapsed="0.200510">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:39.626876" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:39.626237" elapsed="0.000694"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:39.628031" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:39.627753" elapsed="0.000358">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:39.628310" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:39.627286" elapsed="0.001068"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:39.629308" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:39.628710" elapsed="0.000645"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:39.629977" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:39.630240" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:39.629722" elapsed="0.000563"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:39.631007" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:39.630648" elapsed="0.000457"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:39.632263" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:39.632003" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:39.632821" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:39.632545" elapsed="0.000302"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:39.633535" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:39.633211" elapsed="0.000350"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:39.634278" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:39.634056" elapsed="0.000247"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:39.634356" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:30:39.634638" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:39.633744" elapsed="0.000919"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:39.634810" elapsed="0.000251"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:39.633081" elapsed="0.002021"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:39.635665" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:39.635341" elapsed="0.000349"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:39.636547" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:39.636320" elapsed="0.000253"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:39.636623" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:39.636772" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:39.635870" elapsed="0.000926"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:39.636941" elapsed="0.000221"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:39.635214" elapsed="0.001988"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:39.632902" elapsed="0.004334"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:39.637281" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:30:39.637473" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:39.631682" elapsed="0.005817"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:39.631263" elapsed="0.006299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.637825" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:39.637622" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:39.631217" elapsed="0.006736"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:39.639152" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:39.638247" elapsed="0.000951"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:39.639327" elapsed="0.000071"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:39.624622" elapsed="0.014952"/>
</kw>
<msg time="2026-04-05T00:30:39.639738" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:39.610497" elapsed="0.029296"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.652903" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.665171" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.677505" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.677696" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.677863" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.678333" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:39.678122" elapsed="0.000375"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:39.678106" elapsed="0.000467"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.678745" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.679056" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.679398" elapsed="0.000036"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:39.678072" elapsed="0.001540"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:39.677939" elapsed="0.001701"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.679787" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:39.679863" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:39.679984" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:39.606211" elapsed="0.073799"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:39.681614" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:39.681200" elapsed="0.000605">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:39.681982" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:39.680705" elapsed="0.001302"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.682322" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:39.682079" elapsed="0.000400"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:39.683175" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:39.682681" elapsed="0.000534"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:39.682508" elapsed="0.000813"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:39.682061" elapsed="0.001284"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:39.689834" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:39.683507" elapsed="0.006355"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:39.689914" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:39.690067" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:39.680368" elapsed="0.009723"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:39.691711" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:39.691332" elapsed="0.000560">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:39.692104" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:39.690845" elapsed="0.001284"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:39.692333" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:30:39.692201" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:39.692182" elapsed="0.000232"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.692572" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.692736" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:39.692800" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:39.694844" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:39.690410" elapsed="0.004460"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:39.696509" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:39.696037" elapsed="0.000519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:39.697151" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:39.696703" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:39.764966" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:39.765741" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:39.766147" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:39.699568" elapsed="0.067514">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:39.697263" elapsed="0.070277">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.767979" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:39.767624" elapsed="0.000735"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:39.697245" elapsed="0.071207">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.769558" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:39.769861" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:39.769778" elapsed="0.000177"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:39.769738" elapsed="0.000264"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.770309" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:39.770495" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:39.695220" elapsed="0.075519">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:39.770903" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:39.581457" elapsed="0.189747">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:39.771851" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:39.771415" elapsed="0.000598"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:39.771377" elapsed="0.000689"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:39.772139" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:39.572614" elapsed="0.199744">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:42.828558" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:42.827908" elapsed="0.000706"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:42.829773" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:42.829502" elapsed="0.000352">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:42.830053" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:42.828962" elapsed="0.001136"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:42.831086" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:42.830486" elapsed="0.000647"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:42.831740" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:42.832006" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:42.831489" elapsed="0.000561"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:42.832789" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:42.832394" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:42.834102" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:42.833844" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:42.834584" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:42.834301" elapsed="0.000308"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:42.835266" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:42.834970" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:42.836017" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:42.835798" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:42.836094" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:30:42.836255" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:42.835486" elapsed="0.000799"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:42.836555" elapsed="0.000243"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:42.834840" elapsed="0.001998"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:42.837392" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:42.837092" elapsed="0.000340"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:42.838380" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:42.838169" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:42.838473" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:30:42.838624" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:42.837714" elapsed="0.000934"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:42.838793" elapsed="0.000219"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:42.836951" elapsed="0.002102"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:42.834664" elapsed="0.004423"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:42.839130" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:30:42.839283" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:42.833511" elapsed="0.005796"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:42.833042" elapsed="0.006323"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.839777" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:42.839560" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:42.832994" elapsed="0.006916"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:42.841028" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:42.840208" elapsed="0.000899"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:42.841239" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:42.826314" elapsed="0.015189"/>
</kw>
<msg time="2026-04-05T00:30:42.841680" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:42.810903" elapsed="0.030831"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.854165" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.866401" elapsed="0.000045"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.878612" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.878805" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.878979" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.879466" elapsed="0.000106"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:42.879238" elapsed="0.000416"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:42.879222" elapsed="0.000508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.879905" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.880225" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.880590" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:42.879190" elapsed="0.001597"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:42.879057" elapsed="0.001760"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.880960" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:42.881047" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:30:42.881168" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:42.806720" elapsed="0.074474"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:42.882789" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:42.882387" elapsed="0.000590">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:42.883160" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:42.881895" elapsed="0.001290"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.883530" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:42.883256" elapsed="0.000412"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:42.884355" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:42.883867" elapsed="0.000529"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:42.883696" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:42.883238" elapsed="0.001310"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:42.890955" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:42.884695" elapsed="0.006286"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:42.891033" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:42.891185" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:42.881573" elapsed="0.009636"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:42.892731" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:42.892348" elapsed="0.000565">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:42.893132" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:42.891866" elapsed="0.001291"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:42.893363" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:30:42.893230" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:42.893211" elapsed="0.000251"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.893603" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.893768" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:42.893832" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:42.895845" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:42.891548" elapsed="0.004323"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:42.897526" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:42.897051" elapsed="0.000521"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:42.898164" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:42.897720" elapsed="0.000488"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:42.972035" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:42.972985" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:42.973540" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:42.900612" elapsed="0.073997">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:42.898275" elapsed="0.076776">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.975538" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:42.975132" elapsed="0.000795"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:42.898256" elapsed="0.077731">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.977091" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:42.977384" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:42.977325" elapsed="0.000139"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:42.977287" elapsed="0.000209"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.977691" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:42.977789" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:42.896225" elapsed="0.081712">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:42.978043" elapsed="0.000023"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:42.782001" elapsed="0.196178">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:42.978569" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:42.978306" elapsed="0.000365"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:42.978283" elapsed="0.000421"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:42.978748" elapsed="0.000021"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:42.773520" elapsed="0.205364">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:46.032136" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:46.031529" elapsed="0.000661"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:46.033279" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:46.032997" elapsed="0.000356">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:46.033601" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:46.032553" elapsed="0.001095"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:46.034603" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:46.033986" elapsed="0.000665"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:46.035236" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:46.035549" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:46.034986" elapsed="0.000609"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:46.036281" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:46.035925" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:46.037602" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:46.037267" elapsed="0.000381"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:46.038070" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:46.037803" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:46.038766" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:46.038470" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:46.039529" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:46.039292" elapsed="0.000262"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:46.039607" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:30:46.039766" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:46.038972" elapsed="0.000818"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:46.039937" elapsed="0.000236"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:46.038324" elapsed="0.001890"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:46.040898" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:46.040476" elapsed="0.000447"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:46.041908" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:46.041698" elapsed="0.000236"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:46.041983" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:30:46.042128" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:46.041104" elapsed="0.001048"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:46.042309" elapsed="0.000238"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:46.040327" elapsed="0.002261"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:46.038150" elapsed="0.004471"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:46.042664" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:30:46.042883" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:46.036945" elapsed="0.005964"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:46.036546" elapsed="0.006421"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.043230" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:46.043026" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:46.036499" elapsed="0.006862"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:46.044472" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:46.043676" elapsed="0.000844"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:46.044651" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:46.029951" elapsed="0.014929"/>
</kw>
<msg time="2026-04-05T00:30:46.045051" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:46.016112" elapsed="0.028993"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.057623" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.069807" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.082034" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.082227" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.082393" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.082879" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:46.082670" elapsed="0.000350"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:46.082655" elapsed="0.000441"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.083269" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.083595" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.083937" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:46.082623" elapsed="0.001507"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:46.082490" elapsed="0.001669"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.084300" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:46.084411" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:30:46.084555" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:46.011945" elapsed="0.072635"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:46.086188" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:46.085792" elapsed="0.000584">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:46.086573" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:46.085252" elapsed="0.001346"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.086920" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:46.086669" elapsed="0.000392"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:46.087762" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:46.087258" elapsed="0.000545"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:46.087088" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:46.086651" elapsed="0.001286"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:46.094314" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:46.088081" elapsed="0.006260"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:46.094393" elapsed="0.000043"/>
</return>
<msg time="2026-04-05T00:30:46.094561" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:46.084932" elapsed="0.009654"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:46.096081" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:46.095717" elapsed="0.000547">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:46.096548" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:46.095219" elapsed="0.001356"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:46.096780" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:30:46.096646" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:46.096628" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.097001" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.097165" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:46.097230" elapsed="0.000014"/>
</return>
<msg time="2026-04-05T00:30:46.099116" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:46.094905" elapsed="0.004240"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:46.100940" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:46.100307" elapsed="0.000679"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:46.101629" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:46.101134" elapsed="0.000541"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:46.165074" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:46.165664" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:46.165934" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:46.103903" elapsed="0.062699">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:46.101743" elapsed="0.065132">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.167180" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:46.166929" elapsed="0.000491"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:46.101725" elapsed="0.065756">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.168132" elapsed="0.000038"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:46.168324" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:46.168271" elapsed="0.000112"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:46.168246" elapsed="0.000167"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.168626" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:46.168723" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:46.099506" elapsed="0.069369">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:46.168980" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:45.986544" elapsed="0.182586">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:46.169558" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:46.169258" elapsed="0.000403"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:46.169234" elapsed="0.000460"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:46.169739" elapsed="0.000020"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:45.979909" elapsed="0.189965">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:49.231420" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:49.230449" elapsed="0.001071"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:49.233184" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:49.232763" elapsed="0.000538">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:49.233625" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:49.232045" elapsed="0.001765"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:49.235247" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:49.234299" elapsed="0.001013"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:49.236126" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:49.236443" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:49.235824" elapsed="0.000676"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:49.237227" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:49.236856" elapsed="0.000468"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:49.238849" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:49.238386" elapsed="0.000520"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:49.239451" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:49.239108" elapsed="0.000376"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:49.240303" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:49.239941" elapsed="0.000394"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:49.241238" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:49.240972" elapsed="0.000297"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:49.241331" elapsed="0.000042"/>
</return>
<msg time="2026-04-05T00:30:49.241538" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:49.240581" elapsed="0.000990"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:49.241754" elapsed="0.000293"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:49.239768" elapsed="0.002328"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:49.242920" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:49.242391" elapsed="0.000561"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:49.244058" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:49.243819" elapsed="0.000266"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:49.244138" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:30:49.244295" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:49.243181" elapsed="0.001138"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:49.244488" elapsed="0.000246"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:49.242231" elapsed="0.002546"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:49.239553" elapsed="0.005258"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:49.244856" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:49.245014" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:49.237982" elapsed="0.007057"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:49.237501" elapsed="0.007611"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.245419" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:49.245179" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:49.237452" elapsed="0.008130"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:49.246890" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:49.245895" elapsed="0.001056"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:49.247094" elapsed="0.000075"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:49.228071" elapsed="0.019260"/>
</kw>
<msg time="2026-04-05T00:30:49.247616" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:49.212690" elapsed="0.034990"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.261004" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.274088" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.288613" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.288870" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.289100" elapsed="0.000027"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.289650" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:49.289407" elapsed="0.000408"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:49.289389" elapsed="0.000532"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.290154" elapsed="0.000028"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.290572" elapsed="0.000028"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.290971" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:49.289348" elapsed="0.001835"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:49.289200" elapsed="0.002024"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.291415" elapsed="0.000045"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:49.291531" elapsed="0.000021"/>
</return>
<msg time="2026-04-05T00:30:49.291701" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:49.208374" elapsed="0.083362"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:49.293783" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:49.293216" elapsed="0.000812">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:49.294252" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:49.292595" elapsed="0.001690"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.294807" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:49.294457" elapsed="0.000524"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:49.295892" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:49.295236" elapsed="0.000709"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:49.295017" elapsed="0.001061"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:49.294413" elapsed="0.001695"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:49.303578" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:49.296300" elapsed="0.007311"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:49.303677" elapsed="0.000040"/>
</return>
<msg time="2026-04-05T00:30:49.303871" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:49.292176" elapsed="0.011728"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:49.305832" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:49.305266" elapsed="0.000771">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:49.306232" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:49.304701" elapsed="0.001565"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:49.306544" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-05T00:30:49.306357" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:49.306334" elapsed="0.000337"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.306820" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.306986" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:49.307050" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:30:49.309926" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:49.304296" elapsed="0.005657"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:49.312076" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:49.311489" elapsed="0.000648"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:49.312930" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:49.312332" elapsed="0.000656"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:49.401057" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:49.402003" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:49.402511" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:49.316022" elapsed="0.087596">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:49.313073" elapsed="0.091015">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.404595" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:49.404174" elapsed="0.000882"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:49.313050" elapsed="0.092180">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.406485" elapsed="0.000118"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:49.406868" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:49.406781" elapsed="0.000185"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:49.406739" elapsed="0.000275"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.407328" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:49.407520" elapsed="0.000044"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:49.310391" elapsed="0.097399">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:49.407961" elapsed="0.000038"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:49.182821" elapsed="0.225361">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:49.408840" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:49.408386" elapsed="0.000618"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:49.408349" elapsed="0.000708"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:49.409129" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:49.171009" elapsed="0.238340">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:52.463574" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:52.462921" elapsed="0.000708"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:52.464865" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:52.464583" elapsed="0.000370">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:52.465151" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:52.464072" elapsed="0.001124"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:52.466159" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:52.465554" elapsed="0.000653"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:52.466813" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:52.467115" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:52.466563" elapsed="0.000597"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:52.467880" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:52.467521" elapsed="0.000455"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:52.469224" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:52.468962" elapsed="0.000307"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:52.469719" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:52.469446" elapsed="0.000299"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:52.470411" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:52.470110" elapsed="0.000342"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:52.471175" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:52.470957" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:52.471252" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:30:52.471412" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:52.470637" elapsed="0.000922"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:52.471711" elapsed="0.000241"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:52.469979" elapsed="0.002013"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:52.472568" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:52.472245" elapsed="0.000349"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:52.473290" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:52.473083" elapsed="0.000232"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:52.473365" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:52.473534" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:52.472776" elapsed="0.000783"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:52.473705" elapsed="0.000276"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:52.472103" elapsed="0.001918"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:52.469804" elapsed="0.004253"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:52.474100" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:30:52.474254" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:52.468562" elapsed="0.005718"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:52.468131" elapsed="0.006208"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.474626" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:52.474400" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:52.468084" elapsed="0.006674"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:52.476177" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:52.475056" elapsed="0.001174"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:52.476363" elapsed="0.000089"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:52.461332" elapsed="0.015283"/>
</kw>
<msg time="2026-04-05T00:30:52.476782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:52.447377" elapsed="0.029459"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.489281" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.501573" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.513892" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.514081" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.514249" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.514743" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:52.514529" elapsed="0.000355"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:52.514513" elapsed="0.000446"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.515131" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.515453" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.515798" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:52.514480" elapsed="0.001512"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:52.514325" elapsed="0.001696"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.516175" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:52.516252" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:30:52.516375" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:52.442880" elapsed="0.073521"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:52.518003" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:52.517618" elapsed="0.000576">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:52.518371" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:52.517104" elapsed="0.001292"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.518731" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:52.518490" elapsed="0.000378"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:52.519570" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:52.519069" elapsed="0.000541"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:52.518896" elapsed="0.000822"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:52.518472" elapsed="0.001270"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:52.525960" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:52.519889" elapsed="0.006098"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:52.526039" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:52.526190" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:52.516777" elapsed="0.009437"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:52.527860" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:52.527486" elapsed="0.000555">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:52.528240" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:52.526989" elapsed="0.001276"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:52.528488" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:30:52.528337" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:52.528318" elapsed="0.000253"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.528717" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.528883" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:52.528948" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:30:52.531142" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:52.526672" elapsed="0.004497"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:52.532840" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:52.532367" elapsed="0.000519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:52.533496" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:52.533034" elapsed="0.000507"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:52.603254" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:52.604016" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:52.604540" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:52.535895" elapsed="0.069678">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:52.533608" elapsed="0.072437">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.606584" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:52.606135" elapsed="0.000874"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:52.533590" elapsed="0.073482">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.608255" elapsed="0.000065"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:52.608622" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:52.608530" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:52.608483" elapsed="0.000293"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.609106" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:52.609269" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:52.531552" elapsed="0.078008">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:52.609843" elapsed="0.000039"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:52.420629" elapsed="0.189455">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:52.610762" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:52.610301" elapsed="0.000635"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:52.610262" elapsed="0.000729"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:52.611067" elapsed="0.000034"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:52.410554" elapsed="0.200744">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:55.668745" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:55.668086" elapsed="0.000715"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:55.670104" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:55.669763" elapsed="0.000421">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:55.670386" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:55.669168" elapsed="0.001281"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:55.671409" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:55.670793" elapsed="0.000681"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:55.672084" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:55.672373" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:55.671814" elapsed="0.000622"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:55.673223" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:55.672779" elapsed="0.000564"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:55.674597" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:55.674305" elapsed="0.000340"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:55.675087" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:55.674802" elapsed="0.000312"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:55.675801" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:55.675499" elapsed="0.000328"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:55.676604" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:55.676361" elapsed="0.000269"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:55.676683" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:30:55.676869" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:55.676019" elapsed="0.001105"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:55.677768" elapsed="0.000572"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:55.675343" elapsed="0.003119"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:55.679714" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:55.679007" elapsed="0.000765"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:55.681355" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:55.680894" elapsed="0.000517"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:55.681615" elapsed="0.000065"/>
</return>
<msg time="2026-04-05T00:30:55.681988" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:55.680177" elapsed="0.001869"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:55.682373" elapsed="0.000587"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:55.678718" elapsed="0.004333"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:55.675168" elapsed="0.007958"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:55.683219" elapsed="0.000060"/>
</return>
<msg time="2026-04-05T00:30:55.683714" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:55.673970" elapsed="0.009800"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:55.673551" elapsed="0.010349"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.684519" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:55.684030" elapsed="0.000663"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:55.673503" elapsed="0.011306"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:55.687126" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:55.685581" elapsed="0.001592"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:55.687306" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:55.666505" elapsed="0.021047"/>
</kw>
<msg time="2026-04-05T00:30:55.687719" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:55.651432" elapsed="0.036340"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.700225" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.712506" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.724823" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.725062" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.725233" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.725720" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:55.725510" elapsed="0.000365"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:55.725494" elapsed="0.000456"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.726122" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.726453" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.726802" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:55.725461" elapsed="0.001535"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:55.725311" elapsed="0.001713"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.727167" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:55.727242" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:30:55.727368" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:55.646984" elapsed="0.080409"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:55.728993" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:55.728612" elapsed="0.000572">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:55.729362" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:55.728090" elapsed="0.001297"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.729723" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:55.729473" elapsed="0.000406"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:55.730598" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:55.730085" elapsed="0.000553"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:55.729909" elapsed="0.000836"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:55.729455" elapsed="0.001314"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:55.737012" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:55.730916" elapsed="0.006122"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:55.737090" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:55.737242" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:55.727767" elapsed="0.009499"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:55.738885" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:55.738415" elapsed="0.000651">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:55.739242" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:55.737932" elapsed="0.001335"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:55.739488" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:30:55.739338" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:55.739320" elapsed="0.000285"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.739752" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.739920" elapsed="0.000025"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:55.739991" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:55.742374" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:55.737604" elapsed="0.004801"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:55.744253" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:55.743797" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:55.744920" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:55.744469" elapsed="0.000495"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:55.815017" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:55.815747" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:55.816143" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:55.747319" elapsed="0.069753">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:55.745032" elapsed="0.072507">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.817976" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:55.817621" elapsed="0.000740"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:55.745013" elapsed="0.073407">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.819477" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:55.819773" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:55.819692" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:55.819654" elapsed="0.000258"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.820214" elapsed="0.000045"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:55.820364" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:55.742976" elapsed="0.077652">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:55.820793" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:55.621357" elapsed="0.199644">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:55.821602" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:55.821196" elapsed="0.000705"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:55.821160" elapsed="0.000799"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:55.822031" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:55.612664" elapsed="0.209584">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:58.876227" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:58.875618" elapsed="0.000662"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:58.877427" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:58.877121" elapsed="0.000414">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:58.877733" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:58.876663" elapsed="0.001114"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:58.878736" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:58.878114" elapsed="0.000668"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:30:58.879368" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:30:58.879651" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:30:58.879116" elapsed="0.000579"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:58.880381" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:58.880024" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:58.881771" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:58.881508" elapsed="0.000307"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:30:58.882239" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:30:58.881970" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:58.882947" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:58.882648" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:58.883712" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:58.883487" elapsed="0.000250"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:58.883789" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:30:58.883953" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:58.883156" elapsed="0.000822"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:58.884125" elapsed="0.000242"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:30:58.882515" elapsed="0.001894"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:30:58.884994" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:30:58.884694" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:30:58.885890" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:30:58.885666" elapsed="0.000250"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:30:58.885968" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:30:58.886119" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:30:58.885203" elapsed="0.000940"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:30:58.886349" elapsed="0.000246"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:30:58.884547" elapsed="0.002091"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:30:58.882319" elapsed="0.004354"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:30:58.886716" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:30:58.886873" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:30:58.881092" elapsed="0.005806"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:58.880680" elapsed="0.006276"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:58.887219" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:58.887015" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:58.880630" elapsed="0.006720"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:30:58.888660" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:30:58.887664" elapsed="0.001045"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:30:58.888841" elapsed="0.000091"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:30:58.874023" elapsed="0.015072"/>
</kw>
<msg time="2026-04-05T00:30:58.889261" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:30:58.859944" elapsed="0.029373"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:58.902816" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:58.915994" elapsed="0.000050"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:58.928466" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:58.928677" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:58.928884" elapsed="0.000026"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:58.929400" elapsed="0.000088"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:58.929182" elapsed="0.000387"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:58.929164" elapsed="0.000484"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:58.929838" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:58.930153" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:58.930590" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:30:58.929125" elapsed="0.001719"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:30:58.928975" elapsed="0.001903"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:58.931028" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:58.931107" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:30:58.931255" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:30:58.855734" elapsed="0.075549"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:58.933059" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:58.932611" elapsed="0.000671">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:58.933494" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:58.932043" elapsed="0.001478"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:58.933868" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:58.933599" elapsed="0.000412"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:30:58.934792" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:30:58.934222" elapsed="0.000618"/>
</kw>
<status status="PASS" start="2026-04-05T00:30:58.934042" elapsed="0.000914"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:58.933580" elapsed="0.001403"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:30:58.941786" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:30:58.935164" elapsed="0.006651"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:30:58.941869" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:30:58.942033" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:58.931669" elapsed="0.010389"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:30:58.943773" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:30:58.943364" elapsed="0.000601">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:30:58.944149" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:30:58.942836" elapsed="0.001338"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:30:58.944383" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:30:58.944245" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-05T00:30:58.944227" elapsed="0.000260"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:58.944630" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:58.944810" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:30:58.944877" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:30:58.947244" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:30:58.942403" elapsed="0.004867"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:58.948995" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:58.948508" elapsed="0.000536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:30:58.949717" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:30:58.949192" elapsed="0.000579"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:30:59.020147" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:30:59.020963" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:30:59.021512" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:30:58.952154" elapsed="0.070357">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:30:58.949843" elapsed="0.073126">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:59.023431" elapsed="0.000087"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:59.023054" elapsed="0.000823"/>
</branch>
<status status="FAIL" start="2026-04-05T00:30:58.949824" elapsed="0.074120">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:59.025066" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:59.025433" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:30:59.025300" elapsed="0.000271"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:59.025250" elapsed="0.000369"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:59.025955" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:30:59.026116" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:30:58.947652" elapsed="0.078708">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:59.026569" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:30:58.833429" elapsed="0.193380">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:30:59.027416" elapsed="0.000093"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:30:59.027020" elapsed="0.000596"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:30:59.026982" elapsed="0.000687"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:30:59.027744" elapsed="0.000042"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:30:58.823740" elapsed="0.204242">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:02.082280" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:02.081678" elapsed="0.000696"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:02.083526" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:02.083260" elapsed="0.000338">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:02.083794" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:02.082815" elapsed="0.001031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:02.084790" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:02.084181" elapsed="0.000655"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:02.085411" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:02.085677" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:02.085165" elapsed="0.000559"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:02.086434" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:02.086051" elapsed="0.000533"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:02.087762" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:02.087504" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:02.088226" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:02.087959" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:02.088926" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:02.088626" elapsed="0.000325"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:02.089689" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:02.089458" elapsed="0.000256"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:02.089766" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:31:02.089925" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:02.089133" elapsed="0.000816"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:02.090096" elapsed="0.000249"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:02.088494" elapsed="0.001891"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:02.091104" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:02.090785" elapsed="0.000345"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:02.091898" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:02.091688" elapsed="0.000236"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:02.091974" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:02.092122" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:02.091352" elapsed="0.000794"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:02.092289" elapsed="0.000237"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:02.090605" elapsed="0.001962"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:02.088303" elapsed="0.004298"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:02.092644" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:31:02.092797" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:02.087163" elapsed="0.005658"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:02.086771" elapsed="0.006107"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.093141" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:02.092937" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:02.086725" elapsed="0.006547"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:02.094392" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:02.093583" elapsed="0.000958"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:02.094675" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:02.080133" elapsed="0.014791"/>
</kw>
<msg time="2026-04-05T00:31:02.095091" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:02.066199" elapsed="0.028946"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.107708" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.120115" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.132679" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.132879" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.133050" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.133567" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:02.133313" elapsed="0.000404"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:02.133298" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.133977" elapsed="0.000026"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.134298" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.134679" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:02.133267" elapsed="0.001611"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:02.133128" elapsed="0.001779"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.135051" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:02.135127" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:02.135248" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:02.062014" elapsed="0.073260"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:02.136976" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:02.136591" elapsed="0.000580">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:02.137356" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:02.136055" elapsed="0.001326"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.137728" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:02.137471" elapsed="0.000397"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:02.138586" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:02.138068" elapsed="0.000559"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:02.137897" elapsed="0.000842"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:02.137450" elapsed="0.001313"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:02.145152" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:02.138910" elapsed="0.006269"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:02.145231" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:02.145383" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:02.135722" elapsed="0.009686"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:02.147080" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:02.146712" elapsed="0.000549">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:02.147457" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:02.146101" elapsed="0.001383"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:02.147694" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:31:02.147558" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:02.147539" elapsed="0.000307"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.148016" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.148185" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:02.148250" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:02.150283" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:02.145783" elapsed="0.004526"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:02.152139" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:02.151665" elapsed="0.000523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:02.152812" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:02.152342" elapsed="0.000515"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:02.219240" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:02.220048" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:02.220519" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:02.155187" elapsed="0.066352">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:02.152925" elapsed="0.069194">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.222414" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:02.222199" elapsed="0.000505"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:02.152907" elapsed="0.069834">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.223364" elapsed="0.000037"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:02.223581" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:02.223529" elapsed="0.000111"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:02.223503" elapsed="0.000168"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.223862" elapsed="0.000029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:02.223959" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:02.150850" elapsed="0.073275">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:02.224232" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:02.037264" elapsed="0.187115">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:02.224800" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:02.224537" elapsed="0.000364"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:02.224513" elapsed="0.000419"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:02.224977" elapsed="0.000019"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:02.029113" elapsed="0.195997">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.278336" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:05.277690" elapsed="0.000700"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:05.279514" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:05.279208" elapsed="0.000383">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:05.279787" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:05.278760" elapsed="0.001072"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.280799" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:05.280176" elapsed="0.000671"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:05.281456" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:05.281788" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:05.281183" elapsed="0.000652"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.282579" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:05.282190" elapsed="0.000488"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.283882" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:05.283619" elapsed="0.000308"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.284356" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:05.284084" elapsed="0.000298"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.285073" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:05.284767" elapsed="0.000331"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:05.285840" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:05.285616" elapsed="0.000250"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:05.285920" elapsed="0.000085"/>
</return>
<msg time="2026-04-05T00:31:05.286144" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:05.285282" elapsed="0.000887"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:05.286318" elapsed="0.000260"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:05.284634" elapsed="0.001987"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.287192" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:05.286863" elapsed="0.000355"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:05.288052" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:05.287841" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:05.288128" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:05.288276" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:05.287399" elapsed="0.000901"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:05.288461" elapsed="0.000224"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:05.286734" elapsed="0.001993"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:05.284453" elapsed="0.004308"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:05.288804" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:31:05.288957" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:05.283235" elapsed="0.005747"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:05.282835" elapsed="0.006204"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.289302" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:05.289098" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:05.282789" elapsed="0.006662"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.290790" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:05.289755" elapsed="0.001084"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:05.290970" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:05.276116" elapsed="0.015090"/>
</kw>
<msg time="2026-04-05T00:31:05.291376" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:05.262075" elapsed="0.029457"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.304062" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.316350" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.328714" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.328906" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.329077" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.329561" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:05.329329" elapsed="0.000377"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:05.329314" elapsed="0.000469"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.329967" elapsed="0.000028"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.330317" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.330711" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:05.329284" elapsed="0.001628"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:05.329153" elapsed="0.001788"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.331085" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:05.331162" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:05.331281" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:05.257619" elapsed="0.073693"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:05.332900" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:05.332519" elapsed="0.000564">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:05.333261" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:05.332009" elapsed="0.001277"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.333626" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:05.333361" elapsed="0.000401"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.334465" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:05.333960" elapsed="0.000548"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:05.333789" elapsed="0.000940"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:05.333343" elapsed="0.001417"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.341059" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:05.334915" elapsed="0.006171"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:05.341138" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:05.341291" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:05.331689" elapsed="0.009627"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:05.342974" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:05.342550" elapsed="0.000700">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:05.343532" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:05.342043" elapsed="0.001525"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:05.343860" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-05T00:31:05.343670" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:05.343644" elapsed="0.000332"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.344180" elapsed="0.000030"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.344408" elapsed="0.000051"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:05.344524" elapsed="0.000023"/>
</return>
<msg time="2026-04-05T00:31:05.347534" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:05.341722" elapsed="0.005838"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.349309" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:05.348843" elapsed="0.000513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.350006" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:05.349549" elapsed="0.000503"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:05.420967" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:05.421699" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:05.422114" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:05.352468" elapsed="0.070591">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:05.350120" elapsed="0.073403">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.424015" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:05.423607" elapsed="0.000729"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:05.350102" elapsed="0.074270">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.425013" elapsed="0.000037"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:05.425201" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:05.425149" elapsed="0.000157"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:05.425125" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.425570" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:05.425669" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:05.347923" elapsed="0.077896">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:05.425925" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:05.234007" elapsed="0.192053">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.426429" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:05.426185" elapsed="0.000365"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:05.426161" elapsed="0.000422"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:05.426627" elapsed="0.000020"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:05.226300" elapsed="0.200463">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<msg time="2026-04-05T00:31:05.426895" level="FAIL">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${timeout}</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-05T00:30:33.225442" elapsed="32.201579">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${mapping}</arg>
<doc>Checks weather the device was mounted.</doc>
<status status="FAIL" start="2026-04-05T00:30:33.205522" elapsed="32.221661">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.437005" elapsed="0.000027"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${mod_session}</var>
<arg>member_index=${idx}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.437337" elapsed="0.000024"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}netconf-state</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${mod_session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.437531" elapsed="0.000021"/>
</kw>
<var name="${idx}"/>
<status status="NOT RUN" start="2026-04-05T00:31:05.437151" elapsed="0.000446"/>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:05.437089" elapsed="0.000536"/>
</for>
<kw name="Remove_Netconf_Device" type="TEARDOWN">
<kw name="Remove_Device_From_Netconf" owner="NetconfKeywords">
<kw name="Pop From Dictionary" owner="Collections">
<msg time="2026-04-05T00:31:05.439001" level="INFO">${device_type} = full-uri-device</msg>
<var>${device_type}</var>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<doc>Pops the given ``key`` from the ``dictionary`` and returns its value.</doc>
<status status="PASS" start="2026-04-05T00:31:05.438741" elapsed="0.000287"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.439632" level="INFO">${mapping} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:05.439190" elapsed="0.000468"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:05.458297" elapsed="0.000869"/>
</kw>
<msg time="2026-04-05T00:31:05.459396" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:05.457938" elapsed="0.001547"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:05.457528" elapsed="0.002073"/>
</kw>
<msg time="2026-04-05T00:31:05.459643" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:05.448638" elapsed="0.011061"/>
</kw>
<msg time="2026-04-05T00:31:05.459800" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:05.448270" elapsed="0.011554"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.502491" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:05.501832" elapsed="0.000766"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:05.504145" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:05.503659" elapsed="0.000590">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:05.504372" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:05.502897" elapsed="0.001595"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.505895" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:05.504859" elapsed="0.001144"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:05.506605" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:05.506822" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:05.506374" elapsed="0.000554"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.507721" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:05.507218" elapsed="0.000564"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.509733" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:05.509471" elapsed="0.000307"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.510240" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:05.509976" elapsed="0.000290"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.511264" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:05.510801" elapsed="0.000488"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:05.512050" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:05.511834" elapsed="0.000242"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:05.512126" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:31:05.512277" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:05.511492" elapsed="0.000809"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:05.512463" elapsed="0.000227"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:05.510668" elapsed="0.002063"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.513300" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:05.512998" elapsed="0.000327"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:05.514066" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:05.513858" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:05.514140" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:05.514287" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:05.513522" elapsed="0.000789"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:05.514652" elapsed="0.000226"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:05.512842" elapsed="0.002078"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:05.510360" elapsed="0.004614"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:05.515037" elapsed="0.000070"/>
</return>
<msg time="2026-04-05T00:31:05.515396" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:05.508638" elapsed="0.006864"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:05.507955" elapsed="0.007623"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.515867" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:05.515654" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:05.507933" elapsed="0.008172"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.517200" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:05.516248" elapsed="0.001060"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:05.517548" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:05.500863" elapsed="0.016829"/>
</kw>
<msg time="2026-04-05T00:31:05.517750" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:05.488286" elapsed="0.029525"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.530312" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.542528" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.554723" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.554911" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.555079" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.555503" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:05.555338" elapsed="0.000222"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:05.555323" elapsed="0.000260"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.555725" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.555886" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.556044" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:05.555293" elapsed="0.000842"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:05.555153" elapsed="0.001011"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.556308" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:05.556383" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:31:05.556519" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:05.484054" elapsed="0.072491"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.557695" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:05.557405" elapsed="0.000336"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:05.569428" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:05.569503" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:05.569629" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:31:05.560103" elapsed="0.009553"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:05.557808" elapsed="0.011888"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.569870" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:05.569722" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:05.557790" elapsed="0.012160"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.578197" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:05.572505" elapsed="0.005748"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:05.571998" elapsed="0.006291"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:05.571956" elapsed="0.006358"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.581046" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:05.578613" elapsed="0.002480"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:05.578368" elapsed="0.002758"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:05.578352" elapsed="0.002798"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.581703" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:05.581313" elapsed="0.000416"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.582059" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:05.581824" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.582712" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:05.582290" elapsed="0.000448"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:05.582138" elapsed="0.000634"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:05.581806" elapsed="0.000987"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.583300" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:05.582944" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:05.583642" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:05.583394" elapsed="0.000304"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:05.584262" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:05.583873" elapsed="0.000415"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:05.583721" elapsed="0.000601"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:05.583376" elapsed="0.000967"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:05.584502" elapsed="0.000456"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:31:05.585528" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:05.585156" elapsed="0.000399"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:31:05.585705" elapsed="0.005374"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:31:05.570996" elapsed="0.020146"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:31:05.591187" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:31:05.593453" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:31:05.556803" elapsed="0.036678"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:31:05.593535" elapsed="0.000027"/>
</return>
<arg>${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>${mapping}</arg>
<arg>session=${session}</arg>
<arg>location=${location}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:31:05.460042" elapsed="0.133614"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf to deconfigure the specified device</doc>
<status status="PASS" start="2026-04-05T00:31:05.438275" elapsed="0.155442"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<doc>Removes configured device</doc>
<status status="PASS" start="2026-04-05T00:31:05.437822" elapsed="0.155946"/>
</kw>
<arg>${idx}</arg>
<doc>Netconf readines for a node is done by creating a netconf device connected to that node
and performing GET operation got from the device's mount point.</doc>
<status status="FAIL" start="2026-04-05T00:30:32.872390" elapsed="32.721459">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<var name="${idx}">1</var>
<status status="FAIL" start="2026-04-05T00:30:32.871973" elapsed="32.721969">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="FAIL" start="2026-04-05T00:30:32.871637" elapsed="32.722366">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</for>
<doc>Verifies the netconf readiness for every odl node.</doc>
<status status="FAIL" start="2026-04-05T00:30:32.871076" elapsed="32.723022">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Check_Netconf_Topology_Ready">
<for flavor="IN">
<iter>
<kw name="Verify_Netconf_Topology_Ready_For_Node">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.599172" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:06.598179" elapsed="0.001066"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:31:06.599367" elapsed="0.000113"/>
</return>
<msg time="2026-04-05T00:31:06.599775" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${node_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:31:06.597156" elapsed="0.002691"/>
</kw>
<kw name="Configure_Netconf_Device">
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:06.628323" elapsed="0.000889"/>
</kw>
<msg time="2026-04-05T00:31:06.629354" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:06.627871" elapsed="0.001541"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:06.627489" elapsed="0.002019"/>
</kw>
<msg time="2026-04-05T00:31:06.629550" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:06.618996" elapsed="0.010598"/>
</kw>
<msg time="2026-04-05T00:31:06.629695" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:06.618663" elapsed="0.011056"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.630680" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.629880" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.631209" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:06.630885" elapsed="0.000392"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.664099" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:06.663719" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:06.664965" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:06.664699" elapsed="0.000344">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:06.665137" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:06.664339" elapsed="0.000823"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.665785" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:06.665376" elapsed="0.000436"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:06.666165" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:06.666363" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:06.666027" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.666874" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:06.666626" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.667924" level="INFO">mapping: {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:06.667668" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.668386" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.668128" elapsed="0.000283"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.669099" level="INFO">${value} = 10.30.170.184</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:06.668802" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:06.669859" level="INFO">${encoded} = 10.30.170.184</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.669640" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:06.669934" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:31:06.670088" level="INFO">${encoded_value} = 10.30.170.184</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:06.669305" elapsed="0.000807"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.670258" elapsed="0.000308"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.184</var>
<status status="PASS" start="2026-04-05T00:31:06.668672" elapsed="0.001938"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.671160" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:06.670857" elapsed="0.000332"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:06.672101" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.671889" elapsed="0.000238"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:06.672176" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:06.672324" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:06.671395" elapsed="0.000953"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.672581" elapsed="0.000226"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:06.670727" elapsed="0.002121"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.673382" level="INFO">${value} = 2830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:06.673087" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:06.674132" level="INFO">${encoded} = 2830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.673927" elapsed="0.000231"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:06.674207" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:06.674355" level="INFO">${encoded_value} = 2830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:06.673614" elapsed="0.000765"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.674568" elapsed="0.000404"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">2830</var>
<status status="PASS" start="2026-04-05T00:31:06.672959" elapsed="0.002055"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.675575" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:06.675259" elapsed="0.000341"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:06.676296" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.676090" elapsed="0.000231"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:06.676369" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:06.676534" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:06.675779" elapsed="0.000779"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.676704" elapsed="0.000217"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:31:06.675126" elapsed="0.001838"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.677514" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:06.677198" elapsed="0.000341"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:06.678287" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.678081" elapsed="0.000231"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:06.678360" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:06.678531" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:06.677773" elapsed="0.000782"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.678732" elapsed="0.000228"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:31:06.677072" elapsed="0.001934"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.679570" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:06.679253" elapsed="0.000343"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:06.680298" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.680079" elapsed="0.000248"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:06.680377" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:06.680544" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:06.679773" elapsed="0.000795"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.680713" elapsed="0.000220"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:31:06.679122" elapsed="0.001852"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.681534" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:06.681215" elapsed="0.000344"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:06.682262" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.682052" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:06.682335" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:06.682498" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:06.681737" elapsed="0.000786"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.682732" elapsed="0.000224"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:31:06.681083" elapsed="0.001915"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.683564" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:06.683233" elapsed="0.000357"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:06.684287" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.684081" elapsed="0.000231"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:06.684362" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:06.684527" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:06.683769" elapsed="0.000782"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.684697" elapsed="0.000218"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:06.683106" elapsed="0.001850"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:06.668496" elapsed="0.016493"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:06.685032" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:31:06.685192" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:06.667336" elapsed="0.017883"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:06.667035" elapsed="0.018215"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.685421" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:06.685276" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:06.667014" elapsed="0.018502"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.687638" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:06.685705" elapsed="0.001962"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:06.687765" elapsed="0.000053"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:06.662703" elapsed="0.025335"/>
</kw>
<msg time="2026-04-05T00:31:06.688126" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:06.649322" elapsed="0.038898"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.710168" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.732053" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.754150" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.754393" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.754696" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.755269" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:06.755009" elapsed="0.000343"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:06.754992" elapsed="0.000464"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.755757" elapsed="0.000046"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.756087" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.756412" elapsed="0.000064"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:06.754960" elapsed="0.001640"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:06.754825" elapsed="0.001835"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.756808" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:06.756959" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:31:06.757081" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:06.644964" elapsed="0.112142"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.786288" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:06.785914" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:06.787106" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:06.786872" elapsed="0.000302">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:06.787267" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:06.786540" elapsed="0.000750"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.787965" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:06.787517" elapsed="0.000476"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:06.788340" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:06.788502" level="INFO">${template} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVI...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:06.788202" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.788978" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;$DEVICE_USER&lt;/username&gt;
      &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:06.788732" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:31:06.789458" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:06.789145" elapsed="0.000374"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.789982" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:06.789687" elapsed="0.000355"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:06.789545" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:06.789124" elapsed="0.000977"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.791012" level="INFO">${final_text} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:06.790293" elapsed="0.000750"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:06.791140" elapsed="0.000054"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:06.784916" elapsed="0.006496"/>
</kw>
<msg time="2026-04-05T00:31:06.791521" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:06.771363" elapsed="0.020254"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.813536" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.835309" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.860794" elapsed="0.000052"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.861157" elapsed="0.000028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.861405" elapsed="0.000044"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.862161" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:06.861840" elapsed="0.000422"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:06.861819" elapsed="0.000546"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.862730" elapsed="0.000047"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.863062" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.863389" elapsed="0.000062"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:06.861773" elapsed="0.001804"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:06.861585" elapsed="0.002055"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.863792" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:06.863961" elapsed="0.000024"/>
</return>
<msg time="2026-04-05T00:31:06.864131" level="INFO">${data} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:06.768545" elapsed="0.095675"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:06.867127" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:06.866431" elapsed="0.000821">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:06.867383" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:06.865115" elapsed="0.002293"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.867888" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:06.867537" elapsed="0.000503"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.869316" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:06.868664" elapsed="0.000692"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:06.868066" elapsed="0.001388"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:06.867517" elapsed="0.001961"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.872200" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:06.869627" elapsed="0.002600"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:06.872325" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:31:06.872499" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:06.864664" elapsed="0.007860"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.874477" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:06.873977" elapsed="0.000563"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.875170" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:06.874703" elapsed="0.000535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.875891" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:06.875402" elapsed="0.000549"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.876594" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:06.876111" elapsed="0.000543"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:31:06.878179" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:31:06.877607" elapsed="0.000671"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:31:06.879163" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:31:06.878637" elapsed="0.000625"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.879539" elapsed="0.000484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.881006" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:06.880284" elapsed="0.000917"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:31:06.881287" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:31:06.881575" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:31:06.876897" elapsed="0.004705"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:06.902749" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '439', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt; 
 </msg>
<msg time="2026-04-05T00:31:06.902909" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:06.903130" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:31:06.890200" elapsed="0.012986"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:06.881711" elapsed="0.021637"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.903668" elapsed="0.000102"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:06.903388" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:06.881692" elapsed="0.022290"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.909813" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:06.906373" elapsed="0.003530"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:06.905735" elapsed="0.004234"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:06.905689" elapsed="0.004375"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.914164" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:06.910843" elapsed="0.003388"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:06.910182" elapsed="0.004096"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:06.910141" elapsed="0.004204"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.915846" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:06.914853" elapsed="0.001092"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.916597" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:06.916072" elapsed="0.000620"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.917575" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:06.917089" elapsed="0.000522"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:06.916759" elapsed="0.000900"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:06.916040" elapsed="0.001682"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.919196" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:06.918212" elapsed="0.001083"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.919911" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:06.919426" elapsed="0.000580"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.920913" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:06.920404" elapsed="0.000544"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:06.920072" elapsed="0.000924"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:06.919390" elapsed="0.001669"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:06.921348" elapsed="0.000814"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:31:06.923083" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:06.922448" elapsed="0.000733"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.923459" elapsed="0.002714"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:31:06.904645" elapsed="0.021633"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:31:06.926526" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-05T00:31:06.926361" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:06.926342" elapsed="0.000322"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.926809" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:06.926914" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:31:06.929177" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:31:06.872984" elapsed="0.056219"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:31:06.929266" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:31:06.929496" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:31:06.634163" elapsed="0.295393"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:06.929893" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:06.929659" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:06.929641" elapsed="0.000345"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:31:06.930019" elapsed="0.000027"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:31:06.631554" elapsed="0.298587"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:06.631303" elapsed="0.298881"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:06.630862" elapsed="0.299344"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.930346" elapsed="0.000356"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=full-uri-device</arg>
<arg>device_port=${DEVICE_PORT}</arg>
<arg>device_address=${device_ip}</arg>
<arg>device_user=admin</arg>
<arg>device_password=admin</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:31:06.601602" elapsed="0.329163"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${ODL_SYSTEM_${node_index}_IP}</arg>
<doc>Configures the device via REST api.</doc>
<status status="PASS" start="2026-04-05T00:31:06.600144" elapsed="0.330686"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.931458" level="INFO">&amp;{mapping} = { DEVICE_NAME=test-device | RESTCONF_ROOT=/rests }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:06.930990" elapsed="0.000497"/>
</kw>
<kw name="Wait_Netconf_Device_Mounted">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:06.950014" elapsed="0.000780"/>
</kw>
<msg time="2026-04-05T00:31:06.950855" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:06.949654" elapsed="0.001254"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:06.949244" elapsed="0.001737"/>
</kw>
<msg time="2026-04-05T00:31:06.951023" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:06.940572" elapsed="0.010495"/>
</kw>
<msg time="2026-04-05T00:31:06.951166" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:06.940243" elapsed="0.010947"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:06.998835" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:06.998238" elapsed="0.000644"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:06.999895" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:06.999675" elapsed="0.000291">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:07.000159" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:06.999216" elapsed="0.000988"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:07.001167" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:07.000573" elapsed="0.000641"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:07.001817" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:07.002154" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:07.001570" elapsed="0.000635"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:07.002916" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:07.002559" elapsed="0.000459"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:07.004153" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:07.003896" elapsed="0.000301"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:07.004677" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:07.004352" elapsed="0.000351"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:07.005534" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:07.005057" elapsed="0.000504"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:07.006298" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:07.006058" elapsed="0.000265"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:07.006373" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:31:07.006541" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:07.005745" elapsed="0.000822"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:07.006713" elapsed="0.000222"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:07.004920" elapsed="0.002060"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:07.007532" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:07.007219" elapsed="0.000338"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:07.008259" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:07.008050" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:07.008332" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:07.008614" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:07.007737" elapsed="0.000902"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:07.008790" elapsed="0.000221"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:07.007091" elapsed="0.001960"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:07.004753" elapsed="0.004332"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:07.009127" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:31:07.009281" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:07.003573" elapsed="0.005733"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:07.003166" elapsed="0.006198"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.009651" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:07.009426" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:07.003123" elapsed="0.006659"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:07.010887" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:07.010079" elapsed="0.000856"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:07.011064" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:06.996680" elapsed="0.014613"/>
</kw>
<msg time="2026-04-05T00:31:07.011475" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:06.982605" elapsed="0.028924"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.024020" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.036377" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.048620" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.048818" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.048989" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.049464" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:07.049240" elapsed="0.000367"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:07.049225" elapsed="0.000456"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.049854" elapsed="0.000025"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.050166" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.050527" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:07.049194" elapsed="0.001572"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:07.049063" elapsed="0.001734"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.050943" elapsed="0.000024"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:07.051023" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:31:07.051140" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:06.978410" elapsed="0.072756"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:07.052728" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:07.052344" elapsed="0.000565">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:07.053084" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:07.051859" elapsed="0.001250"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.053418" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:07.053179" elapsed="0.000392"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:07.054254" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:07.053757" elapsed="0.000535"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:07.053598" elapsed="0.000844"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:07.053161" elapsed="0.001309"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:07.060852" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:07.054642" elapsed="0.006237"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:07.060930" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:07.061081" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:07.051538" elapsed="0.009568"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:07.062638" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:07.062255" elapsed="0.000584">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:07.063018" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:07.061770" elapsed="0.001272"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:07.063246" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:31:07.063113" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:07.063095" elapsed="0.000233"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.063617" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.063787" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:07.063851" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:31:07.065714" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:07.061448" elapsed="0.004291"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:07.067577" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:07.067104" elapsed="0.000519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:07.068216" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:07.067770" elapsed="0.000490"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:07.085487" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:07.085939" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=503, reason=Service Unavailable 
 headers={'Content-Type': 'application/xml', 'Content-Length': '433'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;protocol&lt;/error-type&gt;&lt;error-path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology/a:topology[a:topology-id='topology-netconf']/a:node[a:node-id='test-device']&lt;/error-path&gt;&lt;error-message&gt;Mount point does not exist&lt;/error-message&gt;&lt;error-tag&gt;resource-denied-transport&lt;/error-tag&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:07.086188" level="FAIL">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:07.070604" elapsed="0.016494">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:07.068326" elapsed="0.019041">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.087648" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:07.087415" elapsed="0.000468"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:07.068308" elapsed="0.019611">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.088561" elapsed="0.000037"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:07.088804" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:07.088751" elapsed="0.000112"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:07.088724" elapsed="0.000170"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.089087" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:07.089184" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:07.066091" elapsed="0.023242">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:07.089461" elapsed="0.000024"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:06.956287" elapsed="0.133313">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:07.089969" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:07.089728" elapsed="0.000348"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:07.089704" elapsed="0.000405"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:07.090154" elapsed="0.000020"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:06.951968" elapsed="0.138319">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:10.145115" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:10.144506" elapsed="0.000663"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:10.146268" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:10.146009" elapsed="0.000332">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:10.146562" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:10.145566" elapsed="0.001040"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:10.147562" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:10.146944" elapsed="0.000666"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:10.148198" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:10.148476" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:10.147946" elapsed="0.000577"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:10.149241" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:10.148859" elapsed="0.000489"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:10.150651" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:10.150299" elapsed="0.000397"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:10.151120" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:10.150855" elapsed="0.000290"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:10.151955" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:10.151524" elapsed="0.000458"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:10.152722" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:10.152502" elapsed="0.000245"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:10.152800" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:31:10.152958" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:10.152169" elapsed="0.000814"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:10.153131" elapsed="0.000287"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:10.151374" elapsed="0.002099"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:10.154012" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:10.153712" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:10.155016" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:10.154799" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:10.155092" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:10.155241" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:10.154217" elapsed="0.001048"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:10.155410" elapsed="0.000236"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:10.153585" elapsed="0.002102"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:10.151200" elapsed="0.004521"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:10.155764" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:31:10.155916" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:10.149977" elapsed="0.005964"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:10.149574" elapsed="0.006425"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.156268" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:10.156060" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:10.149520" elapsed="0.006878"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:10.157526" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:10.156717" elapsed="0.000859"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:10.157706" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:10.142912" elapsed="0.015025"/>
</kw>
<msg time="2026-04-05T00:31:10.158106" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:10.129037" elapsed="0.029122"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.170588" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.182806" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.195330" elapsed="0.000037"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.195593" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.195774" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.196282" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:10.196067" elapsed="0.000379"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:10.196048" elapsed="0.000479"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.196709" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.197022" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.197375" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:10.196011" elapsed="0.001597"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:10.195859" elapsed="0.001781"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.197787" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:10.197864" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:31:10.198012" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:10.124771" elapsed="0.073268"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:10.199739" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:10.199303" elapsed="0.000636">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:10.200123" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:10.198767" elapsed="0.001381"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.200494" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:10.200220" elapsed="0.000452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:10.201377" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:10.200877" elapsed="0.000541"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:10.200702" elapsed="0.000844"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:10.200202" elapsed="0.001395"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:10.208096" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:10.201747" elapsed="0.006375"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:10.208174" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:31:10.208327" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:10.198404" elapsed="0.009948"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:10.209921" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:10.209512" elapsed="0.000594">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:10.210406" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:10.209012" elapsed="0.001436"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:10.210656" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:31:10.210522" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:10.210503" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.210879" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.211043" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:10.211107" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:10.213152" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:10.208690" elapsed="0.004488"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:10.214852" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:10.214370" elapsed="0.000529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:10.215637" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:10.215048" elapsed="0.000635"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:10.293204" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:10.293964" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:10.294412" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:10.217917" elapsed="0.077453">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:10.215751" elapsed="0.080081">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.296276" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:10.295915" elapsed="0.000781"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:10.215733" elapsed="0.081023">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.297912" elapsed="0.000072"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:10.298256" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:10.298146" elapsed="0.000208"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:10.298107" elapsed="0.000296"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.298750" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:10.298904" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:10.213546" elapsed="0.085597">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:10.299311" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:10.101795" elapsed="0.197867">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:10.300265" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:10.299876" elapsed="0.000584"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:10.299837" elapsed="0.000681"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:10.300590" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:10.091233" elapsed="0.209577">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:13.355022" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:13.354404" elapsed="0.000671"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:13.356175" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:13.355908" elapsed="0.000344">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:13.356471" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:13.355425" elapsed="0.001091"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:13.357462" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:13.356854" elapsed="0.000656"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:13.358092" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:13.358354" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:13.357839" elapsed="0.000560"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:13.359110" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:13.358748" elapsed="0.000457"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:13.360390" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:13.360132" elapsed="0.000366"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:13.360923" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:13.360656" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:13.361636" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:13.361313" elapsed="0.000348"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:13.362384" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:13.362165" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:13.362483" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:31:13.362644" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:13.361844" elapsed="0.000824"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:13.362816" elapsed="0.000242"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:13.361182" elapsed="0.001917"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:13.363650" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:13.363339" elapsed="0.000338"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:13.364756" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:13.364412" elapsed="0.000369"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:13.364832" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:13.364982" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:13.363960" elapsed="0.001046"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:13.365152" elapsed="0.000218"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:13.363213" elapsed="0.002198"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:13.361007" elapsed="0.004456"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:13.365506" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:31:13.365660" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:13.359775" elapsed="0.005909"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:13.359360" elapsed="0.006382"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.366007" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:13.365801" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:13.359314" elapsed="0.006822"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:13.367231" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:13.366445" elapsed="0.000833"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:13.367407" elapsed="0.000090"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:13.352863" elapsed="0.014791"/>
</kw>
<msg time="2026-04-05T00:31:13.367820" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:13.338970" elapsed="0.028904"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.380398" elapsed="0.000039"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.392651" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.404890" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.405078" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.405245" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.405720" elapsed="0.000094"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:13.405511" elapsed="0.000384"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:13.405495" elapsed="0.000476"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.406145" elapsed="0.000026"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.406479" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.406823" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:13.405465" elapsed="0.001552"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:13.405319" elapsed="0.001727"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.407189" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:13.407264" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:31:13.407382" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:13.334812" elapsed="0.072595"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:13.409042" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:13.408674" elapsed="0.000550">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:13.409403" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:13.408090" elapsed="0.001358"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.409774" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:13.409521" elapsed="0.000387"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:13.410610" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:13.410104" elapsed="0.000546"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:13.409935" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:13.409502" elapsed="0.001280"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:13.417123" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:13.410929" elapsed="0.006221"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:13.417200" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:13.417350" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:13.407772" elapsed="0.009602"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:13.419019" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:13.418655" elapsed="0.000544">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:13.419375" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:13.418028" elapsed="0.001372"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:13.419622" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:31:13.419488" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:13.419469" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.419843" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.420006" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:13.420071" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:13.422029" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:13.417712" elapsed="0.004344"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:13.423852" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:13.423366" elapsed="0.000533"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:13.424548" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:13.424046" elapsed="0.000548"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:13.497878" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:13.498223" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:13.498402" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:13.426915" elapsed="0.071933">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:13.424662" elapsed="0.074376">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.499222" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:13.499072" elapsed="0.000319"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:13.424644" elapsed="0.074773">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.499883" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:13.500015" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:13.499979" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:13.499962" elapsed="0.000116"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.500213" elapsed="0.000026"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:13.500286" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:13.422410" elapsed="0.077981">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:13.500482" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:13.312737" elapsed="0.187856">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:13.500864" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:13.500686" elapsed="0.000249"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:13.500670" elapsed="0.000288"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:13.500990" elapsed="0.000014"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:13.301957" elapsed="0.199129">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:16.556831" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:16.556177" elapsed="0.000707"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:16.557949" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:16.557692" elapsed="0.000331">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:16.558216" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:16.557232" elapsed="0.001027"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:16.559217" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:16.558631" elapsed="0.000631"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:16.559865" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:16.560125" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:16.559611" elapsed="0.000559"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:16.560900" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:16.560517" elapsed="0.000482"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:16.562147" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:16.561889" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:16.562718" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:16.562346" elapsed="0.000398"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:16.563393" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:16.563095" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:16.564148" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:16.563931" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:16.564226" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:31:16.564383" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:16.563618" elapsed="0.000789"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:16.564573" elapsed="0.000265"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:16.562965" elapsed="0.001914"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:16.565413" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:16.565119" elapsed="0.000335"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:16.566295" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:16.566084" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:16.566370" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:16.566617" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:16.565637" elapsed="0.001006"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:16.566791" elapsed="0.000222"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:16.564990" elapsed="0.002063"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:16.562796" elapsed="0.004292"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:16.567130" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:16.567339" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:16.561566" elapsed="0.005799"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:16.561153" elapsed="0.006273"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.567711" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:16.567500" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:16.561107" elapsed="0.006734"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:16.568959" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:16.568130" elapsed="0.000877"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:16.569138" elapsed="0.000071"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:16.554612" elapsed="0.014752"/>
</kw>
<msg time="2026-04-05T00:31:16.569550" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:16.540700" elapsed="0.028905"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.582015" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.594302" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.606697" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.606885" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.607054" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.607528" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:16.607304" elapsed="0.000364"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:16.607289" elapsed="0.000454"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.607916" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.608221" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.608580" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:16.607258" elapsed="0.001531"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:16.607128" elapsed="0.001690"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.608961" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:16.609068" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:31:16.609187" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:16.536345" elapsed="0.072868"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:16.610823" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:16.610405" elapsed="0.000605">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:16.611187" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:16.609917" elapsed="0.001295"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.611541" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:16.611283" elapsed="0.000397"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:16.612363" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:16.611879" elapsed="0.000525"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:16.611708" elapsed="0.000822"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:16.611265" elapsed="0.001288"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:16.618802" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:16.612699" elapsed="0.006129"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:16.618880" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:16.619030" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:16.609597" elapsed="0.009458"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:16.620572" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:16.620191" elapsed="0.000561">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:16.620964" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:16.619705" elapsed="0.001284"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:16.621193" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:31:16.621060" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:16.621042" elapsed="0.000233"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.621416" elapsed="0.000146"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.621712" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:16.621777" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:16.623833" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:16.619374" elapsed="0.004485"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:16.625646" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:16.625037" elapsed="0.000656"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:16.626292" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:16.625842" elapsed="0.000494"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:16.699465" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:16.700354" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:16.700852" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:16.628570" elapsed="0.073298">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:16.626403" elapsed="0.075911">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.702798" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:16.702395" elapsed="0.000788"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:16.626385" elapsed="0.076857">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.704297" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:16.704631" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:16.704549" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:16.704509" elapsed="0.000262"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.705115" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:16.705276" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:16.624208" elapsed="0.081346">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:16.705756" elapsed="0.000040"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:16.512934" elapsed="0.193047">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:16.706605" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:16.706182" elapsed="0.000585"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:16.706145" elapsed="0.000674"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:16.706889" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:16.502110" elapsed="0.204995">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:19.763364" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:19.762755" elapsed="0.000662"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:19.764540" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:19.764238" elapsed="0.000383">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:19.764819" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:19.763786" elapsed="0.001137"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:19.765918" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:19.765266" elapsed="0.000700"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:19.766574" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:19.766835" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:19.766301" elapsed="0.000579"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:19.767594" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:19.767216" elapsed="0.000475"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:19.768895" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:19.768632" elapsed="0.000307"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:19.769367" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:19.769099" elapsed="0.000306"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:19.770077" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:19.769781" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:19.770835" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:19.770615" elapsed="0.000246"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:19.770912" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:31:19.771072" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:19.770285" elapsed="0.000811"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:19.771242" elapsed="0.000262"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:19.769649" elapsed="0.001896"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:19.772082" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:19.771788" elapsed="0.000319"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:19.772948" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:19.772735" elapsed="0.000238"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:19.773023" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:19.773171" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:19.772290" elapsed="0.000905"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:19.773337" elapsed="0.000283"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:19.771661" elapsed="0.002003"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:19.769472" elapsed="0.004226"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:19.773740" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:19.773895" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:19.768249" elapsed="0.005671"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:19.767849" elapsed="0.006129"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.774253" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:19.774038" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:19.767802" elapsed="0.006582"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:19.775673" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:19.774699" elapsed="0.001022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:19.775853" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:19.761056" elapsed="0.015031"/>
</kw>
<msg time="2026-04-05T00:31:19.776300" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:19.746924" elapsed="0.029430"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.788954" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.806776" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.819036" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.819231" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.819399" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.819890" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:19.819682" elapsed="0.000349"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:19.819667" elapsed="0.000439"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.820285" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.820609" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.820955" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:19.819637" elapsed="0.001512"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:19.819498" elapsed="0.001680"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.821322" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:19.821397" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:31:19.821561" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:19.742514" elapsed="0.079077"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:19.823166" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:19.822783" elapsed="0.000587">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:19.823573" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:19.822270" elapsed="0.001328"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.823950" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:19.823705" elapsed="0.000384"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:19.824810" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:19.824289" elapsed="0.000561"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:19.824117" elapsed="0.000843"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:19.823686" elapsed="0.001304"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:19.831280" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:19.825156" elapsed="0.006152"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:19.831361" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:31:19.831613" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:19.821949" elapsed="0.009690"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:19.833160" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:19.832793" elapsed="0.000550">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:19.833576" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:19.832283" elapsed="0.001320"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:19.833811" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:31:19.833676" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:19.833657" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.834033" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.834199" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:19.834264" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:19.836483" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:19.831965" elapsed="0.004546"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:19.838159" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:19.837694" elapsed="0.000512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:19.838822" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:19.838355" elapsed="0.000512"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:19.904165" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:19.904527" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:19.904710" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:19.841252" elapsed="0.063923">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:19.838935" elapsed="0.066433">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.905587" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:19.905403" elapsed="0.000370"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:19.838916" elapsed="0.066916">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.906287" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:19.906421" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:19.906384" elapsed="0.000098"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:19.906367" elapsed="0.000136"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.906644" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:19.906712" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:19.836866" elapsed="0.069955">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:19.906897" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:19.718095" elapsed="0.188898">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:19.907257" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:19.907082" elapsed="0.000245"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:19.907066" elapsed="0.000285"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:19.907383" elapsed="0.000014"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:19.708225" elapsed="0.199272">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:22.961990" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:22.961291" elapsed="0.000755"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:22.963248" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:22.962914" elapsed="0.000417">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:22.963552" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:22.962409" elapsed="0.001190"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:22.964642" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:22.963983" elapsed="0.000711"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:22.965349" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:22.965674" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:22.965066" elapsed="0.000658"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:22.966469" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:22.966063" elapsed="0.000515"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:22.967858" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:22.967547" elapsed="0.000356"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:22.968337" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:22.968066" elapsed="0.000298"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:22.969058" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:22.968752" elapsed="0.000332"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:22.969817" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:22.969598" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:22.969894" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:31:22.970055" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:22.969267" elapsed="0.000812"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:22.970225" elapsed="0.000356"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:22.968618" elapsed="0.002005"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:22.971162" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:22.970865" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:22.971930" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:22.971718" elapsed="0.000238"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:22.972006" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:22.972155" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:22.971370" elapsed="0.000810"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:22.972326" elapsed="0.000351"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:22.970737" elapsed="0.001982"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:22.968436" elapsed="0.004317"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:22.972797" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:31:22.972953" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:22.967138" elapsed="0.005847"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:22.966737" elapsed="0.006306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:22.973312" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:22.973104" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:22.966689" elapsed="0.006875"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:22.974843" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:22.973867" elapsed="0.001023"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:22.975022" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:22.959242" elapsed="0.016011"/>
</kw>
<msg time="2026-04-05T00:31:22.975438" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:22.944926" elapsed="0.030567"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:22.987912" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.000196" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.012516" elapsed="0.000035"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.012715" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.012885" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.013349" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:23.013138" elapsed="0.000375"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:23.013123" elapsed="0.000465"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.013762" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.014073" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.014433" elapsed="0.000026"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:23.013092" elapsed="0.001542"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:23.012960" elapsed="0.001703"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.014808" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:23.014883" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:23.015002" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:22.940548" elapsed="0.074479"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:23.016619" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:23.016224" elapsed="0.000580">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:23.016983" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:23.015735" elapsed="0.001273"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.017316" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:23.017078" elapsed="0.000393"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:23.018153" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:23.017670" elapsed="0.000523"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:23.017500" elapsed="0.000800"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:23.017060" elapsed="0.001264"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:23.024543" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:23.018484" elapsed="0.006091"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:23.024627" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:23.024778" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:23.015378" elapsed="0.009424"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:23.026408" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:23.026046" elapsed="0.000561">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:23.026786" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:23.025561" elapsed="0.001250"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:23.027016" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:31:23.026882" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:23.026864" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.027238" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.027401" elapsed="0.000034"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:23.027482" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:23.029687" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:23.025157" elapsed="0.004556"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:23.031334" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:23.030882" elapsed="0.000499"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:23.032026" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:23.031544" elapsed="0.000528"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:23.092985" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:23.093732" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:23.094147" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:23.034404" elapsed="0.060669">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:23.032139" elapsed="0.063397">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.095997" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:23.095620" elapsed="0.000767"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:23.032121" elapsed="0.064356">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.097540" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:23.097844" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:23.097760" elapsed="0.000179"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:23.097720" elapsed="0.000268"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.098295" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:23.098479" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:23.030066" elapsed="0.068655">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:23.098974" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:22.916541" elapsed="0.182654">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:23.099829" elapsed="0.000103"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:23.099402" elapsed="0.000640"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:23.099363" elapsed="0.000733"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:23.100169" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:22.908668" elapsed="0.191732">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:26.153293" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:26.152673" elapsed="0.000674"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:26.154454" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:26.154158" elapsed="0.000374">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:26.154726" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:26.153711" elapsed="0.001058"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:26.155728" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:26.155102" elapsed="0.000673"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:26.156388" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:26.156668" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:26.156108" elapsed="0.000605"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:26.157410" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:26.157042" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:26.158767" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:26.158506" elapsed="0.000307"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:26.159232" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:26.158966" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:26.159933" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:26.159637" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:26.160718" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:26.160497" elapsed="0.000247"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:26.160797" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:31:26.160955" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:26.160141" elapsed="0.000905"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:26.161201" elapsed="0.000266"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:26.159504" elapsed="0.002006"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:26.162047" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:26.161751" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:26.162920" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:26.162709" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:26.162995" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:26.163144" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:26.162252" elapsed="0.000916"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:26.163325" elapsed="0.000238"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:26.161623" elapsed="0.001981"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:26.159312" elapsed="0.004326"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:26.163681" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:31:26.163834" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:26.158118" elapsed="0.005741"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:26.157683" elapsed="0.006233"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.164184" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:26.163979" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:26.157637" elapsed="0.006708"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:26.165641" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:26.164662" elapsed="0.001026"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:26.165818" elapsed="0.000071"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:26.151072" elapsed="0.014973"/>
</kw>
<msg time="2026-04-05T00:31:26.166211" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:26.137155" elapsed="0.029113"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.179032" elapsed="0.000034"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.191322" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.203538" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.203801" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.203976" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.204530" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:26.204295" elapsed="0.000382"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:26.204275" elapsed="0.000482"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.204934" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.205248" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.205622" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:26.204209" elapsed="0.001613"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:26.204062" elapsed="0.001791"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.205998" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:26.206077" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:31:26.206222" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:26.132842" elapsed="0.073406"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:26.207991" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:26.207571" elapsed="0.000616">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:26.208384" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:26.207002" elapsed="0.001408"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.208753" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:26.208497" elapsed="0.000392"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:26.209767" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:26.209087" elapsed="0.000720"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:26.208916" elapsed="0.001001"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:26.208479" elapsed="0.001462"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:26.216313" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:26.210091" elapsed="0.006250"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:26.216391" elapsed="0.000043"/>
</return>
<msg time="2026-04-05T00:31:26.216561" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:26.206625" elapsed="0.009960"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:26.218155" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:26.217786" elapsed="0.000551">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:26.218720" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:26.217224" elapsed="0.001521"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:26.218950" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:31:26.218816" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:26.218798" elapsed="0.000269"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.219212" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.219378" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:26.219459" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:31:26.221513" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:26.216910" elapsed="0.004629"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:26.223288" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:26.222827" elapsed="0.000508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:26.223947" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:26.223499" elapsed="0.000492"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:26.304924" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:26.305692" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:26.306085" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:26.226232" elapsed="0.080760">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:26.224059" elapsed="0.083353">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.307847" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:26.307518" elapsed="0.000704"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:26.224041" elapsed="0.084238">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.309336" elapsed="0.000057"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:26.309689" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:26.309607" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:26.309567" elapsed="0.000262"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.310132" elapsed="0.000045"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:26.310294" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:26.221896" elapsed="0.088712">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:26.310776" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:26.110273" elapsed="0.200716">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:26.311596" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:26.311187" elapsed="0.000637"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:26.311151" elapsed="0.000726"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:26.311950" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:26.101532" elapsed="0.210634">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:29.367696" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:29.367056" elapsed="0.000696"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:29.368848" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:29.368571" elapsed="0.000354">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:29.369126" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:29.368104" elapsed="0.001067"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:29.370153" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:29.369528" elapsed="0.000676"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:29.370861" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:29.371126" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:29.370600" elapsed="0.000573"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:29.371959" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:29.371588" elapsed="0.000469"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:29.373248" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:29.372983" elapsed="0.000311"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:29.373762" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:29.373467" elapsed="0.000325"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:29.374522" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:29.374164" elapsed="0.000384"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:29.375276" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:29.375054" elapsed="0.000248"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:29.375356" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:31:29.375609" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:29.374736" elapsed="0.000898"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:29.375785" elapsed="0.000243"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:29.374031" elapsed="0.002039"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:29.376646" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:29.376325" elapsed="0.000346"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:29.377384" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:29.377169" elapsed="0.000241"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:29.377477" elapsed="0.000039"/>
</return>
<msg time="2026-04-05T00:31:29.377641" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:29.376856" elapsed="0.000811"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:29.377894" elapsed="0.000226"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:29.376194" elapsed="0.001968"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:29.373854" elapsed="0.004342"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:29.378239" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:29.378405" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:29.372650" elapsed="0.005807"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:29.372218" elapsed="0.006308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.378798" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:29.378587" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:29.372170" elapsed="0.006763"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:29.380123" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:29.379231" elapsed="0.000940"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:29.380302" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:29.365355" elapsed="0.015199"/>
</kw>
<msg time="2026-04-05T00:31:29.380723" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:29.351194" elapsed="0.029584"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.432730" elapsed="0.000065"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.445519" elapsed="0.000033"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.460372" elapsed="0.000033"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.460625" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.460811" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.461348" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:29.461127" elapsed="0.000388"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:29.461108" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.461783" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.462123" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.462577" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:29.461062" elapsed="0.001721"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:29.460900" elapsed="0.001917"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.462965" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:29.463045" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:31:29.463209" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:29.346899" elapsed="0.116338"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:29.464997" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:29.464570" elapsed="0.000626">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:29.465380" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:29.463981" elapsed="0.001424"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.465762" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:29.465500" elapsed="0.000408"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:29.466643" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:29.466110" elapsed="0.000574"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:29.465937" elapsed="0.000856"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:29.465481" elapsed="0.001337"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:29.473151" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:29.466967" elapsed="0.006212"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:29.473230" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:31:29.473389" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:29.463617" elapsed="0.009797"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:29.475041" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:29.474672" elapsed="0.000554">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:29.475405" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:29.474168" elapsed="0.001277"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:29.475653" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:31:29.475518" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:29.475499" elapsed="0.000238"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.475881" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.476046" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:29.476111" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:29.478164" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:29.473840" elapsed="0.004350"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:29.479861" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:29.479383" elapsed="0.000525"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:29.480564" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:29.480057" elapsed="0.000552"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:29.553604" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:29.554494" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:29.554980" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:29.482917" elapsed="0.073146">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:29.480677" elapsed="0.075951">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.557148" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:29.556725" elapsed="0.000918"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:29.480658" elapsed="0.077057">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.559027" elapsed="0.000072"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:29.559387" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:29.559295" elapsed="0.000242"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:29.559249" elapsed="0.000358"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.559951" elapsed="0.000052"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:29.560118" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:29.478569" elapsed="0.081819">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:29.560634" elapsed="0.000043"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:29.321114" elapsed="0.239773">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:29.561585" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:29.561109" elapsed="0.000702"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:29.561066" elapsed="0.000811"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:29.561956" elapsed="0.000035"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:29.313241" elapsed="0.248923">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:32.616134" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:32.615535" elapsed="0.000725"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:32.617323" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:32.617067" elapsed="0.000329">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:32.617617" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:32.616625" elapsed="0.001037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:32.618655" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:32.618001" elapsed="0.000700"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:32.619288" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:32.619556" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:32.619032" elapsed="0.000568"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:32.620289" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:32.619930" elapsed="0.000453"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:32.621651" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:32.621288" elapsed="0.000409"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:32.622119" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:32.621852" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:32.622875" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:32.622564" elapsed="0.000337"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:32.623641" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:32.623403" elapsed="0.000264"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:32.623718" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:31:32.623875" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:32.623087" elapsed="0.000813"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:32.624048" elapsed="0.000240"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:32.622411" elapsed="0.001918"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:32.624963" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:32.624667" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:32.625864" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:32.625652" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:32.625940" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:32.626090" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:32.625319" elapsed="0.000795"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:32.626284" elapsed="0.000251"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:32.624536" elapsed="0.002040"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:32.622198" elapsed="0.004412"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:32.626653" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:31:32.626807" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:32.620963" elapsed="0.005869"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:32.620557" elapsed="0.006334"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.627158" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:32.626951" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:32.620510" elapsed="0.006779"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:32.628565" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:32.627619" elapsed="0.000994"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:32.628747" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:32.613935" elapsed="0.015045"/>
</kw>
<msg time="2026-04-05T00:31:32.629149" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:32.599538" elapsed="0.029665"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.641900" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.654370" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.666786" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.666980" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.667152" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.667644" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:32.667415" elapsed="0.000374"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:32.667399" elapsed="0.000466"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.668042" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.668356" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.668724" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:32.667367" elapsed="0.001555"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:32.667229" elapsed="0.001769"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.669158" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:32.669236" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:32.669358" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:32.595290" elapsed="0.074094"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:32.671058" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:32.670673" elapsed="0.000572">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:32.671440" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:32.670151" elapsed="0.001317"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.671781" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:32.671540" elapsed="0.000377"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:32.672623" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:32.672114" elapsed="0.000549"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:32.671946" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:32.671521" elapsed="0.001273"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:32.679409" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:32.672954" elapsed="0.006497"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:32.679505" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:31:32.679662" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:32.669826" elapsed="0.009861"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:32.681224" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:32.680857" elapsed="0.000550">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:32.681726" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:32.680333" elapsed="0.001418"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:32.681959" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:31:32.681823" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:32.681804" elapsed="0.000238"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.682188" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.682352" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:32.682416" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:31:32.684303" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:32.680011" elapsed="0.004317"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:32.686154" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:32.685694" elapsed="0.000508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:32.686817" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:32.686350" elapsed="0.000514"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:32.759845" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:32.760583" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:32.760993" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:32.689142" elapsed="0.072780">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:32.686931" elapsed="0.075625">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.763002" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:32.762644" elapsed="0.000753"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:32.686913" elapsed="0.076577">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.764586" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:32.764893" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:32.764808" elapsed="0.000182"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:32.764768" elapsed="0.000271"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.765349" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:32.765539" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:32.684717" elapsed="0.081065">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:32.765954" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:32.572827" elapsed="0.193343">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:32.766863" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:32.766464" elapsed="0.000563"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:32.766382" elapsed="0.000698"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:32.767153" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:32.563121" elapsed="0.204249">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:35.821217" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:35.820584" elapsed="0.000686"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:35.822359" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:35.822096" elapsed="0.000362">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:35.822657" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:35.821638" elapsed="0.001063"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:35.823677" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:35.823040" elapsed="0.000685"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:35.824309" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:35.824654" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:35.824060" elapsed="0.000639"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:35.825396" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:35.825035" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:35.826788" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:35.826519" elapsed="0.000316"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:35.827299" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:35.826993" elapsed="0.000332"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:35.828012" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:35.827712" elapsed="0.000327"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:35.828778" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:35.828556" elapsed="0.000248"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:35.828857" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:31:35.829020" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:35.828225" elapsed="0.000819"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:35.829190" elapsed="0.000254"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:35.827578" elapsed="0.001908"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:35.830030" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:35.829729" elapsed="0.000327"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:35.831111" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:35.830886" elapsed="0.000251"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:35.831188" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:35.831346" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:35.830238" elapsed="0.001133"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:35.831545" elapsed="0.000226"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:35.829600" elapsed="0.002212"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:35.827380" elapsed="0.004467"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:35.831890" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:31:35.832050" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:35.826115" elapsed="0.005960"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:35.825671" elapsed="0.006465"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.832401" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:35.832196" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:35.825624" elapsed="0.006925"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:35.833667" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:35.832847" elapsed="0.000870"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:35.833849" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:35.818874" elapsed="0.015208"/>
</kw>
<msg time="2026-04-05T00:31:35.834250" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:35.804630" elapsed="0.029678"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.847209" elapsed="0.000047"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.859955" elapsed="0.000067"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.872691" elapsed="0.000044"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.872944" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.873126" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.873727" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:35.873453" elapsed="0.000441"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:35.873414" elapsed="0.000564"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.874163" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.874551" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.874911" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:35.873373" elapsed="0.001742"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:35.873214" elapsed="0.001933"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.875294" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:35.875376" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:31:35.875581" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:35.800243" elapsed="0.075369"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:35.877495" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:35.877013" elapsed="0.000688">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:35.877891" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:35.876369" elapsed="0.001549"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.878287" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:35.877991" elapsed="0.000472"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:35.879226" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:35.878702" elapsed="0.000567"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:35.878493" elapsed="0.000968"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:35.877972" elapsed="0.001518"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:35.886206" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:35.879644" elapsed="0.006592"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:35.886292" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:31:35.886485" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:35.876008" elapsed="0.010504"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:35.888159" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:35.887768" elapsed="0.000584">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:35.888555" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:35.887245" elapsed="0.001336"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:35.888795" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:31:35.888656" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:35.888637" elapsed="0.000242"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.889026" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.889194" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:35.889261" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:31:35.891292" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:35.886905" elapsed="0.004415"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:35.893105" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:35.892630" elapsed="0.000524"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:35.893976" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:35.893305" elapsed="0.000725"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:35.963628" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:35.964104" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:35.964384" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:35.896342" elapsed="0.068675">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:35.894100" elapsed="0.071197">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.965625" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:35.965351" elapsed="0.000523"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:35.894081" elapsed="0.071830">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.966602" elapsed="0.000038"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:35.966799" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:35.966743" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:35.966717" elapsed="0.000252"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.967168" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:35.967268" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:35.891740" elapsed="0.075704">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:35.967558" elapsed="0.000023"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:35.777869" elapsed="0.189829">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:35.968078" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:35.967829" elapsed="0.000352"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:35.967805" elapsed="0.000409"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:35.968261" elapsed="0.000020"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:35.768345" elapsed="0.200055">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.021840" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:39.021212" elapsed="0.000681"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:39.022969" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:39.022703" elapsed="0.000345">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:39.023243" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:39.022241" elapsed="0.001045"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.024239" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:39.023643" elapsed="0.000645"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:39.024919" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:39.025179" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:39.024639" elapsed="0.000584"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.025943" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:39.025575" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.027197" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:39.026937" elapsed="0.000306"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.027738" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:39.027400" elapsed="0.000363"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.028439" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:39.028128" elapsed="0.000395"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:39.029281" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:39.029056" elapsed="0.000251"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:39.029360" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:31:39.029544" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:39.028724" elapsed="0.000845"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:39.029718" elapsed="0.000245"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:39.027996" elapsed="0.002008"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.030562" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:39.030246" elapsed="0.000341"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:39.031620" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:39.031273" elapsed="0.000373"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:39.031698" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:39.031851" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:39.030768" elapsed="0.001113"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:39.032057" elapsed="0.000223"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:39.030118" elapsed="0.002203"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:39.027821" elapsed="0.004534"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:39.032399" elapsed="0.000042"/>
</return>
<msg time="2026-04-05T00:31:39.032571" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:39.026612" elapsed="0.005985"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:39.026195" elapsed="0.006699"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.033171" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:39.032962" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:39.026149" elapsed="0.007153"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.034410" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:39.033625" elapsed="0.000848"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:39.034604" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:39.019656" elapsed="0.015181"/>
</kw>
<msg time="2026-04-05T00:31:39.035009" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:39.005693" elapsed="0.029372"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.047586" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.060031" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.072518" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.072711" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.072883" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.073360" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:39.073147" elapsed="0.000375"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:39.073131" elapsed="0.000467"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.073772" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.074128" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.074491" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:39.073098" elapsed="0.001595"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:39.072963" elapsed="0.001761"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.074874" elapsed="0.000025"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:39.074967" elapsed="0.000020"/>
</return>
<msg time="2026-04-05T00:31:39.075100" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:39.001443" elapsed="0.073683"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:39.076785" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:39.076354" elapsed="0.000631">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:39.077167" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:39.075831" elapsed="0.001361"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.077527" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:39.077264" elapsed="0.000401"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.078355" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:39.077864" elapsed="0.000530"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:39.077693" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:39.077245" elapsed="0.001303"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.085159" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:39.078696" elapsed="0.006490"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:39.085237" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:39.085389" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:39.075504" elapsed="0.009909"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:39.086941" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:39.086577" elapsed="0.000548">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:39.087357" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:39.086073" elapsed="0.001308"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:39.087729" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:31:39.087592" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:39.087572" elapsed="0.000240"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.087954" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.088143" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:39.088210" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:39.090103" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:39.085754" elapsed="0.004374"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.091913" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:39.091296" elapsed="0.000664"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.092607" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:39.092131" elapsed="0.000522"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:39.177693" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:39.178384" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:39.178824" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:39.094886" elapsed="0.084891">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:39.092721" elapsed="0.087495">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.180683" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:39.180298" elapsed="0.000808"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:39.092702" elapsed="0.088468">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.182225" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:39.182594" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:39.182507" elapsed="0.000181"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:39.182406" elapsed="0.000331"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.183064" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:39.183220" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:39.090499" elapsed="0.092993">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:39.183665" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:38.979029" elapsed="0.204964">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.184640" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:39.184215" elapsed="0.000589"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:39.184178" elapsed="0.000683"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:39.184944" elapsed="0.000038"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:38.969520" elapsed="0.215667">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<msg time="2026-04-05T00:31:39.185400" level="FAIL">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${timeout}</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-05T00:31:06.951352" elapsed="32.234286">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${mapping}</arg>
<doc>Checks weather the device was mounted.</doc>
<status status="FAIL" start="2026-04-05T00:31:06.931629" elapsed="32.254273">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.195804" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${mod_session}</var>
<arg>member_index=${idx}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.196151" elapsed="0.000025"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}netconf-state</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${mod_session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.196333" elapsed="0.000021"/>
</kw>
<var name="${idx}"/>
<status status="NOT RUN" start="2026-04-05T00:31:39.195962" elapsed="0.000436"/>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:39.195896" elapsed="0.000545"/>
</for>
<kw name="Remove_Netconf_Device" type="TEARDOWN">
<kw name="Remove_Device_From_Netconf" owner="NetconfKeywords">
<kw name="Pop From Dictionary" owner="Collections">
<msg time="2026-04-05T00:31:39.197838" level="INFO">${device_type} = full-uri-device</msg>
<var>${device_type}</var>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<doc>Pops the given ``key`` from the ``dictionary`` and returns its value.</doc>
<status status="PASS" start="2026-04-05T00:31:39.197575" elapsed="0.000289"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.198475" level="INFO">${mapping} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:39.198024" elapsed="0.000478"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:39.216810" elapsed="0.000849"/>
</kw>
<msg time="2026-04-05T00:31:39.217884" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:39.216450" elapsed="0.001503"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:39.216021" elapsed="0.002006"/>
</kw>
<msg time="2026-04-05T00:31:39.218069" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:39.207454" elapsed="0.010670"/>
</kw>
<msg time="2026-04-05T00:31:39.218225" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:39.207088" elapsed="0.011161"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.262941" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:39.262265" elapsed="0.000853"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:39.264727" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:39.264205" elapsed="0.000632">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:39.264962" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:39.263445" elapsed="0.001625"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.266519" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:39.265415" elapsed="0.001214"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:39.267223" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:39.267473" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:39.267010" elapsed="0.000573"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.268380" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:39.267886" elapsed="0.000573"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.270408" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:39.270145" elapsed="0.000330"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.270943" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:39.270676" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.271828" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:39.271411" elapsed="0.000442"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:39.272613" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:39.272377" elapsed="0.000262"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:39.272689" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:31:39.272843" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:39.272036" elapsed="0.000831"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:39.273019" elapsed="0.000228"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:39.271278" elapsed="0.002010"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.273838" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:39.273542" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:39.274622" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:39.274390" elapsed="0.000257"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:39.274696" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:39.274844" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:39.274054" elapsed="0.000814"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:39.275013" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:39.273397" elapsed="0.001876"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:39.271067" elapsed="0.004261"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:39.275392" elapsed="0.000226"/>
</return>
<msg time="2026-04-05T00:31:39.275923" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:39.269315" elapsed="0.006696"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:39.268639" elapsed="0.007448"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.276384" elapsed="0.000101"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:39.276167" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:39.268618" elapsed="0.008057"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.277777" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:39.276826" elapsed="0.002042"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:39.279102" elapsed="0.000033"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:39.261262" elapsed="0.017992"/>
</kw>
<msg time="2026-04-05T00:31:39.279309" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:39.248233" elapsed="0.031139"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.292108" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.304540" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.316906" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.317100" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.317273" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.317721" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:39.317578" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:39.317562" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.317940" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.318103" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.318264" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:39.317526" elapsed="0.000791"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:39.317349" elapsed="0.000994"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.318504" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:39.318582" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:39.318705" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:39.242525" elapsed="0.076205"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.319915" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:39.319653" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:39.333959" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:39.334044" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:39.334184" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:31:39.322079" elapsed="0.012143"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:39.320028" elapsed="0.014254"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.334577" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:39.334321" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:39.320010" elapsed="0.014692"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.340275" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:39.336447" elapsed="0.003893"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:39.336104" elapsed="0.004288"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:39.336076" elapsed="0.004374"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.344564" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:39.340856" elapsed="0.003776"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:39.340535" elapsed="0.004147"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:39.340510" elapsed="0.004207"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.345566" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:39.344958" elapsed="0.000648"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.346086" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:39.345709" elapsed="0.000460"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.346992" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:39.346419" elapsed="0.000611"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:39.346202" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:39.345683" elapsed="0.001426"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.347865" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:39.347323" elapsed="0.000579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:39.348314" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:39.347998" elapsed="0.000394"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:39.349251" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:39.348664" elapsed="0.000624"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:39.348445" elapsed="0.000893"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:39.347973" elapsed="0.001394"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:39.349595" elapsed="0.000612"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:31:39.350750" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:39.350369" elapsed="0.000408"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:31:39.350929" elapsed="0.006618"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:31:39.335452" elapsed="0.022187"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:31:39.357705" elapsed="0.000053"/>
</return>
<msg time="2026-04-05T00:31:39.360928" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:31:39.319029" elapsed="0.041939"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:31:39.361162" elapsed="0.000040"/>
</return>
<arg>${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>${mapping}</arg>
<arg>session=${session}</arg>
<arg>location=${location}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:31:39.218482" elapsed="0.142852"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf to deconfigure the specified device</doc>
<status status="PASS" start="2026-04-05T00:31:39.197110" elapsed="0.164333"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<doc>Removes configured device</doc>
<status status="PASS" start="2026-04-05T00:31:39.196642" elapsed="0.164880"/>
</kw>
<arg>${idx}</arg>
<doc>Netconf readines for a node is done by creating a netconf device connected to that node
and performing GET operation got from the device's mount point.</doc>
<status status="FAIL" start="2026-04-05T00:31:06.596151" elapsed="32.765500">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<var name="${idx}">1</var>
<status status="FAIL" start="2026-04-05T00:31:06.595739" elapsed="32.766000">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="FAIL" start="2026-04-05T00:31:06.595375" elapsed="32.766447">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</for>
<doc>Verifies the netconf readiness for every odl node.</doc>
<status status="FAIL" start="2026-04-05T00:31:06.594880" elapsed="32.767075">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Check_Netconf_Topology_Ready">
<for flavor="IN">
<iter>
<kw name="Verify_Netconf_Topology_Ready_For_Node">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.366288" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:40.365572" elapsed="0.000799"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:31:40.366513" elapsed="0.000070"/>
</return>
<msg time="2026-04-05T00:31:40.366852" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${node_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:31:40.364780" elapsed="0.002126"/>
</kw>
<kw name="Configure_Netconf_Device">
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:40.390399" elapsed="0.000863"/>
</kw>
<msg time="2026-04-05T00:31:40.391403" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:40.389949" elapsed="0.001528"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:40.389563" elapsed="0.001992"/>
</kw>
<msg time="2026-04-05T00:31:40.391597" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:40.381042" elapsed="0.010600"/>
</kw>
<msg time="2026-04-05T00:31:40.391744" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:40.380720" elapsed="0.011048"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.392666" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.391931" elapsed="0.000763"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.393110" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.392790" elapsed="0.000385"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.426078" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:40.425675" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:40.426976" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:40.426725" elapsed="0.000327">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:40.427146" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:40.426366" elapsed="0.000805"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.427790" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:40.427382" elapsed="0.000435"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:40.428164" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:40.428307" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:40.428026" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.428801" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:40.428552" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.429883" level="INFO">mapping: {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:40.429596" elapsed="0.000332"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.430340" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.430082" elapsed="0.000284"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.431055" level="INFO">${value} = 10.30.170.184</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:40.430757" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:40.431812" level="INFO">${encoded} = 10.30.170.184</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.431593" elapsed="0.000245"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:40.431892" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:31:40.432043" level="INFO">${encoded_value} = 10.30.170.184</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:40.431262" elapsed="0.000804"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.432215" elapsed="0.000247"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.184</var>
<status status="PASS" start="2026-04-05T00:31:40.430627" elapsed="0.001876"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.433043" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:40.432746" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:40.433956" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.433737" elapsed="0.000245"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:40.434032" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:40.434190" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:40.433395" elapsed="0.000820"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.434363" elapsed="0.000256"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:40.432617" elapsed="0.002043"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.435204" level="INFO">${value} = 2830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:40.434907" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:40.435945" level="INFO">${encoded} = 2830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.435737" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:40.436020" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:40.436167" level="INFO">${encoded_value} = 2830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:40.435408" elapsed="0.000784"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.436373" elapsed="0.000239"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">2830</var>
<status status="PASS" start="2026-04-05T00:31:40.434772" elapsed="0.001882"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.437189" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:40.436893" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:40.437943" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.437732" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:40.438018" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:40.438167" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:40.437392" elapsed="0.000799"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.438337" elapsed="0.000256"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:31:40.436765" elapsed="0.001869"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.439172" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:40.438875" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:40.439913" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.439705" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:40.439987" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:40.440134" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:40.439377" elapsed="0.000781"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.440304" elapsed="0.000237"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:31:40.438746" elapsed="0.001836"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.441120" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:40.440822" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:40.441887" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.441675" elapsed="0.000238"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:40.441964" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:40.442112" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:40.441323" elapsed="0.000814"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.442283" elapsed="0.000241"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:31:40.440693" elapsed="0.001873"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.443103" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:40.442807" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:40.444034" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.443646" elapsed="0.000414"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:40.444109" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:40.444259" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:40.443309" elapsed="0.000974"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.444442" elapsed="0.000223"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:31:40.442678" elapsed="0.002027"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.445237" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:40.444943" elapsed="0.000319"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:40.446001" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.445794" elapsed="0.000232"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:40.446074" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:40.446221" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:40.445459" elapsed="0.000787"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.446393" elapsed="0.000278"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:40.444815" elapsed="0.001897"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:40.430413" elapsed="0.016333"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:40.446788" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:31:40.446950" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:40.429261" elapsed="0.017715"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:40.428963" elapsed="0.018044"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.447176" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.447032" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:40.428943" elapsed="0.018309"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.448160" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:40.447467" elapsed="0.000720"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:40.448283" elapsed="0.000054"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:40.424690" elapsed="0.023888"/>
</kw>
<msg time="2026-04-05T00:31:40.448667" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:40.411468" elapsed="0.037295"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.470451" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.492528" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.514247" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.514504" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.514699" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.515259" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.515000" elapsed="0.000344"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:40.514985" elapsed="0.000497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.515686" elapsed="0.000044"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.516010" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.516332" elapsed="0.000043"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:40.514953" elapsed="0.001595"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:40.514822" elapsed="0.001788"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.516761" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:40.516932" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:31:40.517057" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:40.407078" elapsed="0.110005"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.544949" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:40.544557" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:40.545753" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:40.545536" elapsed="0.000281">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:40.545914" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:40.545188" elapsed="0.000749"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.546551" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:40.546147" elapsed="0.000431"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:40.546919" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:40.547046" level="INFO">${template} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVI...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:40.546784" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.547538" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;$DEVICE_USER&lt;/username&gt;
      &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:40.547278" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:31:40.548000" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.547706" elapsed="0.000354"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.548567" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:40.548225" elapsed="0.000370"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:40.548085" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:40.547685" elapsed="0.000965"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.549576" level="INFO">${final_text} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:40.548847" elapsed="0.000759"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:40.549702" elapsed="0.000054"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:40.543567" elapsed="0.006412"/>
</kw>
<msg time="2026-04-05T00:31:40.550103" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:40.530095" elapsed="0.020104"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.571816" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.593905" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.615595" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.615853" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.616047" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.616619" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.616343" elapsed="0.000360"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:40.616328" elapsed="0.000460"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.616985" elapsed="0.000045"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.617308" elapsed="0.000043"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.617859" elapsed="0.000044"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:40.616297" elapsed="0.001727"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:40.616170" elapsed="0.001913"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.618229" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:40.618380" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:31:40.618522" level="INFO">${data} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:40.527230" elapsed="0.091321"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:40.621147" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:40.620617" elapsed="0.000647">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:40.621394" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:40.619268" elapsed="0.002165"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.621937" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.621592" elapsed="0.000501"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.623283" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:40.622655" elapsed="0.000668"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:40.622120" elapsed="0.001282"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:40.621571" elapsed="0.001869"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.626375" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:40.623590" elapsed="0.002812"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:40.626516" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:31:40.626673" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:40.618929" elapsed="0.007768"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.628667" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:40.628170" elapsed="0.000559"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.629358" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:40.628893" elapsed="0.000547"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.630077" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:40.629606" elapsed="0.000532"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.630787" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:40.630300" elapsed="0.000547"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:31:40.632343" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:31:40.631768" elapsed="0.000769"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:31:40.633324" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:31:40.632801" elapsed="0.000636"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.633696" elapsed="0.000473"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.635121" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:40.634447" elapsed="0.000868"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:31:40.635401" elapsed="0.000046"/>
</return>
<msg time="2026-04-05T00:31:40.635710" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:31:40.631062" elapsed="0.004674"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:40.657118" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '439', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt; 
 </msg>
<msg time="2026-04-05T00:31:40.657231" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:40.657453" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:31:40.643842" elapsed="0.013671"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:40.635846" elapsed="0.021830"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.657965" elapsed="0.000103"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.657716" elapsed="0.000581"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:40.635826" elapsed="0.022508"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.664270" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:40.660693" elapsed="0.003667"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:40.660034" elapsed="0.004418"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:40.659988" elapsed="0.004563"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.668712" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:40.665306" elapsed="0.003500"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:40.664669" elapsed="0.004209"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:40.664628" elapsed="0.004344"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.671108" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:40.669677" elapsed="0.001596"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.672160" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.671490" elapsed="0.000801"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.673529" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:40.672873" elapsed="0.000707"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:40.672386" elapsed="0.001262"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:40.671440" elapsed="0.002296"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.675907" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:40.674483" elapsed="0.001561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.676664" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.676177" elapsed="0.000582"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.677620" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:40.677156" elapsed="0.000499"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:40.676827" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:40.676146" elapsed="0.001623"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:40.678015" elapsed="0.000906"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:31:40.679852" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:40.679201" elapsed="0.000748"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.680212" elapsed="0.002691"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:31:40.658986" elapsed="0.024023"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:31:40.683249" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-05T00:31:40.683094" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:40.683075" elapsed="0.000396"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.683619" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:40.683730" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:31:40.686094" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:31:40.627102" elapsed="0.059018"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:31:40.686184" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:31:40.686336" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:31:40.396263" elapsed="0.290097"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.686704" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.686472" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:40.686454" elapsed="0.000386"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:31:40.686874" elapsed="0.000027"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:31:40.393447" elapsed="0.293550"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:40.393202" elapsed="0.293838"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:40.392769" elapsed="0.294293"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.687227" elapsed="0.000263"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=full-uri-device</arg>
<arg>device_port=${DEVICE_PORT}</arg>
<arg>device_address=${device_ip}</arg>
<arg>device_user=admin</arg>
<arg>device_password=admin</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:31:40.368547" elapsed="0.319008"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${ODL_SYSTEM_${node_index}_IP}</arg>
<doc>Configures the device via REST api.</doc>
<status status="PASS" start="2026-04-05T00:31:40.367175" elapsed="0.320448"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.688222" level="INFO">&amp;{mapping} = { DEVICE_NAME=test-device | RESTCONF_ROOT=/rests }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.687783" elapsed="0.000467"/>
</kw>
<kw name="Wait_Netconf_Device_Mounted">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:40.706742" elapsed="0.000807"/>
</kw>
<msg time="2026-04-05T00:31:40.707600" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:40.706368" elapsed="0.001285"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:40.705985" elapsed="0.001742"/>
</kw>
<msg time="2026-04-05T00:31:40.707769" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:40.697494" elapsed="0.010320"/>
</kw>
<msg time="2026-04-05T00:31:40.707915" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:40.697160" elapsed="0.010780"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.755706" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:40.755111" elapsed="0.000644"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:40.756756" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:40.756536" elapsed="0.000285">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:40.757013" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:40.756085" elapsed="0.000971"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.758003" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:40.757387" elapsed="0.000663"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:40.758646" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:40.758872" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:40.758377" elapsed="0.000540"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.759612" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:40.759243" elapsed="0.000464"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.760872" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:40.760614" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.761331" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.761071" elapsed="0.000286"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.762066" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:40.761771" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:40.762842" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.762630" elapsed="0.000238"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:40.762918" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:31:40.763069" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:40.762274" elapsed="0.000820"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.763238" elapsed="0.000239"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:40.761640" elapsed="0.001878"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.764048" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:40.763755" elapsed="0.000318"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:40.764928" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.764721" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:40.765003" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:31:40.765151" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:40.764392" elapsed="0.000784"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:40.765322" elapsed="0.000381"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:40.763628" elapsed="0.002116"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:40.761406" elapsed="0.004372"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:40.765820" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:40.765975" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:40.760232" elapsed="0.005768"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:40.759852" elapsed="0.006205"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.766321" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.766118" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:40.759811" elapsed="0.006688"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.767580" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:40.766804" elapsed="0.000822"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:40.767754" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:40.753561" elapsed="0.014420"/>
</kw>
<msg time="2026-04-05T00:31:40.768145" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:40.739714" elapsed="0.028484"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.780822" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.793237" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.805864" elapsed="0.000035"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.806085" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.806257" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.806756" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.806535" elapsed="0.000370"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:40.806520" elapsed="0.000462"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.807155" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.807489" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.807857" elapsed="0.000027"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:40.806487" elapsed="0.001576"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:40.806332" elapsed="0.001760"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.808237" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:40.808313" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:40.808453" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:40.735512" elapsed="0.072968"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:40.810081" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:40.809668" elapsed="0.000615">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:40.810497" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:40.809158" elapsed="0.001365"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.810842" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.810593" elapsed="0.000388"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.811683" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:40.811173" elapsed="0.000549"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:40.811009" elapsed="0.000837"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:40.810575" elapsed="0.001304"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.818238" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:40.812031" elapsed="0.006233"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:40.818316" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:40.818488" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:40.808833" elapsed="0.009680"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:40.820087" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:40.819701" elapsed="0.000567">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:40.820576" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:40.819197" elapsed="0.001405"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:40.820808" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:31:40.820675" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:40.820657" elapsed="0.000241"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.821047" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.821214" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:40.821278" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:40.823213" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:40.818881" elapsed="0.004359"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.825068" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:40.824603" elapsed="0.000512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:40.825734" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:40.825264" elapsed="0.000516"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:40.842284" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:40.842637" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=503, reason=Service Unavailable 
 headers={'Content-Type': 'application/xml', 'Content-Length': '433'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;protocol&lt;/error-type&gt;&lt;error-path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology/a:topology[a:topology-id='topology-netconf']/a:node[a:node-id='test-device']&lt;/error-path&gt;&lt;error-message&gt;Mount point does not exist&lt;/error-message&gt;&lt;error-tag&gt;resource-denied-transport&lt;/error-tag&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:40.842818" level="FAIL">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:40.828041" elapsed="0.015206">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:40.825875" elapsed="0.017577">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.843650" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.843489" elapsed="0.000333"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:40.825851" elapsed="0.017997">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.844301" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:40.844474" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:40.844399" elapsed="0.000119"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:40.844382" elapsed="0.000159"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.844685" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:40.844756" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:40.823615" elapsed="0.021282">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:40.844979" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:40.713239" elapsed="0.131839">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:40.845348" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:40.845172" elapsed="0.000263"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:40.845154" elapsed="0.000307"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:40.845494" elapsed="0.000015"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:40.708721" elapsed="0.136872">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:43.902854" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:43.902192" elapsed="0.000717"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:43.904052" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:43.903755" elapsed="0.000373">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:43.904345" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:43.903263" elapsed="0.001128"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:43.905381" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:43.904762" elapsed="0.000695"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:43.906052" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:43.906450" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:43.905800" elapsed="0.000707"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:43.907224" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:43.906859" elapsed="0.000477"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:43.908695" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:43.908407" elapsed="0.000333"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:43.909166" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:43.908898" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:43.909884" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:43.909584" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:43.910756" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:43.910522" elapsed="0.000261"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:43.910837" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:31:43.911066" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:43.910129" elapsed="0.000962"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:43.911240" elapsed="0.000330"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:43.909451" elapsed="0.002170"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:43.912196" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:43.911868" elapsed="0.000354"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:43.913163" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:43.912929" elapsed="0.000261"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:43.913249" elapsed="0.000041"/>
</return>
<msg time="2026-04-05T00:31:43.913414" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:43.912433" elapsed="0.001031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:43.913622" elapsed="0.000238"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:43.911737" elapsed="0.002165"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:43.909259" elapsed="0.004677"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:43.913981" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:31:43.914184" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:43.908078" elapsed="0.006136"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:43.907650" elapsed="0.006632"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:43.914601" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:43.914352" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:43.907603" elapsed="0.007138"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:43.915941" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:43.915068" elapsed="0.000921"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:43.916122" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:43.900560" elapsed="0.015793"/>
</kw>
<msg time="2026-04-05T00:31:43.916559" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:43.885905" elapsed="0.030709"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:43.929445" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:43.942177" elapsed="0.000035"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:43.954795" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:43.955062" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:43.955237" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:43.955750" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:43.955535" elapsed="0.000378"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:43.955519" elapsed="0.000472"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:43.956168" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:43.956501" elapsed="0.000026"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:43.956864" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:43.955481" elapsed="0.001582"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:43.955320" elapsed="0.001773"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:43.957240" elapsed="0.000031"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:43.957328" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:31:43.957482" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:43.881604" elapsed="0.075907"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:43.959265" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:43.958842" elapsed="0.000648">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:43.959686" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:43.958295" elapsed="0.001416"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:43.960061" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:43.959797" elapsed="0.000403"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:43.960940" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:43.960415" elapsed="0.000565"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:43.960227" elapsed="0.000862"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:43.959778" elapsed="0.001335"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:43.967797" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:43.961262" elapsed="0.006563"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:43.967877" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:31:43.968046" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:43.957918" elapsed="0.010153"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:43.969693" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:43.969307" elapsed="0.000698">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:43.970187" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:43.968819" elapsed="0.001393"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:43.970437" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:31:43.970285" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:43.970266" elapsed="0.000295"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:43.970709" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:43.970882" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:43.970961" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:31:43.973061" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:43.968403" elapsed="0.004684"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:43.974880" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:43.974387" elapsed="0.000540"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:43.975543" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:43.975078" elapsed="0.000511"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:44.050723" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:44.051416" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:44.051890" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:43.978065" elapsed="0.074763">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:43.975657" elapsed="0.077659">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:44.053841" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:44.053416" elapsed="0.000813"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:43.975639" elapsed="0.078651">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:44.055330" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:44.055696" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:44.055613" elapsed="0.000176"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:44.055572" elapsed="0.000265"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:44.056143" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:44.056296" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:43.973475" elapsed="0.083091">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:44.056736" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:43.857006" elapsed="0.199962">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:44.057641" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:44.057173" elapsed="0.000733"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:44.057135" elapsed="0.000840"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:44.058049" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:43.846706" elapsed="0.211581">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:47.113763" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:47.113102" elapsed="0.000715"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:47.114919" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:47.114641" elapsed="0.000358">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:47.115197" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:47.114164" elapsed="0.001076"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:47.116195" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:47.115596" elapsed="0.000645"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:47.116849" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:47.117171" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:47.116596" elapsed="0.000621"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:47.117957" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:47.117591" elapsed="0.000465"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:47.119231" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:47.118970" elapsed="0.000306"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:47.119719" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:47.119447" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:47.120414" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:47.120116" elapsed="0.000338"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:47.121182" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:47.120959" elapsed="0.000249"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:47.121261" elapsed="0.000053"/>
</return>
<msg time="2026-04-05T00:31:47.121466" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:47.120641" elapsed="0.000851"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:47.121643" elapsed="0.000249"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:47.119982" elapsed="0.001951"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:47.122615" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:47.122175" elapsed="0.000467"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:47.123524" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:47.123294" elapsed="0.000255"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:47.123600" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:47.123749" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:47.122825" elapsed="0.000948"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:47.123982" elapsed="0.000225"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:47.122047" elapsed="0.002200"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:47.119804" elapsed="0.004477"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:47.124325" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:47.124498" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:47.118647" elapsed="0.005876"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:47.118216" elapsed="0.006366"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.124849" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:47.124642" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:47.118167" elapsed="0.006815"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:47.126118" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:47.125308" elapsed="0.000858"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:47.126298" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:47.111557" elapsed="0.015088"/>
</kw>
<msg time="2026-04-05T00:31:47.126818" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:47.097312" elapsed="0.029561"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.139329" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.151676" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.164044" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.164239" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.164409" elapsed="0.000034"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.164894" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:47.164685" elapsed="0.000351"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:47.164670" elapsed="0.000453"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.165302" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.165635" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.166030" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:47.164637" elapsed="0.001592"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:47.164502" elapsed="0.001756"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.166403" elapsed="0.000037"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:47.166498" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:31:47.166623" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:47.093062" elapsed="0.073587"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:47.168239" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:47.167856" elapsed="0.000589">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:47.168628" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:47.167328" elapsed="0.001325"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.168968" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:47.168724" elapsed="0.000389"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:47.169833" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:47.169313" elapsed="0.000559"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:47.169142" elapsed="0.000839"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:47.168706" elapsed="0.001298"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:47.176402" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:47.170155" elapsed="0.006288"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:47.176496" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:31:47.176649" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:47.167004" elapsed="0.009670"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:47.178291" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:47.177924" elapsed="0.000568">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:47.178669" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:47.177335" elapsed="0.001360"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:47.178899" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:31:47.178765" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:47.178747" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.179123" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.179287" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:47.179351" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:31:47.181265" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:47.176994" elapsed="0.004297"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:47.183126" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:47.182669" elapsed="0.000504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:47.183971" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:47.183322" elapsed="0.000696"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:47.256140" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:47.257010" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:47.257458" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:47.186454" elapsed="0.071958">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:47.184085" elapsed="0.074786">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.259298" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:47.258950" elapsed="0.000766"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:47.184067" elapsed="0.075709">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.260839" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:47.261143" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:47.261059" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:47.261019" elapsed="0.000266"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.261627" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:47.261785" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:47.181836" elapsed="0.080187">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:47.262190" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:47.070832" elapsed="0.191572">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:47.263031" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:47.262641" elapsed="0.000548"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:47.262603" elapsed="0.000639"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:47.263315" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:47.059351" elapsed="0.204214">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:50.325173" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:50.324544" elapsed="0.000764"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:50.326506" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:50.326189" elapsed="0.000397">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:50.326791" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:50.325711" elapsed="0.001125"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:50.327844" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:50.327184" elapsed="0.000709"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:50.328521" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:50.328805" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:50.328236" elapsed="0.000617"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:50.329592" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:50.329191" elapsed="0.000502"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:50.330928" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:50.330659" elapsed="0.000316"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:50.331530" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:50.331134" elapsed="0.000426"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:50.332255" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:50.331941" elapsed="0.000341"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:50.333071" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:50.332844" elapsed="0.000254"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:50.333152" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:31:50.333326" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:50.332506" elapsed="0.000854"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:50.333532" elapsed="0.000326"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:50.331804" elapsed="0.002100"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:50.334500" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:50.334159" elapsed="0.000367"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:50.335414" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:50.335183" elapsed="0.000373"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:50.335609" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:31:50.335768" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:50.334712" elapsed="0.001081"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:50.335945" elapsed="0.000233"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:50.334021" elapsed="0.002198"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:50.331617" elapsed="0.004638"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:50.336297" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:31:50.336485" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:50.330298" elapsed="0.006213"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:50.329886" elapsed="0.006684"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.336842" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:50.336632" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:50.329838" elapsed="0.007138"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:50.338162" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:50.337278" elapsed="0.000933"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:50.338355" elapsed="0.000093"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:50.322902" elapsed="0.015716"/>
</kw>
<msg time="2026-04-05T00:31:50.338790" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:50.306094" elapsed="0.032752"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.351418" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.366000" elapsed="0.000056"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.380016" elapsed="0.000038"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.380259" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.380470" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.381013" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:50.380791" elapsed="0.000371"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:50.380772" elapsed="0.000472"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.381455" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.381796" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.382147" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:50.380726" elapsed="0.001632"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:50.380562" elapsed="0.001831"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.382564" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:50.382645" elapsed="0.000019"/>
</return>
<msg time="2026-04-05T00:31:50.382811" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:50.299994" elapsed="0.082846"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:50.384799" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:50.384317" elapsed="0.000686">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:50.385187" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:50.383751" elapsed="0.001462"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.385581" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:50.385284" elapsed="0.000436"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:50.386439" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:50.385925" elapsed="0.000557"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:50.385748" elapsed="0.000846"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:50.385266" elapsed="0.001352"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:50.393095" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:50.386769" elapsed="0.006354"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:50.393175" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:31:50.393331" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:50.383295" elapsed="0.010060"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:50.394974" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:50.394603" elapsed="0.000554">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:50.395333" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:50.394099" elapsed="0.001260"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:50.395583" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:31:50.395446" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:50.395412" elapsed="0.000253"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.395806" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.395973" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:50.396040" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:50.398080" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:50.393774" elapsed="0.004332"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:50.399766" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:50.399286" elapsed="0.000527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:50.400412" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:50.399962" elapsed="0.000514"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:50.474137" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:50.474864" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:50.475264" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:50.402888" elapsed="0.073300">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:50.400543" elapsed="0.076184">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.477147" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:50.476807" elapsed="0.000779"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:50.400525" elapsed="0.077122">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.478695" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:50.478998" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:50.478914" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:50.478875" elapsed="0.000266"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.479481" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:50.479640" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:50.398477" elapsed="0.081403">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:50.480050" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:50.275615" elapsed="0.204654">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:50.480898" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:50.480506" elapsed="0.000553"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:50.480466" elapsed="0.000645"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:50.481183" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:50.264697" elapsed="0.216782">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:53.538801" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:53.538175" elapsed="0.000679"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:53.539922" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:53.539669" elapsed="0.000325">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:53.540194" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:53.539206" elapsed="0.001032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:53.541214" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:53.540613" elapsed="0.000649"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:53.541902" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:53.542276" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:53.541628" elapsed="0.000695"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:53.543042" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:53.542677" elapsed="0.000465"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:53.544303" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:53.544042" elapsed="0.000308"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:53.544842" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:53.544570" elapsed="0.000298"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:53.545543" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:53.545228" elapsed="0.000341"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:53.546301" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:53.546081" elapsed="0.000245"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:53.546379" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:31:53.546553" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:53.545766" elapsed="0.000812"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:53.546727" elapsed="0.000236"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:53.545096" elapsed="0.001908"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:53.547559" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:53.547246" elapsed="0.000339"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:53.548567" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:53.548222" elapsed="0.000374"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:53.548648" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:31:53.548805" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:53.547767" elapsed="0.001063"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:53.548984" elapsed="0.000224"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:53.547117" elapsed="0.002132"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:53.544923" elapsed="0.004361"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:53.549326" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:31:53.549496" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:53.543716" elapsed="0.005806"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:53.543299" elapsed="0.006282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.549892" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:53.549669" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:53.543253" elapsed="0.006774"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:53.551121" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:53.550327" elapsed="0.000842"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:53.551304" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:53.536573" elapsed="0.014986"/>
</kw>
<msg time="2026-04-05T00:31:53.551733" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:53.522529" elapsed="0.029259"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.564291" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.576755" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.589038" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.589226" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.589398" elapsed="0.000040"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.589916" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:53.589704" elapsed="0.000355"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:53.589689" elapsed="0.000445"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.590308" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.590636" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.590982" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:53.589651" elapsed="0.001526"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:53.589496" elapsed="0.001710"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.591351" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:53.591442" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:31:53.591564" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:53.518346" elapsed="0.073244"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:53.593136" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:53.592769" elapsed="0.000550">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:53.593527" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:53.592257" elapsed="0.001296"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.593875" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:53.593625" elapsed="0.000384"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:53.594753" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:53.594204" elapsed="0.000589"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:53.594037" elapsed="0.000895"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:53.593606" elapsed="0.001352"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:53.601302" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:53.595108" elapsed="0.006221"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:53.601381" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:53.601614" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:53.591940" elapsed="0.009699"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:53.603142" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:53.602781" elapsed="0.000543">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:53.603517" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:53.602270" elapsed="0.001272"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:53.603748" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:31:53.603614" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:53.603596" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.603972" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.604137" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:53.604202" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:53.606241" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:53.601956" elapsed="0.004311"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:53.607902" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:53.607450" elapsed="0.000499"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:53.608561" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:53.608097" elapsed="0.000510"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:53.684413" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:53.685143" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:53.685608" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:53.611003" elapsed="0.075521">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:53.608674" elapsed="0.078270">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.687360" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:53.687022" elapsed="0.000754"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:53.608655" elapsed="0.079180">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.688856" elapsed="0.000058"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:53.689154" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:53.689072" elapsed="0.000272"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:53.689033" elapsed="0.000366"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.689792" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:53.689947" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:53.606633" elapsed="0.083553">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:53.690354" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:53.490870" elapsed="0.199740">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:53.691199" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:53.690813" elapsed="0.000546"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:53.690775" elapsed="0.000637"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:53.691516" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:53.482781" elapsed="0.208955">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:56.749747" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:56.749110" elapsed="0.000693"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:56.750913" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:56.750616" elapsed="0.000377">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:56.751192" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:56.750156" elapsed="0.001080"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:56.752231" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:56.751609" elapsed="0.000670"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:56.752893" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:56.753158" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:56.752638" elapsed="0.000565"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:56.753942" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:56.753550" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:56.755221" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:56.754960" elapsed="0.000307"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:56.755742" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:56.755468" elapsed="0.000314"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:56.756501" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:56.756157" elapsed="0.000428"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:56.757332" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:56.757108" elapsed="0.000250"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:56.757472" elapsed="0.000045"/>
</return>
<msg time="2026-04-05T00:31:56.757655" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:56.756774" elapsed="0.000906"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:56.757862" elapsed="0.000276"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:56.756023" elapsed="0.002159"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:56.758759" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:56.758444" elapsed="0.000341"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:56.759800" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:56.759554" elapsed="0.000273"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:56.759879" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:31:56.760032" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:56.758968" elapsed="0.001089"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:56.760216" elapsed="0.000252"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:56.758299" elapsed="0.002213"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:56.755841" elapsed="0.004706"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:56.760590" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:56.760758" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:56.754628" elapsed="0.006156"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:56.754204" elapsed="0.006639"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.761114" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:56.760903" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:56.754154" elapsed="0.007092"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:56.762347" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:56.761559" elapsed="0.000835"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:56.762543" elapsed="0.000071"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:56.747501" elapsed="0.015272"/>
</kw>
<msg time="2026-04-05T00:31:56.762941" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:56.733404" elapsed="0.029591"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.775813" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.788439" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.800805" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.800995" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.801166" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.801662" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:56.801442" elapsed="0.000363"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:56.801407" elapsed="0.000474"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.802059" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.802390" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.802770" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:31:56.801375" elapsed="0.001593"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:31:56.801242" elapsed="0.001756"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.803144" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:56.803222" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:31:56.803361" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:56.729104" elapsed="0.074286"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:56.805125" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:56.804719" elapsed="0.000603">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:56.805517" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:56.804170" elapsed="0.001373"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.805870" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:56.805617" elapsed="0.000391"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:56.806732" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:56.806215" elapsed="0.000557"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:56.806036" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:56.805597" elapsed="0.001308"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:56.813201" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:56.807052" elapsed="0.006176"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:31:56.813278" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:31:56.813447" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:56.803827" elapsed="0.009646"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:56.815063" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:56.814697" elapsed="0.000549">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:56.815491" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:56.814119" elapsed="0.001398"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:31:56.815747" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:31:56.815589" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:56.815570" elapsed="0.000260"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.815972" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.816137" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:31:56.816201" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:31:56.818320" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:31:56.813802" elapsed="0.004544"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:56.820197" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:56.819733" elapsed="0.000512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:56.820866" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:56.820396" elapsed="0.000516"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:31:56.896100" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:31:56.896914" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:31:56.897399" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:31:56.823295" elapsed="0.075398">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:31:56.820979" elapsed="0.078174">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.899727" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:56.899245" elapsed="0.000874"/>
</branch>
<status status="FAIL" start="2026-04-05T00:31:56.820961" elapsed="0.079218">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.901318" elapsed="0.000064"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:56.901701" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:31:56.901602" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:56.901550" elapsed="0.000296"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.902157" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:31:56.902311" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:31:56.818894" elapsed="0.083751">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:56.902820" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:56.704202" elapsed="0.198944">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:56.903840" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:56.903359" elapsed="0.000644"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:31:56.903320" elapsed="0.000737"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:31:56.904129" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:56.692828" elapsed="0.211522">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:31:59.960892" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:31:59.960259" elapsed="0.000687"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:31:59.962088" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:31:59.961773" elapsed="0.000401">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:31:59.962375" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:31:59.961299" elapsed="0.001147"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:31:59.963416" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:31:59.962793" elapsed="0.000695"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:31:59.964081" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:31:59.964347" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:31:59.963828" elapsed="0.000565"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:59.965106" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:59.964744" elapsed="0.000460"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:31:59.966376" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:31:59.966117" elapsed="0.000365"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:31:59.966911" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:31:59.966641" elapsed="0.000295"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:59.967635" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:59.967301" elapsed="0.000360"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:59.968379" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:59.968158" elapsed="0.000246"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:59.968473" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:31:59.968636" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:59.967845" elapsed="0.000816"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:59.968810" elapsed="0.000244"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:31:59.967167" elapsed="0.001927"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:31:59.969653" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:31:59.969333" elapsed="0.000345"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:31:59.970572" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:31:59.970235" elapsed="0.000365"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:31:59.970650" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:31:59.970803" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:31:59.969923" elapsed="0.000904"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:31:59.970974" elapsed="0.000224"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:31:59.969205" elapsed="0.002035"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:31:59.966992" elapsed="0.004283"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:31:59.971318" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:31:59.971523" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:31:59.965789" elapsed="0.005760"/>
</kw>
<status status="PASS" start="2026-04-05T00:31:59.965365" elapsed="0.006243"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:59.971875" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:31:59.971668" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:31:59.965317" elapsed="0.006691"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:31:59.973290" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:31:59.972307" elapsed="0.001031"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:31:59.973489" elapsed="0.000075"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:31:59.958660" elapsed="0.015064"/>
</kw>
<msg time="2026-04-05T00:31:59.973894" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:31:59.944536" elapsed="0.029412"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:59.986535" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:31:59.998938" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.011293" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.011525" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.011707" elapsed="0.000024"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.012207" elapsed="0.000106"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:00.011983" elapsed="0.000417"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:00.011967" elapsed="0.000536"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.012688" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.013012" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.013379" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:00.011931" elapsed="0.001680"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:00.011790" elapsed="0.001852"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.013796" elapsed="0.000025"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:00.013878" elapsed="0.000019"/>
</return>
<msg time="2026-04-05T00:32:00.014009" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:31:59.939989" elapsed="0.074046"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:00.015727" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:00.015300" elapsed="0.000620">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:00.016104" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:00.014771" elapsed="0.001359"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.016473" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:00.016203" elapsed="0.000409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:00.017317" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:00.016816" elapsed="0.000542"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:00.016641" elapsed="0.000851"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:00.016185" elapsed="0.001333"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:00.023807" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:00.017667" elapsed="0.006167"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:00.023886" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:00.024040" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:00.014414" elapsed="0.009650"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:00.025676" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:00.025211" elapsed="0.000648">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:00.026037" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:00.024724" elapsed="0.001338"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:00.026269" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:32:00.026134" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:00.026116" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.026509" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.026678" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:00.026743" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:00.028871" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:00.024387" elapsed="0.004510"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:00.030736" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:00.030262" elapsed="0.000520"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:00.031435" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:00.030931" elapsed="0.000553"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:00.103999" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:00.104733" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:00.105131" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:00.033923" elapsed="0.072132">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:00.031553" elapsed="0.074958">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.106928" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:00.106594" elapsed="0.000736"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:00.031534" elapsed="0.075855">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.108416" elapsed="0.000107"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:00.108767" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:00.108683" elapsed="0.000176"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:00.108643" elapsed="0.000264"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.109212" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:00.109367" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:00.029257" elapsed="0.080387">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:00.109814" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:31:59.914708" elapsed="0.195321">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:00.110648" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:00.110234" elapsed="0.000576"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:00.110196" elapsed="0.000665"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:00.110933" elapsed="0.000031"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:31:59.905474" elapsed="0.205674">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:03.166404" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:03.165761" elapsed="0.000715"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:03.167661" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:03.167379" elapsed="0.000355">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:03.167942" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:03.166906" elapsed="0.001083"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:03.168996" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:03.168356" elapsed="0.000688"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:03.169678" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:03.169957" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:03.169409" elapsed="0.000594"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:03.170743" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:03.170337" elapsed="0.000514"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:03.172078" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:03.171819" elapsed="0.000313"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:03.172572" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:03.172288" elapsed="0.000310"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:03.173280" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:03.172984" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:03.174070" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:03.173849" elapsed="0.000247"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:03.174149" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:32:03.174309" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:03.173535" elapsed="0.000799"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:03.174523" elapsed="0.000242"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:03.172842" elapsed="0.001965"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:03.175349" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:03.175050" elapsed="0.000325"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:03.176235" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:03.176002" elapsed="0.000262"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:03.176314" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:03.176491" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:03.175690" elapsed="0.000826"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:03.176683" elapsed="0.000231"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:03.174922" elapsed="0.002033"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:03.172654" elapsed="0.004336"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:03.177033" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:32:03.177242" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:03.171482" elapsed="0.005786"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:03.171031" elapsed="0.006296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.177649" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:03.177415" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:03.170983" elapsed="0.006803"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:03.179109" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:03.178085" elapsed="0.001072"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:03.179290" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:03.164137" elapsed="0.015497"/>
</kw>
<msg time="2026-04-05T00:32:03.179802" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:03.150035" elapsed="0.029821"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.192359" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.204973" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.217251" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.217481" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.217653" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.218119" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:03.217907" elapsed="0.000352"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:03.217892" elapsed="0.000442"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.218522" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.218831" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.219172" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:03.217859" elapsed="0.001508"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:03.217727" elapsed="0.001669"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.219553" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:03.219670" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:32:03.219798" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:03.145686" elapsed="0.074138"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:03.221442" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:03.221037" elapsed="0.000594">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:03.221808" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:03.220532" elapsed="0.001301"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.222143" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:03.221905" elapsed="0.000374"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:03.222982" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:03.222497" elapsed="0.000525"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:03.222306" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:03.221887" elapsed="0.001268"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:03.229402" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:03.223300" elapsed="0.006152"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:03.229506" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:03.229659" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:03.220179" elapsed="0.009504"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:03.231182" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:03.230819" elapsed="0.000544">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:03.231561" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:03.230321" elapsed="0.001265"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:03.231790" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:32:03.231656" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:03.231638" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.232011" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.232174" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:03.232239" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:03.234482" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:03.230007" elapsed="0.004502"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:03.236148" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:03.235692" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:03.236960" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:03.236344" elapsed="0.000662"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:03.324004" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:03.324840" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:03.325238" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:03.239239" elapsed="0.086965">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:03.237073" elapsed="0.089612">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.327095" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:03.326764" elapsed="0.000765"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:03.237055" elapsed="0.090542">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.328633" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:03.328934" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:03.328852" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:03.328814" elapsed="0.000261"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.329403" elapsed="0.000079"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:03.329592" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:03.234865" elapsed="0.094965">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:03.329996" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:03.122583" elapsed="0.207627">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:03.330850" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:03.330417" elapsed="0.000592"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:03.330374" elapsed="0.000688"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:03.331133" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:03.112309" elapsed="0.219038">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:06.384857" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:06.384202" elapsed="0.000714"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:06.386042" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:06.385754" elapsed="0.000373">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:06.386331" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:06.385277" elapsed="0.001215"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:06.387464" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:06.386839" elapsed="0.000673"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:06.388156" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:06.388465" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:06.387892" elapsed="0.000620"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:06.389214" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:06.388850" elapsed="0.000465"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:06.390581" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:06.390245" elapsed="0.000382"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:06.391070" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:06.390794" elapsed="0.000301"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:06.391819" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:06.391494" elapsed="0.000351"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:06.392598" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:06.392351" elapsed="0.000273"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:06.392679" elapsed="0.000040"/>
</return>
<msg time="2026-04-05T00:32:06.392851" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:06.392033" elapsed="0.000842"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:06.393025" elapsed="0.000255"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:06.391343" elapsed="0.001978"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:06.393880" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:06.393583" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:06.394731" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:06.394401" elapsed="0.000356"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:06.394806" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:06.394955" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:06.394088" elapsed="0.000891"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:06.395131" elapsed="0.000227"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:06.393452" elapsed="0.001959"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:06.391158" elapsed="0.004319"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:06.395533" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:32:06.395720" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:06.389918" elapsed="0.005829"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:06.389496" elapsed="0.006316"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.396086" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:06.395872" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:06.389443" elapsed="0.006777"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:06.397589" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:06.396569" elapsed="0.001068"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:06.397771" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:06.382487" elapsed="0.015513"/>
</kw>
<msg time="2026-04-05T00:32:06.398204" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:06.368329" elapsed="0.029930"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.410704" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.422903" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.435117" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.435310" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.435497" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.435991" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:06.435783" elapsed="0.000350"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:06.435767" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.436380" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.436709" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.437049" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:06.435734" elapsed="0.001509"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:06.435576" elapsed="0.001695"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.437415" elapsed="0.000037"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:06.437508" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:32:06.437633" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:06.364078" elapsed="0.073581"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:06.439234" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:06.438856" elapsed="0.000584">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:06.439621" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:06.438343" elapsed="0.001303"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.440019" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:06.439771" elapsed="0.000387"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:06.440879" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:06.440367" elapsed="0.000552"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:06.440185" elapsed="0.000843"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:06.439751" elapsed="0.001301"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:06.447289" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:06.441201" elapsed="0.006114"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:06.447368" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:06.447538" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:06.438021" elapsed="0.009541"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:06.449192" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:06.448825" elapsed="0.000549">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:06.449573" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:06.448250" elapsed="0.001348"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:06.449804" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:32:06.449670" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:06.449651" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.450026" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.450192" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:06.450256" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:32:06.452322" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:06.447927" elapsed="0.004422"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:06.454180" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:06.453723" elapsed="0.000504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:06.454839" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:06.454375" elapsed="0.000508"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:06.575814" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:06.576594" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:06.577072" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:06.457252" elapsed="0.120960">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:06.454951" elapsed="0.123781">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.579242" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:06.578819" elapsed="0.000972"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:06.454932" elapsed="0.125034">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.580878" elapsed="0.000041"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:06.581080" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:06.581026" elapsed="0.000116"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:06.580998" elapsed="0.000173"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.581371" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:06.581529" elapsed="0.000031"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:06.452900" elapsed="0.128807">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:06.581814" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:06.341623" elapsed="0.240329">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:06.582337" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:06.582078" elapsed="0.000410"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:06.582055" elapsed="0.000467"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:06.582568" elapsed="0.000021"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:06.332565" elapsed="0.250143">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:09.649612" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:09.648172" elapsed="0.001553"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:09.651212" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:09.650939" elapsed="0.000349">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:09.651502" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:09.650475" elapsed="0.001072"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:09.652534" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:09.651884" elapsed="0.000701"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:09.653181" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:09.653510" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:09.652929" elapsed="0.000631"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:09.654312" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:09.653891" elapsed="0.000521"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:09.655701" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:09.655436" elapsed="0.000310"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:09.656172" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:09.655903" elapsed="0.000295"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:09.656920" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:09.656601" elapsed="0.000344"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:09.657772" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:09.657543" elapsed="0.000255"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:09.657852" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:32:09.658040" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:09.657131" elapsed="0.000935"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:09.658219" elapsed="0.000266"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:09.656452" elapsed="0.002075"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:09.659073" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:09.658772" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:09.659845" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:09.659629" elapsed="0.000241"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:09.659919" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:09.660068" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:09.659280" elapsed="0.000812"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:09.660239" elapsed="0.000250"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:09.658642" elapsed="0.001890"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:09.656254" elapsed="0.004313"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:09.660609" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:09.660767" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:09.655020" elapsed="0.005774"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:09.654591" elapsed="0.006262"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.661121" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:09.660913" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:09.654542" elapsed="0.006712"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:09.662588" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:09.661650" elapsed="0.000986"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:09.662767" elapsed="0.000075"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:09.644502" elapsed="0.018501"/>
</kw>
<msg time="2026-04-05T00:32:09.663171" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:09.627996" elapsed="0.035231"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.679273" elapsed="0.000069"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.697304" elapsed="0.000034"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.709986" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.710183" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.710354" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.710848" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:09.710636" elapsed="0.000354"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:09.710620" elapsed="0.000446"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.711241" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.711574" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.711922" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:09.710586" elapsed="0.001531"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:09.710447" elapsed="0.001700"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.712291" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:09.712372" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:09.712511" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:09.622646" elapsed="0.089891"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:09.714162" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:09.713749" elapsed="0.000603">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:09.714552" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:09.713229" elapsed="0.001348"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.714894" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:09.714648" elapsed="0.000422"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:09.715787" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:09.715275" elapsed="0.000552"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:09.715100" elapsed="0.000834"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:09.714630" elapsed="0.001328"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:09.722219" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:09.716106" elapsed="0.006141"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:09.722298" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:09.722468" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:09.712899" elapsed="0.009595"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:09.724157" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:09.723790" elapsed="0.000556">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:09.724543" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:09.723190" elapsed="0.001379"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:09.724776" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:32:09.724641" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:09.724623" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.725001" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.725165" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:09.725230" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:09.727293" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:09.722869" elapsed="0.004452"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:09.729043" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:09.728588" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:09.729832" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:09.729239" elapsed="0.000639"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:09.804191" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:09.804929" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:09.805353" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:09.732248" elapsed="0.074099">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:09.729973" elapsed="0.076837">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.807236" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:09.806890" elapsed="0.000765"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:09.729928" elapsed="0.077787">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.808749" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:09.809047" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:09.808965" elapsed="0.000176"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:09.808926" elapsed="0.000262"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.809526" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:09.809683" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:09.727727" elapsed="0.082248">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:09.810279" elapsed="0.000048"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:09.591341" elapsed="0.219225">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:09.811168" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:09.810778" elapsed="0.000551"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:09.810740" elapsed="0.000639"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:09.811485" elapsed="0.000035"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:09.583775" elapsed="0.227933">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:12.868554" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:12.867887" elapsed="0.000723"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:12.869843" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:12.869570" elapsed="0.000354">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:12.870119" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:12.868963" elapsed="0.001199"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:12.871110" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:12.870517" elapsed="0.000639"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:12.871763" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:12.872024" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:12.871513" elapsed="0.000556"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:12.872985" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:12.872554" elapsed="0.000529"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:12.874290" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:12.874032" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:12.874773" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:12.874506" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:12.875482" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:12.875164" elapsed="0.000345"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:12.876226" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:12.876008" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:12.876317" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:32:12.876493" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:12.875694" elapsed="0.000901"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:12.876753" elapsed="0.000246"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:12.875031" elapsed="0.002011"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:12.877723" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:12.877285" elapsed="0.000464"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:12.878473" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:12.878245" elapsed="0.000254"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:12.878549" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:12.878697" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:12.877933" elapsed="0.000789"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:12.878869" elapsed="0.000222"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:12.877155" elapsed="0.001978"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:12.874855" elapsed="0.004314"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:12.879213" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:32:12.879369" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:12.873701" elapsed="0.005694"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:12.873250" elapsed="0.006217"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:12.879734" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:12.879527" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:12.873202" elapsed="0.006662"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:12.881192" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:12.880162" elapsed="0.001078"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:12.881372" elapsed="0.000183"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:12.866307" elapsed="0.015413"/>
</kw>
<msg time="2026-04-05T00:32:12.881889" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:12.852275" elapsed="0.029669"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:12.894483" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:12.906887" elapsed="0.000038"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:12.919452" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:12.919720" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:12.919895" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:12.920418" elapsed="0.000087"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:12.920170" elapsed="0.000425"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:12.920154" elapsed="0.000520"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:12.920851" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:12.921163" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:12.921523" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:12.920116" elapsed="0.001606"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:12.919976" elapsed="0.001777"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:12.921899" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:12.921977" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:32:12.922114" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:12.847825" elapsed="0.074315"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:12.923812" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:12.923380" elapsed="0.000626">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:12.924187" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:12.922854" elapsed="0.001359"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:12.924589" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:12.924309" elapsed="0.000419"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:12.925415" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:12.924927" elapsed="0.000545"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:12.924756" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:12.924285" elapsed="0.001319"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:12.931835" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:12.925751" elapsed="0.006111"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:12.931914" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:12.932068" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:12.922519" elapsed="0.009574"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:12.933707" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:12.933324" elapsed="0.000565">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:12.934066" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:12.932839" elapsed="0.001253"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:12.934302" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-05T00:32:12.934165" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:12.934146" elapsed="0.000294"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:12.934591" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:12.934760" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:12.934826" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:12.937087" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:12.932518" elapsed="0.004596"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:12.938781" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:12.938302" elapsed="0.000526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:12.939447" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:12.938977" elapsed="0.000518"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:13.033566" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:13.034324" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:13.034806" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:12.941915" elapsed="0.093915">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:12.939564" elapsed="0.096774">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.036839" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:13.036457" elapsed="0.000799"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:12.939546" elapsed="0.097771">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.038369" elapsed="0.000125"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:13.038745" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:13.038660" elapsed="0.000184"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:13.038619" elapsed="0.000274"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.039201" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:13.039360" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:12.937491" elapsed="0.102146">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:13.039808" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:12.822563" elapsed="0.217467">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.040707" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:13.040282" elapsed="0.000677"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:13.040197" elapsed="0.000817"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:13.041088" elapsed="0.000034"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:12.813054" elapsed="0.228259">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<msg time="2026-04-05T00:32:13.041444" level="FAIL">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${timeout}</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-05T00:31:40.708106" elapsed="32.333434">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${mapping}</arg>
<doc>Checks weather the device was mounted.</doc>
<status status="FAIL" start="2026-04-05T00:31:40.688389" elapsed="32.353269">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.050117" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${mod_session}</var>
<arg>member_index=${idx}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.050485" elapsed="0.000026"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}netconf-state</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${mod_session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.050672" elapsed="0.000021"/>
</kw>
<var name="${idx}"/>
<status status="NOT RUN" start="2026-04-05T00:32:13.050274" elapsed="0.000463"/>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:13.050206" elapsed="0.000560"/>
</for>
<kw name="Remove_Netconf_Device" type="TEARDOWN">
<kw name="Remove_Device_From_Netconf" owner="NetconfKeywords">
<kw name="Pop From Dictionary" owner="Collections">
<msg time="2026-04-05T00:32:13.052224" level="INFO">${device_type} = full-uri-device</msg>
<var>${device_type}</var>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<doc>Pops the given ``key`` from the ``dictionary`` and returns its value.</doc>
<status status="PASS" start="2026-04-05T00:32:13.051920" elapsed="0.000333"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.052886" level="INFO">${mapping} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:13.052435" elapsed="0.000477"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:13.071198" elapsed="0.000860"/>
</kw>
<msg time="2026-04-05T00:32:13.072325" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:13.070844" elapsed="0.001550"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:13.070433" elapsed="0.002055"/>
</kw>
<msg time="2026-04-05T00:32:13.072530" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:13.061843" elapsed="0.010743"/>
</kw>
<msg time="2026-04-05T00:32:13.072687" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:13.061497" elapsed="0.011214"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.115357" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:13.114702" elapsed="0.000786"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:13.117106" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:13.116592" elapsed="0.000625">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:13.117396" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:13.115794" elapsed="0.001728"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.118933" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:13.117871" elapsed="0.001171"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:13.119655" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:13.119895" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:13.119436" elapsed="0.000567"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.120833" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:13.120319" elapsed="0.000576"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.122846" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:13.122577" elapsed="0.000315"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.123355" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:13.123090" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.124615" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:13.123929" elapsed="0.000713"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:13.125397" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:13.125176" elapsed="0.000260"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:13.125489" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:32:13.125644" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:13.124829" elapsed="0.000840"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:13.125816" elapsed="0.000230"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:13.123794" elapsed="0.002292"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.126643" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:13.126329" elapsed="0.000339"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:13.127400" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:13.127190" elapsed="0.000386"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:13.127628" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:13.127778" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:13.126848" elapsed="0.000954"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:13.127947" elapsed="0.000247"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:13.126197" elapsed="0.002038"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:13.123578" elapsed="0.004713"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:13.128355" elapsed="0.000086"/>
</return>
<msg time="2026-04-05T00:32:13.128740" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:13.121775" elapsed="0.007054"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:13.121073" elapsed="0.007831"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.129197" elapsed="0.000083"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:13.128982" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:13.121051" elapsed="0.008397"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.130556" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:13.129600" elapsed="0.001065"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:13.130894" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:13.113594" elapsed="0.017445"/>
</kw>
<msg time="2026-04-05T00:32:13.131128" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:13.101047" elapsed="0.030144"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.143627" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.155847" elapsed="0.000026"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.168034" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.168237" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.168410" elapsed="0.000034"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.168833" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:13.168691" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:13.168675" elapsed="0.000237"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.169048" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.169209" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.169370" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:13.168643" elapsed="0.000797"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:13.168501" elapsed="0.000968"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.169612" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:13.169688" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:13.169806" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:13.096785" elapsed="0.073046"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.170945" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:13.170695" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:13.184219" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:13.184331" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:13.184491" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:32:13.173279" elapsed="0.011250"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:13.171057" elapsed="0.013528"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.184827" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:13.184621" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:13.171039" elapsed="0.013904"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.190084" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:13.186575" elapsed="0.003570"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:13.186250" elapsed="0.003943"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:13.186225" elapsed="0.004002"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.194111" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:13.190627" elapsed="0.003549"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:13.190307" elapsed="0.003916"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:13.190282" elapsed="0.003974"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.195023" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:13.194504" elapsed="0.000556"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.195497" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:13.195155" elapsed="0.000423"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.196405" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:13.195830" elapsed="0.000631"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:13.195613" elapsed="0.000898"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:13.195131" elapsed="0.001409"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.197258" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:13.196754" elapsed="0.000541"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:13.197746" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:13.197391" elapsed="0.000436"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:13.198641" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:13.198074" elapsed="0.000603"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:13.197860" elapsed="0.000866"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:13.197366" elapsed="0.001390"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:13.198957" elapsed="0.000657"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:32:13.200342" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:13.199838" elapsed="0.000540"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:32:13.200609" elapsed="0.006784"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:32:13.185648" elapsed="0.021822"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:32:13.207516" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:32:13.209896" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:32:13.170089" elapsed="0.039833"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:32:13.209975" elapsed="0.000027"/>
</return>
<arg>${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>${mapping}</arg>
<arg>session=${session}</arg>
<arg>location=${location}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:32:13.072926" elapsed="0.137170"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf to deconfigure the specified device</doc>
<status status="PASS" start="2026-04-05T00:32:13.051457" elapsed="0.158703"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<doc>Removes configured device</doc>
<status status="PASS" start="2026-04-05T00:32:13.050968" elapsed="0.159247"/>
</kw>
<arg>${idx}</arg>
<doc>Netconf readines for a node is done by creating a netconf device connected to that node
and performing GET operation got from the device's mount point.</doc>
<status status="FAIL" start="2026-04-05T00:31:40.363906" elapsed="32.846394">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<var name="${idx}">1</var>
<status status="FAIL" start="2026-04-05T00:31:40.363521" elapsed="32.846875">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="FAIL" start="2026-04-05T00:31:40.363160" elapsed="32.847313">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</for>
<doc>Verifies the netconf readiness for every odl node.</doc>
<status status="FAIL" start="2026-04-05T00:31:40.362721" elapsed="32.847849">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Check_Netconf_Topology_Ready">
<for flavor="IN">
<iter>
<kw name="Verify_Netconf_Topology_Ready_For_Node">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.215254" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:14.214478" elapsed="0.000847"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:32:14.215475" elapsed="0.000080"/>
</return>
<msg time="2026-04-05T00:32:14.215853" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${node_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:32:14.213656" elapsed="0.002254"/>
</kw>
<kw name="Configure_Netconf_Device">
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:14.240052" elapsed="0.000896"/>
</kw>
<msg time="2026-04-05T00:32:14.241094" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:14.239604" elapsed="0.001550"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:14.239187" elapsed="0.002043"/>
</kw>
<msg time="2026-04-05T00:32:14.241273" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:14.230697" elapsed="0.010621"/>
</kw>
<msg time="2026-04-05T00:32:14.241439" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:14.230357" elapsed="0.011109"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.242344" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.241629" elapsed="0.000743"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.242822" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.242499" elapsed="0.000391"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.275515" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:14.275119" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:14.276359" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:14.276102" elapsed="0.000351">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:14.276548" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:14.275768" elapsed="0.000804"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.277178" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:14.276787" elapsed="0.000419"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:14.277640" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:14.277799" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:14.277496" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.278279" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:14.278028" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.279341" level="INFO">mapping: {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:14.279081" elapsed="0.000306"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.279856" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.279591" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.280559" level="INFO">${value} = 10.30.170.184</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:14.280241" elapsed="0.000344"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:14.281302" level="INFO">${encoded} = 10.30.170.184</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.281081" elapsed="0.000247"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:14.281377" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:14.281546" level="INFO">${encoded_value} = 10.30.170.184</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:14.280771" elapsed="0.000800"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.281719" elapsed="0.000240"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.184</var>
<status status="PASS" start="2026-04-05T00:32:14.280109" elapsed="0.001890"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.282581" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:14.282236" elapsed="0.000370"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:14.283305" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.283094" elapsed="0.000236"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:14.283378" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:14.283543" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:14.282786" elapsed="0.000799"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.283729" elapsed="0.000221"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:14.282110" elapsed="0.001882"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.284543" level="INFO">${value} = 2830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:14.284229" elapsed="0.000339"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:14.285269" level="INFO">${encoded} = 2830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.285055" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:14.285348" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:14.285512" level="INFO">${encoded_value} = 2830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:14.284748" elapsed="0.000789"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.285680" elapsed="0.000387"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">2830</var>
<status status="PASS" start="2026-04-05T00:32:14.284103" elapsed="0.002005"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.286679" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:14.286347" elapsed="0.000357"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:14.287407" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.287197" elapsed="0.000250"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:14.287497" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:14.287662" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:14.286889" elapsed="0.000797"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.287872" elapsed="0.000225"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:32:14.286219" elapsed="0.001918"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.288692" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:14.288376" elapsed="0.000341"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:14.289435" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.289206" elapsed="0.000257"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:14.289513" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:14.289664" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:14.288899" elapsed="0.000789"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.289833" elapsed="0.000221"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:32:14.288247" elapsed="0.001847"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.290645" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:14.290331" elapsed="0.000339"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:14.291372" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.291157" elapsed="0.000241"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:14.291462" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:14.291638" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:14.290850" elapsed="0.000813"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.291810" elapsed="0.000223"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:32:14.290203" elapsed="0.001870"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.292631" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:14.292315" elapsed="0.000341"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:14.293364" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.293146" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:14.293455" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:14.293605" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:14.292839" elapsed="0.000790"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.293775" elapsed="0.000221"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:32:14.292182" elapsed="0.001854"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.294598" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:14.294281" elapsed="0.000348"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:14.295331" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.295119" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:14.295405" elapsed="0.000045"/>
</return>
<msg time="2026-04-05T00:32:14.295602" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:14.294810" elapsed="0.000818"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.295774" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:14.294153" elapsed="0.001882"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:14.279932" elapsed="0.016137"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:14.296112" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:32:14.296276" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:14.278763" elapsed="0.017539"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:14.278459" elapsed="0.017875"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.296521" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.296358" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:14.278437" elapsed="0.018197"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.298911" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:14.296830" elapsed="0.002110"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:14.299039" elapsed="0.000054"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:14.274129" elapsed="0.025196"/>
</kw>
<msg time="2026-04-05T00:32:14.299416" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:14.260781" elapsed="0.038750"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.321676" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.343695" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.365778" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.366035" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.366230" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.366831" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.366568" elapsed="0.000347"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:14.366551" elapsed="0.000449"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.367204" elapsed="0.000045"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.367562" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.367903" elapsed="0.000045"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:14.366514" elapsed="0.001557"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:14.366359" elapsed="0.001774"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.368284" elapsed="0.000028"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:14.368481" elapsed="0.000020"/>
</return>
<msg time="2026-04-05T00:32:14.368622" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:14.256443" elapsed="0.112205"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.396939" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:14.396552" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:14.397781" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:14.397530" elapsed="0.000326">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:14.397950" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:14.397178" elapsed="0.000796"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.398593" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:14.398183" elapsed="0.000437"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:14.398968" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:14.399119" level="INFO">${template} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVI...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:14.398826" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.399649" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;$DEVICE_USER&lt;/username&gt;
      &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:14.399351" elapsed="0.000352"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:32:14.400125" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.399822" elapsed="0.000362"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.400674" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:14.400355" elapsed="0.000346"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:14.400210" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:14.399801" elapsed="0.000956"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.401728" level="INFO">${final_text} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:14.400952" elapsed="0.000807"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:14.401857" elapsed="0.000054"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:14.395566" elapsed="0.006607"/>
</kw>
<msg time="2026-04-05T00:32:14.402272" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:14.381909" elapsed="0.020460"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.424324" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.446649" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.468897" elapsed="0.000034"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.469172" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.469377" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.470001" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.469734" elapsed="0.000351"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:14.469716" elapsed="0.000458"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.470378" elapsed="0.000059"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.470722" elapsed="0.000044"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.471044" elapsed="0.000044"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:14.469674" elapsed="0.001536"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:14.469526" elapsed="0.001746"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.471565" elapsed="0.000025"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:14.471726" elapsed="0.000020"/>
</return>
<msg time="2026-04-05T00:32:14.471881" level="INFO">${data} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:14.379042" elapsed="0.092871"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:14.474588" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:14.474005" elapsed="0.000712">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:14.474848" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:14.472697" elapsed="0.002175"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.475337" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.474981" elapsed="0.000658"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.476778" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:14.476130" elapsed="0.000689"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:14.475668" elapsed="0.001230"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:14.474962" elapsed="0.001959"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.479750" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:14.477068" elapsed="0.002708"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:14.479921" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:32:14.480083" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:14.472311" elapsed="0.007797"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.481934" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:14.481446" elapsed="0.000554"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.482808" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:14.482164" elapsed="0.000713"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.483563" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:14.483043" elapsed="0.000582"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.484259" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:14.483789" elapsed="0.000530"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:32:14.485807" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:32:14.485213" elapsed="0.000694"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:32:14.486793" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:32:14.486166" elapsed="0.000724"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.487148" elapsed="0.000524"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.488629" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:14.487934" elapsed="0.000888"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:32:14.488907" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:32:14.489176" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:32:14.484551" elapsed="0.004651"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:14.510900" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '439', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt; 
 </msg>
<msg time="2026-04-05T00:32:14.511020" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:14.511247" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:32:14.497611" elapsed="0.013692"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:14.489313" elapsed="0.022208"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.511828" elapsed="0.000105"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.511568" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:14.489293" elapsed="0.022852"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.518092" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:14.514561" elapsed="0.003622"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:14.513878" elapsed="0.004371"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:14.513831" elapsed="0.004512"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.522474" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:14.519120" elapsed="0.003450"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:14.518484" elapsed="0.004151"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:14.518419" elapsed="0.004309"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.524876" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:14.523465" elapsed="0.001549"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.525973" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.525282" elapsed="0.000824"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.527376" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:14.526738" elapsed="0.000739"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:14.526199" elapsed="0.001355"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:14.525234" elapsed="0.002411"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.529375" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:14.528361" elapsed="0.001128"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.530095" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.529619" elapsed="0.000571"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.531100" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:14.530649" elapsed="0.000486"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:14.530259" elapsed="0.000925"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:14.529587" elapsed="0.001662"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:14.531530" elapsed="0.000858"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:32:14.533337" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:14.532678" elapsed="0.000773"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.533716" elapsed="0.002738"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:32:14.512835" elapsed="0.023729"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:32:14.536797" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-05T00:32:14.536649" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:14.536629" elapsed="0.000412"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.537191" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:14.537300" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:32:14.539704" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:32:14.480536" elapsed="0.059195"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:32:14.539797" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:14.539951" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:32:14.245805" elapsed="0.294171"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.540317" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.540075" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:14.540058" elapsed="0.000351"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:32:14.540458" elapsed="0.000026"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:32:14.243149" elapsed="0.297433"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:14.242917" elapsed="0.297709"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:14.242476" elapsed="0.298172"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.540787" elapsed="0.000240"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=full-uri-device</arg>
<arg>device_port=${DEVICE_PORT}</arg>
<arg>device_address=${device_ip}</arg>
<arg>device_user=admin</arg>
<arg>device_password=admin</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:32:14.217472" elapsed="0.323618"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${ODL_SYSTEM_${node_index}_IP}</arg>
<doc>Configures the device via REST api.</doc>
<status status="PASS" start="2026-04-05T00:32:14.216192" elapsed="0.325011"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.541839" level="INFO">&amp;{mapping} = { DEVICE_NAME=test-device | RESTCONF_ROOT=/rests }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.541365" elapsed="0.000502"/>
</kw>
<kw name="Wait_Netconf_Device_Mounted">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:14.560401" elapsed="0.000785"/>
</kw>
<msg time="2026-04-05T00:32:14.561241" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:14.560042" elapsed="0.001258"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:14.559655" elapsed="0.001721"/>
</kw>
<msg time="2026-04-05T00:32:14.561466" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:14.551003" elapsed="0.010511"/>
</kw>
<msg time="2026-04-05T00:32:14.561615" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:14.550682" elapsed="0.010958"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.608989" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:14.608358" elapsed="0.000690"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:14.610466" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:14.610082" elapsed="0.000490">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:14.610816" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:14.609491" elapsed="0.001379"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.611932" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:14.611210" elapsed="0.000779"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:14.612773" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:14.613100" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:14.612442" elapsed="0.000721"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.613932" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:14.613557" elapsed="0.000472"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.615274" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:14.615011" elapsed="0.000310"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.615802" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.615517" elapsed="0.000311"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.616792" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:14.616195" elapsed="0.000624"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:14.617629" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.617334" elapsed="0.000328"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:14.617727" elapsed="0.000045"/>
</return>
<msg time="2026-04-05T00:32:14.617999" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:14.617012" elapsed="0.001021"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.618239" elapsed="0.000455"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:14.616059" elapsed="0.002691"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.619400" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:14.619067" elapsed="0.000375"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:14.620172" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.619960" elapsed="0.000238"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:14.620247" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:32:14.620399" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:14.619638" elapsed="0.000808"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:14.620597" elapsed="0.000236"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:14.618898" elapsed="0.001978"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:14.615884" elapsed="0.005026"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:14.620955" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:14.621111" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:14.614680" elapsed="0.006456"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:14.614185" elapsed="0.007009"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.621480" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.621256" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:14.614139" elapsed="0.007479"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.622846" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:14.621927" elapsed="0.000968"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:14.623026" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:14.606693" elapsed="0.016564"/>
</kw>
<msg time="2026-04-05T00:32:14.623474" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:14.592831" elapsed="0.030701"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.636294" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.648599" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.661870" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.662109" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.662284" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.662798" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.662573" elapsed="0.000371"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:14.662556" elapsed="0.000464"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.663197" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.663550" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.663919" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:14.662522" elapsed="0.001599"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:14.662362" elapsed="0.001789"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.664298" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:14.664375" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:32:14.664520" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:14.588643" elapsed="0.075903"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:14.666201" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:14.665807" elapsed="0.000598">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:14.666614" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:14.665250" elapsed="0.001397"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.666977" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.666723" elapsed="0.000409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.667894" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:14.667333" elapsed="0.000602"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:14.667160" elapsed="0.000885"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:14.666704" elapsed="0.001365"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.674751" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:14.668218" elapsed="0.006562"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:14.674832" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:32:14.674990" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:14.664919" elapsed="0.010095"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:14.676595" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:14.676204" elapsed="0.000590">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:14.676974" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:14.675710" elapsed="0.001289"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:14.677207" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:32:14.677072" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:14.677053" elapsed="0.000274"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.677492" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.677675" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:14.677744" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:32:14.679804" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:14.675341" elapsed="0.004490"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.681509" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:14.681023" elapsed="0.000534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:14.682170" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:14.681711" elapsed="0.000505"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:14.700355" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:14.700776" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=503, reason=Service Unavailable 
 headers={'Content-Type': 'application/xml', 'Content-Length': '433'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;protocol&lt;/error-type&gt;&lt;error-path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology/a:topology[a:topology-id='topology-netconf']/a:node[a:node-id='test-device']&lt;/error-path&gt;&lt;error-message&gt;Mount point does not exist&lt;/error-message&gt;&lt;error-tag&gt;resource-denied-transport&lt;/error-tag&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:14.700970" level="FAIL">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:14.684837" elapsed="0.016731">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:14.682283" elapsed="0.019535">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.702035" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.701865" elapsed="0.000346"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:14.682265" elapsed="0.019973">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.702779" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:14.702918" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:14.702879" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:14.702861" elapsed="0.000122"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.703122" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:14.703193" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:14.680191" elapsed="0.023117">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:14.703616" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:14.566751" elapsed="0.136978">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:14.704002" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:14.703821" elapsed="0.000294"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:14.703804" elapsed="0.000336"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:14.704173" elapsed="0.000014"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:14.562404" elapsed="0.141896">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:17.760555" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:17.759931" elapsed="0.000678"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:17.761676" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:17.761401" elapsed="0.000376">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:17.761982" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:17.760960" elapsed="0.001070"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:17.762994" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:17.762374" elapsed="0.000666"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:17.763673" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:17.763936" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:17.763393" elapsed="0.000589"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:17.764689" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:17.764311" elapsed="0.000476"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:17.765953" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:17.765676" elapsed="0.000322"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:17.766433" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:17.766154" elapsed="0.000307"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:17.767118" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:17.766818" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:17.767951" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:17.767733" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:17.768030" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:32:17.768185" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:17.767328" elapsed="0.000882"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:17.768363" elapsed="0.000256"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:17.766687" elapsed="0.001973"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:17.769196" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:17.768899" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:17.770091" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:17.769881" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:17.770166" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:17.770371" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:17.769403" elapsed="0.000994"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:17.770562" elapsed="0.000225"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:17.768772" elapsed="0.002056"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:17.766514" elapsed="0.004349"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:17.770906" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:17.771061" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:17.765336" elapsed="0.005750"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:17.764941" elapsed="0.006203"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.771407" elapsed="0.000144"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:17.771205" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:17.764894" elapsed="0.006768"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:17.772747" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:17.771956" elapsed="0.000837"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:17.772924" elapsed="0.000071"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:17.758232" elapsed="0.014921"/>
</kw>
<msg time="2026-04-05T00:32:17.773318" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:17.743478" elapsed="0.029893"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.785758" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.797971" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.810352" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.810667" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.810919" elapsed="0.000028"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.811473" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:17.811233" elapsed="0.000387"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:17.811216" elapsed="0.000484"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.811874" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.812185" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.812631" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:17.811176" elapsed="0.001652"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:17.811019" elapsed="0.001841"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.813005" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:17.813085" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:32:17.813241" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:17.739282" elapsed="0.073993"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:17.815041" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:17.814631" elapsed="0.000605">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:17.815417" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:17.814046" elapsed="0.001413"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.815785" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:17.815531" elapsed="0.000392"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:17.816632" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:17.816120" elapsed="0.000554"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:17.815950" elapsed="0.000834"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:17.815513" elapsed="0.001295"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:17.823273" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:17.816953" elapsed="0.006347"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:17.823352" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:17.823526" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:17.813686" elapsed="0.009865"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:17.825052" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:17.824690" elapsed="0.000545">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:17.825415" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:17.824186" elapsed="0.001270"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:17.825663" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:32:17.825528" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:17.825509" elapsed="0.000248"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.825901" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.826066" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:17.826131" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:17.828144" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:17.823871" elapsed="0.004299"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:17.829838" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:17.829343" elapsed="0.000576"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:17.830659" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:17.830070" elapsed="0.000637"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:17.909523" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:17.910238" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:17.910668" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:17.832940" elapsed="0.078650">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:17.830775" elapsed="0.081236">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.912461" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:17.912089" elapsed="0.000755"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:17.830756" elapsed="0.082146">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.913949" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:17.914247" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:17.914165" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:17.914127" elapsed="0.000260"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.914775" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:17.914932" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:17.828536" elapsed="0.086628">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:17.915352" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:17.715835" elapsed="0.199765">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:17.916189" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:17.915804" elapsed="0.000543"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:17.915767" elapsed="0.000632"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:17.916501" elapsed="0.000034"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:17.705314" elapsed="0.211407">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:20.970304" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:20.969705" elapsed="0.000710"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:20.971510" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:20.971228" elapsed="0.000358">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:20.971782" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:20.970784" elapsed="0.001043"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:20.972800" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:20.972176" elapsed="0.000670"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:20.973450" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:20.973708" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:20.973183" elapsed="0.000570"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:20.974499" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:20.974083" elapsed="0.000515"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:20.975789" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:20.975530" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:20.976284" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:20.975988" elapsed="0.000322"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:20.976982" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:20.976685" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:20.977737" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:20.977514" elapsed="0.000248"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:20.977814" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:32:20.977974" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:20.977188" elapsed="0.000810"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:20.978145" elapsed="0.000238"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:20.976553" elapsed="0.001884"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:20.978975" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:20.978681" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:20.979972" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:20.979762" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:20.980046" elapsed="0.000040"/>
</return>
<msg time="2026-04-05T00:32:20.980206" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:20.979180" elapsed="0.001050"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:20.980375" elapsed="0.000240"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:20.978552" elapsed="0.002104"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:20.976363" elapsed="0.004327"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:20.980732" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:32:20.980884" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:20.975155" elapsed="0.005754"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:20.974755" elapsed="0.006211"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:20.981229" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:20.981025" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:20.974708" elapsed="0.006687"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:20.982512" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:20.981712" elapsed="0.000847"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:20.982693" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:20.968116" elapsed="0.014808"/>
</kw>
<msg time="2026-04-05T00:32:20.983091" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:20.954105" elapsed="0.029038"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:20.995555" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.007813" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.020045" elapsed="0.000049"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.020256" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.020439" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.020902" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:21.020691" elapsed="0.000353"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:21.020676" elapsed="0.000446"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.021297" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.021629" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.021973" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:21.020645" elapsed="0.001527"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:21.020516" elapsed="0.001689"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.022349" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:21.022439" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:32:21.022560" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:20.949946" elapsed="0.072640"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:21.024178" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:21.023796" elapsed="0.000571">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:21.024562" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:21.023292" elapsed="0.001295"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.024896" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:21.024657" elapsed="0.000374"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:21.025739" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:21.025227" elapsed="0.000551"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:21.025058" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:21.024639" elapsed="0.001272"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:21.032258" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:21.026058" elapsed="0.006228"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:21.032337" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:21.032505" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:21.022972" elapsed="0.009558"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:21.034094" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:21.033732" elapsed="0.000544">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:21.034469" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:21.033161" elapsed="0.001334"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:21.034699" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:32:21.034566" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:21.034548" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.034921" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.035084" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:21.035148" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:21.037041" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:21.032846" elapsed="0.004220"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:21.038874" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:21.038405" elapsed="0.000516"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:21.039532" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:21.039068" elapsed="0.000510"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:21.113622" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:21.114064" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:21.114313" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:21.041841" elapsed="0.073066">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:21.039645" elapsed="0.075571">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.115496" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:21.115266" elapsed="0.000469"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:21.039626" elapsed="0.076145">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.116403" elapsed="0.000056"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:21.116612" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:21.116560" elapsed="0.000111"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:21.116535" elapsed="0.000166"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.116893" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:21.116990" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:21.037413" elapsed="0.079725">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:21.117247" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:20.925801" elapsed="0.191579">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:21.117771" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:21.117530" elapsed="0.000340"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:21.117506" elapsed="0.000397"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:21.117947" elapsed="0.000020"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:20.917819" elapsed="0.200263">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:24.171644" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:24.171009" elapsed="0.000687"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:24.172836" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:24.172560" elapsed="0.000350">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:24.173109" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:24.172080" elapsed="0.001076"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:24.174130" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:24.173532" elapsed="0.000645"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:24.174816" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:24.175250" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:24.174559" elapsed="0.000739"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:24.176022" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:24.175661" elapsed="0.000460"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:24.177336" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:24.177076" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:24.177898" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:24.177629" elapsed="0.000295"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:24.178757" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:24.178286" elapsed="0.000497"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:24.179520" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:24.179284" elapsed="0.000262"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:24.179599" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:32:24.179761" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:24.178970" elapsed="0.000815"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:24.179934" elapsed="0.000238"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:24.178153" elapsed="0.002060"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:24.180771" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:24.180471" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:24.181785" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:24.181471" elapsed="0.000341"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:24.181863" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:24.182015" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:24.180978" elapsed="0.001062"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:24.182188" elapsed="0.000317"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:24.180327" elapsed="0.002221"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:24.177979" elapsed="0.004604"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:24.182627" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:24.182784" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:24.176738" elapsed="0.006071"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:24.176283" elapsed="0.006591"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.183146" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:24.182935" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:24.176235" elapsed="0.007042"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:24.184400" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:24.183598" elapsed="0.000869"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:24.184599" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:24.169349" elapsed="0.015483"/>
</kw>
<msg time="2026-04-05T00:32:24.185003" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:24.155456" elapsed="0.029605"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.197537" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.209937" elapsed="0.000034"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.222266" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.222503" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.222684" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.223179" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:24.222968" elapsed="0.000354"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:24.222951" elapsed="0.000450"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.223595" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.223910" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.224255" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:24.222911" elapsed="0.001563"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:24.222766" elapsed="0.001741"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.224655" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:24.224733" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:32:24.224873" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:24.151232" elapsed="0.073669"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:24.226607" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:24.226153" elapsed="0.000649">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:24.226983" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:24.225622" elapsed="0.001385"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.227332" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:24.227080" elapsed="0.000407"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:24.228198" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:24.227697" elapsed="0.000542"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:24.227515" elapsed="0.000879"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:24.227061" elapsed="0.001388"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:24.234792" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:24.228602" elapsed="0.006221"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:24.234882" elapsed="0.000038"/>
</return>
<msg time="2026-04-05T00:32:24.235052" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:24.225265" elapsed="0.009811"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:24.236861" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:24.236321" elapsed="0.000731">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:24.237233" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:24.235811" elapsed="0.001447"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:24.237494" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:32:24.237333" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:24.237313" elapsed="0.000265"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.237724" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.237891" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:24.237956" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:24.240128" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:24.235456" elapsed="0.004699"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:24.242117" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:24.241643" elapsed="0.000523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:24.242804" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:24.242317" elapsed="0.000534"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:24.314909" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:24.315669" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:24.316126" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:24.245180" elapsed="0.071876">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:24.242921" elapsed="0.074594">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.317998" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:24.317602" elapsed="0.000806"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:24.242901" elapsed="0.075597">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.319583" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:24.319890" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:24.319803" elapsed="0.000275"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:24.319764" elapsed="0.000365"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.320473" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:24.320631" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:24.240798" elapsed="0.080077">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:24.321047" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:24.129235" elapsed="0.192028">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:24.321881" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:24.321494" elapsed="0.000548"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:24.321455" elapsed="0.000638"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:24.322164" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:24.119229" elapsed="0.203227">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:27.394518" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:27.393894" elapsed="0.000679"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:27.395649" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:27.395372" elapsed="0.000351">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:27.395923" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:27.394925" elapsed="0.001043"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:27.396967" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:27.396309" elapsed="0.000705"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:27.397624" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:27.397886" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:27.397353" elapsed="0.000580"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:27.398649" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:27.398266" elapsed="0.000481"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:27.399909" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:27.399650" elapsed="0.000306"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:27.400382" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:27.400114" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:27.401179" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:27.400877" elapsed="0.000385"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:27.402002" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:27.401781" elapsed="0.000247"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:27.402081" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:32:27.402242" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:27.401465" elapsed="0.000802"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:27.402417" elapsed="0.000268"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:27.400720" elapsed="0.002006"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:27.403265" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:27.402969" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:27.404004" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:27.403797" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:27.404080" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:27.404228" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:27.403485" elapsed="0.000768"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:27.404399" elapsed="0.000393"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:27.402840" elapsed="0.001998"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:27.400540" elapsed="0.004332"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:27.404917" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:32:27.405072" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:27.399309" elapsed="0.005788"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:27.398906" elapsed="0.006248"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.405441" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:27.405212" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:27.398859" elapsed="0.006717"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:27.406840" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:27.405874" elapsed="0.001014"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:27.407019" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:27.392176" elapsed="0.015072"/>
</kw>
<msg time="2026-04-05T00:32:27.407414" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:27.374330" elapsed="0.033154"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.419921" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.441842" elapsed="0.000072"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.454549" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.454780" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.454964" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.455524" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:27.455284" elapsed="0.000387"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:27.455264" elapsed="0.000490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.455933" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.456249" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.456624" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:27.455213" elapsed="0.001633"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:27.455056" elapsed="0.001824"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.457030" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:27.457112" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:32:27.457280" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:27.364544" elapsed="0.092764"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:27.459091" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:27.458649" elapsed="0.000652">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:27.459503" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:27.458053" elapsed="0.001475"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.459867" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:27.459600" elapsed="0.000406"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:27.460770" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:27.460217" elapsed="0.000595"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:27.460033" elapsed="0.000889"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:27.459582" elapsed="0.001364"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:27.467245" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:27.461097" elapsed="0.006176"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:27.467326" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:32:27.467502" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:27.457686" elapsed="0.009841"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:27.469073" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:27.468685" elapsed="0.000575">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:27.469493" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:27.468181" elapsed="0.001338"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:27.469726" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:32:27.469592" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:27.469573" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.469953" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.470121" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:27.470188" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:32:27.472508" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:27.467860" elapsed="0.004675"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:27.474290" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:27.473784" elapsed="0.000556"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:27.475040" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:27.474582" elapsed="0.000504"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:27.545163" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:27.545844" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:27.546253" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:27.477338" elapsed="0.069854">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:27.475153" elapsed="0.072505">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.548085" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:27.547738" elapsed="0.000759"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:27.475135" elapsed="0.073423">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.549612" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:27.549917" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:27.549832" elapsed="0.000180"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:27.549793" elapsed="0.000268"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.550375" elapsed="0.000133"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:27.550622" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:27.472938" elapsed="0.077928">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:27.551037" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:27.330417" elapsed="0.220927">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:27.552059" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:27.551659" elapsed="0.000564"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:27.551612" elapsed="0.000666"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:27.552353" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:27.323344" elapsed="0.229304">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:30.609728" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:30.609109" elapsed="0.000676"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:30.610860" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:30.610598" elapsed="0.000340">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:30.611167" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:30.610133" elapsed="0.001083"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:30.612162" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:30.611569" elapsed="0.000639"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:30.612802" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:30.613062" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:30.612557" elapsed="0.000550"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:30.613818" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:30.613454" elapsed="0.000460"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:30.615078" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:30.614823" elapsed="0.000319"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:30.615584" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:30.615301" elapsed="0.000309"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:30.616268" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:30.615974" elapsed="0.000319"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:30.617020" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:30.616801" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:30.617098" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:32:30.617258" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:30.616489" elapsed="0.000794"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:30.617446" elapsed="0.000246"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:30.615840" elapsed="0.001892"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:30.618278" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:30.617980" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:30.619208" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:30.618987" elapsed="0.000247"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:30.619285" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:30.619452" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:30.618677" elapsed="0.000801"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:30.619634" elapsed="0.000226"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:30.617844" elapsed="0.002057"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:30.615664" elapsed="0.004271"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:30.619978" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:32:30.620131" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:30.614499" elapsed="0.005657"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:30.614070" elapsed="0.006143"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.620491" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:30.620272" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:30.614024" elapsed="0.006598"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:30.621879" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:30.620917" elapsed="0.001010"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:30.622058" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:30.607549" elapsed="0.014739"/>
</kw>
<msg time="2026-04-05T00:32:30.622560" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:30.593153" elapsed="0.029463"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.635007" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.647246" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.659578" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.659768" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.659936" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.660395" elapsed="0.000116"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:30.660187" elapsed="0.000406"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:30.660173" elapsed="0.000496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.660845" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.661152" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.661510" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:30.660142" elapsed="0.001563"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:30.660011" elapsed="0.001723"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.661879" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:30.661955" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:30.662072" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:30.588936" elapsed="0.073162"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:30.663675" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:30.663286" elapsed="0.000573">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:30.664037" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:30.662782" elapsed="0.001280"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.664372" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:30.664133" elapsed="0.000393"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:30.665207" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:30.664724" elapsed="0.000524"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:30.664554" elapsed="0.000801"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:30.664115" elapsed="0.001263"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:30.671599" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:30.665540" elapsed="0.006085"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:30.671676" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:30.671827" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:30.662464" elapsed="0.009387"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:30.673436" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:30.673061" elapsed="0.000559">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:30.673797" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:30.672577" elapsed="0.001245"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:30.674025" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:32:30.673892" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:30.673874" elapsed="0.000232"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.674245" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.674409" elapsed="0.000034"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:30.674489" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:30.676728" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:30.672175" elapsed="0.004580"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:30.678375" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:30.677924" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:30.679033" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:30.678586" elapsed="0.000506"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:30.752842" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:30.753599" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:30.754010" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:30.681444" elapsed="0.073508">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:30.679159" elapsed="0.076331">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.755945" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:30.755577" elapsed="0.000753"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:30.679141" elapsed="0.077249">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.757500" elapsed="0.000063"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:30.757808" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:30.757723" elapsed="0.000179"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:30.757683" elapsed="0.000267"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.758262" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:30.758414" elapsed="0.000071"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:30.677109" elapsed="0.081589">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:30.758868" elapsed="0.000064"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:30.564469" elapsed="0.194740">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:30.759943" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:30.759534" elapsed="0.000571"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:30.759404" elapsed="0.000753"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:30.760377" elapsed="0.000031"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:30.553868" elapsed="0.206767">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:33.814671" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:33.814033" elapsed="0.000691"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:33.815830" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:33.815569" elapsed="0.000335">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:33.816102" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:33.815075" elapsed="0.001073"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:33.817111" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:33.816508" elapsed="0.000650"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:33.817761" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:33.818030" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:33.817512" elapsed="0.000563"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:33.818785" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:33.818408" elapsed="0.000476"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:33.820062" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:33.819805" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:33.820544" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:33.820262" elapsed="0.000307"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:33.821224" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:33.820929" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:33.821975" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:33.821760" elapsed="0.000242"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:33.822053" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:32:33.822208" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:33.821446" elapsed="0.000787"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:33.822379" elapsed="0.000252"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:33.820799" elapsed="0.001873"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:33.823210" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:33.822914" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:33.824127" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:33.823918" elapsed="0.000236"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:33.824204" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:33.824351" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:33.823422" elapsed="0.000953"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:33.824539" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:33.822785" elapsed="0.002015"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:33.820620" elapsed="0.004215"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:33.824885" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:32:33.825106" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:33.819469" elapsed="0.005662"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:33.819036" elapsed="0.006152"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.825468" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:33.825246" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:33.818991" elapsed="0.006608"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:33.826942" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:33.825891" elapsed="0.001099"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:33.827122" elapsed="0.000076"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:33.812455" elapsed="0.014901"/>
</kw>
<msg time="2026-04-05T00:32:33.827643" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:33.798294" elapsed="0.029412"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.840125" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.852453" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.864656" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.864849" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.865018" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.865510" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:33.865282" elapsed="0.000369"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:33.865266" elapsed="0.000460"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.865900" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.866205" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.866570" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:33.865232" elapsed="0.001537"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:33.865095" elapsed="0.001704"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.866942" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:33.867063" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:32:33.867189" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:33.794091" elapsed="0.073124"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:33.868851" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:33.868456" elapsed="0.000592">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:33.869226" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:33.867921" elapsed="0.001330"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.869582" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:33.869322" elapsed="0.000397"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:33.870402" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:33.869917" elapsed="0.000544"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:33.869746" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:33.869304" elapsed="0.001291"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:33.876854" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:33.870740" elapsed="0.006141"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:33.876932" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:33.877085" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:33.867595" elapsed="0.009515"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:33.878635" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:33.878251" elapsed="0.000568">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:33.878997" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:33.877764" elapsed="0.001257"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:33.879224" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:32:33.879092" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:33.879074" elapsed="0.000232"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.879652" elapsed="0.000028"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.879827" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:33.879892" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:33.881966" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:33.877445" elapsed="0.004547"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:33.883864" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:33.883391" elapsed="0.000519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:33.884544" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:33.884057" elapsed="0.000532"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:33.953568" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:33.954378" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:33.954831" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:33.886906" elapsed="0.068886">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:33.884655" elapsed="0.071569">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.956703" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:33.956305" elapsed="0.000785"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:33.884637" elapsed="0.072513">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.958269" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:33.958656" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:33.958571" elapsed="0.000182"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:33.958529" elapsed="0.000273"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.959114" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:33.959269" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:33.882590" elapsed="0.076954">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:33.959717" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:33.771804" elapsed="0.188129">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:33.960574" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:33.960137" elapsed="0.000600"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:33.960099" elapsed="0.000690"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:33.960861" elapsed="0.000031"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:33.761970" elapsed="0.199107">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:37.018959" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:37.018080" elapsed="0.000953"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:37.020457" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:37.020088" elapsed="0.000474">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:37.020822" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:37.019515" elapsed="0.001443"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:37.022242" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:37.021414" elapsed="0.000934"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:37.023155" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:37.023507" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:37.022825" elapsed="0.000744"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:37.024395" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:37.024012" elapsed="0.000525"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:37.025915" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:37.025647" elapsed="0.000315"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:37.026421" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:37.026121" elapsed="0.000342"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:37.027129" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:37.026829" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:37.027921" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:37.027697" elapsed="0.000251"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:37.028003" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:32:37.028173" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:37.027341" elapsed="0.000856"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:37.028348" elapsed="0.000277"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:37.026695" elapsed="0.001972"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:37.029214" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:37.028911" elapsed="0.000328"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:37.030126" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:37.029912" elapsed="0.000241"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:37.030205" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:37.030399" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:37.029425" elapsed="0.001021"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:37.030600" elapsed="0.000245"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:37.028781" elapsed="0.002107"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:37.026519" elapsed="0.004405"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:37.030969" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:37.031128" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:37.025193" elapsed="0.005961"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:37.024721" elapsed="0.006492"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.031502" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:37.031274" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:37.024671" elapsed="0.006967"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:37.032782" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:37.031958" elapsed="0.000883"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:37.032982" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:37.015761" elapsed="0.017460"/>
</kw>
<msg time="2026-04-05T00:32:37.033523" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:37.000017" elapsed="0.033567"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.046347" elapsed="0.000034"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.058957" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.071461" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.071665" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.071840" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.072349" elapsed="0.000072"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:37.072133" elapsed="0.000387"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:37.072116" elapsed="0.000483"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.072779" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.073106" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.073479" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:37.072077" elapsed="0.001597"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:37.071921" elapsed="0.001784"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.073850" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:37.073927" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:32:37.074061" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:36.995717" elapsed="0.078371"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:37.075766" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:37.075347" elapsed="0.000616">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:37.076149" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:37.074827" elapsed="0.001347"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.076574" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:37.076286" elapsed="0.000429"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:37.077440" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:37.076914" elapsed="0.000575"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:37.076743" elapsed="0.000869"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:37.076267" elapsed="0.001373"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:37.084078" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:37.077819" elapsed="0.006287"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:37.084158" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:32:37.084316" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:37.074472" elapsed="0.009868"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:37.085917" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:37.085537" elapsed="0.000569">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:37.086302" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:37.085017" elapsed="0.001311"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:37.086707" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:32:37.086401" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:37.086382" elapsed="0.000411"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.086986" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.087156" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:37.087227" elapsed="0.000020"/>
</return>
<msg time="2026-04-05T00:32:37.089309" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:37.084692" elapsed="0.004643"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:37.091146" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:37.090641" elapsed="0.000553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:37.091829" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:37.091345" elapsed="0.000530"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:37.164044" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:37.164919" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:37.165384" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:37.094141" elapsed="0.072232">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:37.091942" elapsed="0.074902">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.167417" elapsed="0.000096"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:37.166931" elapsed="0.000973"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:37.091924" elapsed="0.076147">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.169181" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:37.169529" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:37.169404" elapsed="0.000225"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:37.169364" elapsed="0.000315"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.170002" elapsed="0.000058"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:37.170168" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:37.089710" elapsed="0.080704">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:37.170624" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:36.970337" elapsed="0.200501">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:37.171557" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:37.171034" elapsed="0.000712"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:37.170998" elapsed="0.000801"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:37.171870" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:36.962238" elapsed="0.209841">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:40.226060" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:40.225377" elapsed="0.000737"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:40.227227" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:40.226964" elapsed="0.000342">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:40.227522" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:40.226513" elapsed="0.001054"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:40.228522" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:40.227904" elapsed="0.000665"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:40.229162" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:40.229443" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:40.228907" elapsed="0.000584"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:40.230200" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:40.229836" elapsed="0.000464"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:40.231568" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:40.231288" elapsed="0.000326"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:40.232040" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:40.231771" elapsed="0.000295"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:40.232747" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:40.232445" elapsed="0.000328"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:40.233505" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:40.233268" elapsed="0.000263"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:40.233584" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:32:40.233743" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:40.232955" elapsed="0.000813"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:40.234017" elapsed="0.000249"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:40.232296" elapsed="0.002012"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:40.234975" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:40.234667" elapsed="0.000333"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:40.235722" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:40.235514" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:40.235799" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:40.235948" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:40.235182" elapsed="0.000790"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:40.236124" elapsed="0.000223"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:40.234422" elapsed="0.001965"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:40.232120" elapsed="0.004350"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:40.236515" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:40.236672" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:40.230897" elapsed="0.005800"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:40.230492" elapsed="0.006263"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.237024" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:40.236815" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:40.230410" elapsed="0.006750"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:40.238593" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:40.237472" elapsed="0.001170"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:40.238772" elapsed="0.000071"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:40.223826" elapsed="0.015175"/>
</kw>
<msg time="2026-04-05T00:32:40.239166" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:40.209864" elapsed="0.029356"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.251835" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.264137" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.276577" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.276776" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.276945" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.277498" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:40.277263" elapsed="0.000380"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:40.277194" elapsed="0.000527"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.277896" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.278232" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.278603" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:40.277160" elapsed="0.001638"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:40.277024" elapsed="0.001804"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.278973" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:40.279049" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:32:40.279185" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:40.205357" elapsed="0.073854"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:40.280852" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:40.280451" elapsed="0.000596">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:40.281235" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:40.279921" elapsed="0.001340"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.281598" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:40.281331" elapsed="0.000405"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:40.282491" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:40.281937" elapsed="0.000595"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:40.281764" elapsed="0.000875"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:40.281312" elapsed="0.001351"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:40.288871" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:40.282811" elapsed="0.006087"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:40.288949" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:40.289103" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:40.279588" elapsed="0.009540"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:40.290856" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:40.290384" elapsed="0.000653">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:40.291216" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:40.289831" elapsed="0.001410"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:40.291463" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:32:40.291312" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:40.291294" elapsed="0.000252"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.291688" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.291855" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:40.291920" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:40.293987" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:40.289511" elapsed="0.004502"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:40.295883" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:40.295407" elapsed="0.000523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:40.296550" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:40.296080" elapsed="0.000516"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:40.376505" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:40.377235" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:40.377707" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:40.298966" elapsed="0.079770">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:40.296663" elapsed="0.082510">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.379686" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:40.379260" elapsed="0.000813"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:40.296644" elapsed="0.083495">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.381227" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:40.381621" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:40.381529" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:40.381409" elapsed="0.000360"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.382080" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:40.382233" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:40.294399" elapsed="0.088133">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:40.382808" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:40.179928" elapsed="0.203105">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:40.383665" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:40.383242" elapsed="0.000584"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:40.383204" elapsed="0.000676"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:40.383952" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:40.172852" elapsed="0.211322">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:43.438789" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:43.438151" elapsed="0.000693"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:43.439943" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:43.439672" elapsed="0.000352">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:43.440220" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:43.439197" elapsed="0.001069"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:43.441231" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:43.440635" elapsed="0.000642"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:43.441890" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:43.442184" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:43.441633" elapsed="0.000601"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:43.442954" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:43.442588" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:43.444224" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:43.443960" elapsed="0.000309"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:43.444767" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:43.444492" elapsed="0.000301"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:43.445504" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:43.445160" elapsed="0.000370"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:43.446263" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:43.446039" elapsed="0.000249"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:43.446341" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:32:43.446665" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:43.445713" elapsed="0.001033"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:43.446905" elapsed="0.000249"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:43.445026" elapsed="0.002169"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:43.447758" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:43.447457" elapsed="0.000327"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:43.448509" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:43.448278" elapsed="0.000257"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:43.448585" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:43.448737" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:43.447966" elapsed="0.000795"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:43.448914" elapsed="0.000225"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:43.447309" elapsed="0.001871"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:43.444848" elapsed="0.004366"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:43.449258" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:43.449413" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:43.443632" elapsed="0.005828"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:43.443210" elapsed="0.006307"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.449800" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:43.449576" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:43.443163" elapsed="0.006769"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:43.451279" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:43.450257" elapsed="0.001068"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:43.451475" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:43.436573" elapsed="0.015132"/>
</kw>
<msg time="2026-04-05T00:32:43.451874" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:43.422411" elapsed="0.029517"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.464464" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.476722" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.489039" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.489270" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.489459" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.489926" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:43.489718" elapsed="0.000353"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:43.489703" elapsed="0.000475"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.490358" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.490689" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.491033" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:43.489672" elapsed="0.001555"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:43.489538" elapsed="0.001718"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.491402" elapsed="0.000037"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:43.491497" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:32:43.491619" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:43.418157" elapsed="0.073488"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:43.493212" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:43.492839" elapsed="0.000559">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:43.493596" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:43.492326" elapsed="0.001296"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.493936" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:43.493694" elapsed="0.000378"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:43.494815" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:43.494299" elapsed="0.000557"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:43.494100" elapsed="0.000863"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:43.493675" elapsed="0.001311"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:43.501205" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:43.495134" elapsed="0.006098"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:43.501284" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:43.501452" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:43.492004" elapsed="0.009474"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:43.503070" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:43.502705" elapsed="0.000546">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:43.503444" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:43.502116" elapsed="0.001355"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:43.503677" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:32:43.503543" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:43.503525" elapsed="0.000267"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.503939" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.504107" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:43.504173" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:43.506237" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:43.501799" elapsed="0.004466"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:43.508088" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:43.507632" elapsed="0.000504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:43.508759" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:43.508288" elapsed="0.000517"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:43.583299" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:43.583693" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:43.583878" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:43.511161" elapsed="0.073153">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:43.508873" elapsed="0.075691">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.584757" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:43.584604" elapsed="0.000323"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:43.508854" elapsed="0.076099">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.585399" elapsed="0.000044"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:43.585553" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:43.585517" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:43.585499" elapsed="0.000117"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.585753" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:43.585822" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:43.506805" elapsed="0.079124">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:43.586003" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:43.395516" elapsed="0.190582">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:43.586360" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:43.586187" elapsed="0.000320"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:43.586170" elapsed="0.000363"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:43.586566" elapsed="0.000015"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:43.385280" elapsed="0.201386">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.642244" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:46.641640" elapsed="0.000659"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:46.643366" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:46.643103" elapsed="0.000365">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:46.643666" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:46.642663" elapsed="0.001047"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.644666" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:46.644049" elapsed="0.000663"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:46.645291" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:46.645611" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:46.645043" elapsed="0.000613"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.646380" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:46.645984" elapsed="0.000508"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.647728" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:46.647411" elapsed="0.000363"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.648192" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:46.647928" elapsed="0.000290"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.648888" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:46.648590" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:46.649667" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:46.649436" elapsed="0.000257"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:46.649745" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:32:46.649901" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:46.649096" elapsed="0.000830"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:46.650073" elapsed="0.000236"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:46.648457" elapsed="0.001892"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.650905" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:46.650609" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:46.651766" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:46.651549" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:46.651845" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:46.651996" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:46.651110" elapsed="0.000911"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:46.652226" elapsed="0.000240"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:46.650480" elapsed="0.002033"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:46.648271" elapsed="0.004278"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:46.652593" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:46.652749" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:46.647044" elapsed="0.005735"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:46.646648" elapsed="0.006192"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.653107" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:46.652899" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:46.646601" elapsed="0.006638"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.654552" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:46.653578" elapsed="0.001022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:46.654733" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:46.640051" elapsed="0.014912"/>
</kw>
<msg time="2026-04-05T00:32:46.655130" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:46.625982" elapsed="0.029201"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.667906" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.680254" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.693114" elapsed="0.000039"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.693344" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.693580" elapsed="0.000024"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.694092" elapsed="0.000089"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:46.693858" elapsed="0.000411"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:46.693841" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.694559" elapsed="0.000028"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.694901" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.695337" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:46.693808" elapsed="0.001770"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:46.693666" elapsed="0.001945"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.695781" elapsed="0.000024"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:46.695863" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:32:46.696003" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:46.621813" elapsed="0.074224"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:46.697801" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:46.697333" elapsed="0.000661">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:46.698195" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:46.696768" elapsed="0.001460"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.698584" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:46.698304" elapsed="0.000424"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.699521" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:46.698951" elapsed="0.000611"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:46.698757" elapsed="0.000926"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:46.698285" elapsed="0.001423"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.706272" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:46.699859" elapsed="0.006446"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:46.706365" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:46.706605" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:46.696408" elapsed="0.010222"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:46.708274" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:46.707871" elapsed="0.000608">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:46.708661" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:46.707315" elapsed="0.001372"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:46.708913" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:32:46.708758" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:46.708740" elapsed="0.000274"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.709173" elapsed="0.000024"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.709359" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:46.709445" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:32:46.711822" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:46.706981" elapsed="0.004875"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.713649" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:46.713139" elapsed="0.000560"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.714411" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:46.713852" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:46.785548" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:46.786410" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:46.786945" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:46.716983" elapsed="0.071030">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:46.714720" elapsed="0.073809">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.789033" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:46.788618" elapsed="0.000907"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:46.714701" elapsed="0.074896">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.790903" elapsed="0.000068"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:46.791229" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:46.791144" elapsed="0.000210"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:46.791101" elapsed="0.000305"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.791819" elapsed="0.000068"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:46.792005" elapsed="0.000043"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:46.712259" elapsed="0.080027">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:46.792508" elapsed="0.000042"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:46.598651" elapsed="0.194109">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.793472" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:46.792973" elapsed="0.000747"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:46.792932" elapsed="0.000851"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:46.793859" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:46.587847" elapsed="0.206245">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<msg time="2026-04-05T00:32:46.794206" level="FAIL">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${timeout}</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-05T00:32:14.561799" elapsed="32.232513">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${mapping}</arg>
<doc>Checks weather the device was mounted.</doc>
<status status="FAIL" start="2026-04-05T00:32:14.542010" elapsed="32.252509">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.803438" elapsed="0.000034"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${mod_session}</var>
<arg>member_index=${idx}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.803808" elapsed="0.000026"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}netconf-state</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${mod_session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.804005" elapsed="0.000022"/>
</kw>
<var name="${idx}"/>
<status status="NOT RUN" start="2026-04-05T00:32:46.803614" elapsed="0.000469"/>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:46.803543" elapsed="0.000575"/>
</for>
<kw name="Remove_Netconf_Device" type="TEARDOWN">
<kw name="Remove_Device_From_Netconf" owner="NetconfKeywords">
<kw name="Pop From Dictionary" owner="Collections">
<msg time="2026-04-05T00:32:46.805660" level="INFO">${device_type} = full-uri-device</msg>
<var>${device_type}</var>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<doc>Pops the given ``key`` from the ``dictionary`` and returns its value.</doc>
<status status="PASS" start="2026-04-05T00:32:46.805339" elapsed="0.000363"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.806343" level="INFO">${mapping} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:46.805879" elapsed="0.000494"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:46.827041" elapsed="0.000927"/>
</kw>
<msg time="2026-04-05T00:32:46.828224" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:46.826644" elapsed="0.001654"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:46.826191" elapsed="0.002185"/>
</kw>
<msg time="2026-04-05T00:32:46.828436" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:46.817080" elapsed="0.011416"/>
</kw>
<msg time="2026-04-05T00:32:46.828601" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:46.816698" elapsed="0.011928"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.874105" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:46.873326" elapsed="0.000889"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:46.875942" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:46.875378" elapsed="0.000677">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:46.876184" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:46.874538" elapsed="0.001763"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.877883" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:46.876700" elapsed="0.001296"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:46.878672" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:46.878919" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:46.878409" elapsed="0.000661"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.879947" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:46.879385" elapsed="0.000635"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.882122" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:46.881850" elapsed="0.000319"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.882882" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:46.882384" elapsed="0.000525"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.883723" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:46.883373" elapsed="0.000376"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:46.884752" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:46.884501" elapsed="0.000279"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:46.884844" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:32:46.885004" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:46.884108" elapsed="0.000922"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:46.885180" elapsed="0.000260"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:46.883229" elapsed="0.002260"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.886110" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:46.885770" elapsed="0.000368"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:46.887091" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:46.886831" elapsed="0.000288"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:46.887170" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:46.887320" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:46.886322" elapsed="0.001023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:46.887511" elapsed="0.000233"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:46.885624" elapsed="0.002164"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:46.883011" elapsed="0.004833"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:46.887910" elapsed="0.000072"/>
</return>
<msg time="2026-04-05T00:32:46.888282" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:46.880957" elapsed="0.007432"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:46.880226" elapsed="0.008282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.888839" elapsed="0.000086"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:46.888595" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:46.880203" elapsed="0.008876"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.890345" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:46.889228" elapsed="0.001258"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:46.890740" elapsed="0.000034"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:46.872168" elapsed="0.018741"/>
</kw>
<msg time="2026-04-05T00:32:46.890966" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:46.858842" elapsed="0.032188"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.904245" elapsed="0.000033"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.917328" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.930547" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.930743" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.930927" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.931373" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:46.931216" elapsed="0.000247"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:46.931200" elapsed="0.000292"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.931652" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.931835" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.932001" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:46.931167" elapsed="0.000888"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:46.931008" elapsed="0.001072"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.932224" elapsed="0.000026"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:46.932312" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:32:46.932462" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:46.854270" elapsed="0.078222"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.933699" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:46.933407" elapsed="0.000350"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:46.948726" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:46.948785" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:46.948883" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:32:46.936162" elapsed="0.012756"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:46.933830" elapsed="0.015138"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.949298" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:46.948999" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:46.933812" elapsed="0.015735"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.958972" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:46.952561" elapsed="0.006533"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:46.952005" elapsed="0.007173"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:46.951957" elapsed="0.007249"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.962150" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:46.959519" elapsed="0.002691"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:46.959265" elapsed="0.002982"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:46.959247" elapsed="0.003026"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.962893" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:46.962465" elapsed="0.000455"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.963261" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:46.962993" elapsed="0.000329"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.963950" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:46.963522" elapsed="0.000457"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:46.963346" elapsed="0.000670"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:46.962974" elapsed="0.001063"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.964621" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:46.964206" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:46.964950" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:46.964720" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:46.965656" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:46.965199" elapsed="0.000484"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:46.965031" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:46.964701" elapsed="0.001053"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:46.965921" elapsed="0.000542"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:32:46.967050" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:46.966635" elapsed="0.000446"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:32:46.967248" elapsed="0.005621"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:32:46.950868" elapsed="0.022069"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:32:46.972986" elapsed="0.000044"/>
</return>
<msg time="2026-04-05T00:32:46.975444" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:32:46.932784" elapsed="0.042699"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:32:46.975547" elapsed="0.000030"/>
</return>
<arg>${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>${mapping}</arg>
<arg>session=${session}</arg>
<arg>location=${location}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:32:46.828862" elapsed="0.146816"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf to deconfigure the specified device</doc>
<status status="PASS" start="2026-04-05T00:32:46.804872" elapsed="0.170871"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<doc>Removes configured device</doc>
<status status="PASS" start="2026-04-05T00:32:46.804343" elapsed="0.171455"/>
</kw>
<arg>${idx}</arg>
<doc>Netconf readines for a node is done by creating a netconf device connected to that node
and performing GET operation got from the device's mount point.</doc>
<status status="FAIL" start="2026-04-05T00:32:14.212738" elapsed="32.763145">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<var name="${idx}">1</var>
<status status="FAIL" start="2026-04-05T00:32:14.212299" elapsed="32.763648">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="FAIL" start="2026-04-05T00:32:14.211945" elapsed="32.764062">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</for>
<doc>Verifies the netconf readiness for every odl node.</doc>
<status status="FAIL" start="2026-04-05T00:32:14.211300" elapsed="32.764805">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Check_Netconf_Topology_Ready">
<for flavor="IN">
<iter>
<kw name="Verify_Netconf_Topology_Ready_For_Node">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:47.981206" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:47.980313" elapsed="0.000977"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:32:47.981460" elapsed="0.000086"/>
</return>
<msg time="2026-04-05T00:32:47.981862" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${node_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:32:47.979385" elapsed="0.002546"/>
</kw>
<kw name="Configure_Netconf_Device">
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:48.008477" elapsed="0.000985"/>
</kw>
<msg time="2026-04-05T00:32:48.009628" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:48.007972" elapsed="0.001719"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:48.007547" elapsed="0.002223"/>
</kw>
<msg time="2026-04-05T00:32:48.009820" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:47.998550" elapsed="0.011325"/>
</kw>
<msg time="2026-04-05T00:32:48.009990" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:47.998195" elapsed="0.011826"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.010980" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.010207" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.011509" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.011125" elapsed="0.000489"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.050610" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:48.049619" elapsed="0.001066"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:48.052707" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:48.052030" elapsed="0.000840">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:48.053090" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:48.051183" elapsed="0.001968"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.054589" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:48.053675" elapsed="0.000974"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:48.055693" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:48.056025" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:48.055124" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.056574" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:48.056283" elapsed="0.000337"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.057857" level="INFO">mapping: {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:48.057591" elapsed="0.000314"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.058334" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.058061" elapsed="0.000298"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.059060" level="INFO">${value} = 10.30.170.184</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:48.058761" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:48.059839" level="INFO">${encoded} = 10.30.170.184</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.059602" elapsed="0.000263"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:48.059919" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:32:48.060088" level="INFO">${encoded_value} = 10.30.170.184</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:48.059270" elapsed="0.000843"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.060262" elapsed="0.000300"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.184</var>
<status status="PASS" start="2026-04-05T00:32:48.058623" elapsed="0.001989"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.061152" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:48.060857" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:48.061910" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.061697" elapsed="0.000238"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:48.061983" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:48.062129" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:48.061358" elapsed="0.000795"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.062296" elapsed="0.000236"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:48.060728" elapsed="0.001846"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.063115" level="INFO">${value} = 2830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:48.062818" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:48.063889" level="INFO">${encoded} = 2830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.063678" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:48.063963" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:32:48.064113" level="INFO">${encoded_value} = 2830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:48.063323" elapsed="0.000814"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.064282" elapsed="0.000422"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">2830</var>
<status status="PASS" start="2026-04-05T00:32:48.062686" elapsed="0.002060"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.065282" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:48.064984" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:48.066022" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.065816" elapsed="0.000231"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:48.066095" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:48.066242" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:48.065508" elapsed="0.000757"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.066408" elapsed="0.000238"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:32:48.064857" elapsed="0.001829"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.067215" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:48.066922" elapsed="0.000318"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:48.067966" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.067757" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:48.068040" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:48.068224" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:48.067432" elapsed="0.000816"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.068393" elapsed="0.000236"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:32:48.066795" elapsed="0.001875"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.069200" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:48.068906" elapsed="0.000319"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:48.069946" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.069734" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:48.070020" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:48.070167" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:48.069405" elapsed="0.000786"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.070333" elapsed="0.000237"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:32:48.068779" elapsed="0.001832"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.071139" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:48.070846" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:48.071917" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.071700" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:48.071992" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:48.072139" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:48.071351" elapsed="0.000812"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.072308" elapsed="0.000235"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:32:48.070719" elapsed="0.001865"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.073130" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:48.072821" elapsed="0.000334"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:48.073880" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.073669" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:48.073955" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:48.074101" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:48.073343" elapsed="0.000781"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.074267" elapsed="0.000234"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:48.072694" elapsed="0.001848"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:48.058431" elapsed="0.016145"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:48.074617" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:32:48.074775" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:48.057244" elapsed="0.017557"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:48.056764" elapsed="0.018070"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.075016" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.074866" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:48.056732" elapsed="0.018361"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.076021" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:48.075289" elapsed="0.000761"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:48.076152" elapsed="0.000053"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:48.046936" elapsed="0.029505"/>
</kw>
<msg time="2026-04-05T00:32:48.076569" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:48.030686" elapsed="0.045983"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.098980" elapsed="0.000038"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.120764" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.142536" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.142783" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.142977" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.143582" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.143303" elapsed="0.000364"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:48.143285" elapsed="0.000495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.143991" elapsed="0.000043"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.144313" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.144664" elapsed="0.000044"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:48.143247" elapsed="0.001583"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:48.143106" elapsed="0.001784"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.145038" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:48.145192" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:32:48.145333" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:48.025979" elapsed="0.119380"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.172868" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:48.172488" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:48.173696" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:48.173447" elapsed="0.000325">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:48.173909" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:48.173103" elapsed="0.000831"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.174554" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:48.174150" elapsed="0.000431"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:48.174927" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:48.175078" level="INFO">${template} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVI...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:48.174786" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.175573" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;$DEVICE_USER&lt;/username&gt;
      &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:48.175309" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:32:48.176075" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.175743" elapsed="0.000391"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.176620" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:48.176301" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:48.176159" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:48.175722" elapsed="0.000981"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.177628" level="INFO">${final_text} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:48.176896" elapsed="0.000762"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:48.177755" elapsed="0.000053"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:48.171494" elapsed="0.006532"/>
</kw>
<msg time="2026-04-05T00:32:48.178116" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:48.158291" elapsed="0.019919"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.200789" elapsed="0.000039"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.222724" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.244339" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.244720" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.244913" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.245487" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.245212" elapsed="0.000359"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:48.245197" elapsed="0.000460"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.245857" elapsed="0.000044"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.246186" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.246527" elapsed="0.000045"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:48.245166" elapsed="0.001529"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:48.245036" elapsed="0.001718"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.246901" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:48.247052" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:32:48.247190" level="INFO">${data} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:48.155509" elapsed="0.091710"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:48.249989" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:48.249453" elapsed="0.000655">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:48.250235" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:48.247997" elapsed="0.002263"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.250725" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.250369" elapsed="0.000509"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.252024" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:48.251369" elapsed="0.000695"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:48.250905" elapsed="0.001238"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:48.250350" elapsed="0.001817"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.254935" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:48.252315" elapsed="0.002646"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:48.255059" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:48.255213" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:48.247618" elapsed="0.007619"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.257143" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:48.256667" elapsed="0.000538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.257850" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:48.257367" elapsed="0.000549"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.258601" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:48.258111" elapsed="0.000550"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.259290" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:48.258823" elapsed="0.000526"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:32:48.261001" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:32:48.260271" elapsed="0.000828"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:32:48.261894" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:32:48.261356" elapsed="0.000636"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.262246" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.263697" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:48.263011" elapsed="0.000907"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:32:48.264008" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:32:48.264276" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:32:48.259581" elapsed="0.004721"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:48.286202" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '439', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt; 
 </msg>
<msg time="2026-04-05T00:32:48.286316" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:48.286546" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:32:48.272386" elapsed="0.014218"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:48.264411" elapsed="0.022357"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.287058" elapsed="0.000108"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.286809" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:48.264392" elapsed="0.022981"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.293165" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:48.289728" elapsed="0.003526"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:48.289062" elapsed="0.004259"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:48.289017" elapsed="0.004399"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.297613" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:48.294204" elapsed="0.003504"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:48.293558" elapsed="0.004216"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:48.293515" elapsed="0.004354"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.300151" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:48.298593" elapsed="0.001698"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.301183" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.300494" elapsed="0.000785"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.302150" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:48.301695" elapsed="0.000490"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:48.301346" elapsed="0.000887"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:48.300446" elapsed="0.001852"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.303857" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:48.302812" elapsed="0.001161"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.304620" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.304108" elapsed="0.000695"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.305709" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:48.305218" elapsed="0.000527"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:48.304879" elapsed="0.000914"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:48.304074" elapsed="0.001785"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:48.306113" elapsed="0.000924"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:32:48.308009" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:48.307308" elapsed="0.000801"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.308374" elapsed="0.002739"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:32:48.288047" elapsed="0.023179"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:32:48.311474" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-05T00:32:48.311310" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:48.311291" elapsed="0.000331"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.311769" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:48.311876" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:32:48.314152" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:32:48.255654" elapsed="0.058525"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:32:48.314246" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:32:48.314404" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:32:48.014605" elapsed="0.299935"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.314889" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.314644" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:48.314626" elapsed="0.000356"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:32:48.315015" elapsed="0.000026"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:32:48.011889" elapsed="0.303255"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:48.011642" elapsed="0.303546"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:48.011101" elapsed="0.304110"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.315354" elapsed="0.000255"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=full-uri-device</arg>
<arg>device_port=${DEVICE_PORT}</arg>
<arg>device_address=${device_ip}</arg>
<arg>device_user=admin</arg>
<arg>device_password=admin</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:32:47.983768" elapsed="0.331907"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${ODL_SYSTEM_${node_index}_IP}</arg>
<doc>Configures the device via REST api.</doc>
<status status="PASS" start="2026-04-05T00:32:47.982240" elapsed="0.333504"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.316389" level="INFO">&amp;{mapping} = { DEVICE_NAME=test-device | RESTCONF_ROOT=/rests }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.315907" elapsed="0.000509"/>
</kw>
<kw name="Wait_Netconf_Device_Mounted">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:48.334915" elapsed="0.000782"/>
</kw>
<msg time="2026-04-05T00:32:48.335750" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:48.334559" elapsed="0.001245"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:48.334152" elapsed="0.001763"/>
</kw>
<msg time="2026-04-05T00:32:48.335975" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:48.325714" elapsed="0.010311"/>
</kw>
<msg time="2026-04-05T00:32:48.336135" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:48.325381" elapsed="0.010779"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.383033" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:48.382452" elapsed="0.000629"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:48.384128" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:48.383873" elapsed="0.000495">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:48.384579" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:48.383415" elapsed="0.001209"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.385711" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:48.384956" elapsed="0.000802"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:48.386359" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:48.386656" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:48.386111" elapsed="0.000590"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.387373" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:48.387022" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.388792" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:48.388532" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.389249" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.388991" elapsed="0.000284"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.389947" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:48.389650" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:48.390798" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.390580" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:48.390873" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:48.391021" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:48.390155" elapsed="0.000890"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.391191" elapsed="0.000222"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:48.389516" elapsed="0.001953"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.392002" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:48.391709" elapsed="0.000333"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:48.392760" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.392551" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:48.392834" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:48.392980" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:48.392222" elapsed="0.000782"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:48.393190" elapsed="0.000221"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:48.391581" elapsed="0.001889"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:48.389326" elapsed="0.004179"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:48.393548" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:32:48.393700" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:48.388047" elapsed="0.005679"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:48.387633" elapsed="0.006150"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.394044" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.393841" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:48.387592" elapsed="0.006583"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.395330" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:48.394572" elapsed="0.000805"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:48.395522" elapsed="0.000071"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:48.380908" elapsed="0.014842"/>
</kw>
<msg time="2026-04-05T00:32:48.395911" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:48.367226" elapsed="0.028738"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.408531" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.420917" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.433340" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.433540" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.433710" elapsed="0.000026"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.434172" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.433965" elapsed="0.000348"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:48.433950" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.434580" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.434885" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.435265" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:48.433920" elapsed="0.001556"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:48.433790" elapsed="0.001716"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.435650" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:48.435726" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:32:48.435844" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:48.363086" elapsed="0.072784"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:48.437457" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:48.437074" elapsed="0.000567">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:48.437820" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:48.436580" elapsed="0.001265"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.438153" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.437915" elapsed="0.000374"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.438980" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:48.438496" elapsed="0.000524"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:48.438317" elapsed="0.000809"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:48.437897" elapsed="0.001253"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.445320" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:48.439294" elapsed="0.006052"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:48.445397" elapsed="0.000042"/>
</return>
<msg time="2026-04-05T00:32:48.445565" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:48.436247" elapsed="0.009342"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:48.447146" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:48.446786" elapsed="0.000540">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:48.447518" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:48.446220" elapsed="0.001323"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:48.447745" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:32:48.447613" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:48.447595" elapsed="0.000231"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.447964" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.448142" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:48.448207" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:48.450087" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:48.445907" elapsed="0.004205"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.451918" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:48.451466" elapsed="0.000498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:48.452644" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:48.452139" elapsed="0.000550"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:48.470876" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:48.471329" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=503, reason=Service Unavailable 
 headers={'Content-Type': 'application/xml', 'Content-Length': '433'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;protocol&lt;/error-type&gt;&lt;error-path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology/a:topology[a:topology-id='topology-netconf']/a:node[a:node-id='test-device']&lt;/error-path&gt;&lt;error-message&gt;Mount point does not exist&lt;/error-message&gt;&lt;error-tag&gt;resource-denied-transport&lt;/error-tag&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:48.471618" level="FAIL">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:48.456267" elapsed="0.015952">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:48.452756" elapsed="0.019752">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.472773" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.472560" elapsed="0.000452"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:48.452738" elapsed="0.020311">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.473699" elapsed="0.000038"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:48.473887" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:48.473836" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:48.473811" elapsed="0.000165"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.474173" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:48.474269" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:48.450648" elapsed="0.023771">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:48.474584" elapsed="0.000023"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:48.341233" elapsed="0.133487">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:48.475085" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:48.474846" elapsed="0.000339"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:48.474823" elapsed="0.000394"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:48.475261" elapsed="0.000019"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:48.336951" elapsed="0.138442">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:51.532200" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:51.531519" elapsed="0.000820"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:51.533544" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:51.533247" elapsed="0.000384">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:51.533866" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:51.532783" elapsed="0.001141"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:51.534952" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:51.534288" elapsed="0.000712"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:51.535659" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:51.535920" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:51.535381" elapsed="0.000586"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:51.536706" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:51.536308" elapsed="0.000496"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:51.538299" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:51.537784" elapsed="0.000563"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:51.538802" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:51.538527" elapsed="0.000302"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:51.541559" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:51.540263" elapsed="0.001366"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:51.543506" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:51.542918" elapsed="0.000650"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:51.543688" elapsed="0.000086"/>
</return>
<msg time="2026-04-05T00:32:51.544052" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:51.542132" elapsed="0.001978"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:51.544758" elapsed="0.000537"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:51.539786" elapsed="0.005602"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:51.546666" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:51.545963" elapsed="0.000761"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:51.548400" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:51.547924" elapsed="0.000563"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:51.548601" elapsed="0.000067"/>
</return>
<msg time="2026-04-05T00:32:51.548939" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:51.547177" elapsed="0.001818"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:51.549321" elapsed="0.000525"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:51.545676" elapsed="0.004261"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:51.538884" elapsed="0.011129"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:51.550112" elapsed="0.000063"/>
</return>
<msg time="2026-04-05T00:32:51.550491" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:51.537437" elapsed="0.013114"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:51.536970" elapsed="0.013748"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.551382" elapsed="0.000108"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:51.550856" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:51.536922" elapsed="0.014931"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:51.553152" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:51.552294" elapsed="0.000906"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:51.553360" elapsed="0.000091"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:51.529695" elapsed="0.023920"/>
</kw>
<msg time="2026-04-05T00:32:51.553789" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:51.514492" elapsed="0.039363"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.566306" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.578608" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.590895" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.591115" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.591293" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.591788" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:51.591578" elapsed="0.000351"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:51.591561" elapsed="0.000443"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.592177" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.592507" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.592856" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:51.591525" elapsed="0.001526"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:51.591374" elapsed="0.001706"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.593224" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:51.593300" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:32:51.593441" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:51.509788" elapsed="0.083681"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:51.595158" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:51.594720" elapsed="0.000639">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:51.595559" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:51.594197" elapsed="0.001388"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.595902" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:51.595656" elapsed="0.000384"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:51.596757" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:51.596243" elapsed="0.000556"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:51.596069" elapsed="0.000839"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:51.595638" elapsed="0.001295"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:51.603386" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:51.597087" elapsed="0.006326"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:51.603486" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:51.603643" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:51.593869" elapsed="0.009799"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:51.605248" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:51.604885" elapsed="0.000560">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:51.605627" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:51.604310" elapsed="0.001342"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:51.605860" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:32:51.605725" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:51.605706" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.606083" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.606249" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:51.606314" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:51.608231" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:51.603992" elapsed="0.004265"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:51.610065" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:51.609610" elapsed="0.000501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:51.610731" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:51.610265" elapsed="0.000511"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:51.683003" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:51.683760" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:51.684160" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:51.613159" elapsed="0.071920">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:51.610843" elapsed="0.074774">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.686037" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:51.685700" elapsed="0.000719"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:51.610825" elapsed="0.075684">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.687577" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:51.687879" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:51.687797" elapsed="0.000176"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:51.687758" elapsed="0.000263"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.688326" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:51.688513" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:51.608791" elapsed="0.079962">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:51.688921" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:51.485870" elapsed="0.203274">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:51.689763" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:51.689346" elapsed="0.000577"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:51.689308" elapsed="0.000668"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:51.690046" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:51.476915" elapsed="0.213345">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:54.744651" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:54.744022" elapsed="0.000682"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:54.745778" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:54.745516" elapsed="0.000338">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:54.746047" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:54.745047" elapsed="0.001048"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:54.747045" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:54.746447" elapsed="0.000645"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:54.747692" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:54.748009" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:54.747442" elapsed="0.000612"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:54.748780" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:54.748383" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:54.750047" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:54.749788" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:54.750529" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:54.750246" elapsed="0.000309"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:54.751217" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:54.750917" elapsed="0.000325"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:54.751984" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:54.751757" elapsed="0.000253"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:54.752063" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:32:54.752224" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:54.751440" elapsed="0.000808"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:54.752397" elapsed="0.000281"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:54.750785" elapsed="0.001933"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:54.753255" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:54.752960" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:54.754263" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:54.754054" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:54.754337" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:32:54.754507" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:54.753597" elapsed="0.000935"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:54.754683" elapsed="0.000224"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:54.752832" elapsed="0.002115"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:54.750609" elapsed="0.004371"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:54.755023" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:32:54.755177" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:54.749463" elapsed="0.005740"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:54.749031" elapsed="0.006228"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.755541" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:54.755319" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:54.748985" elapsed="0.006688"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:54.756791" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:54.755967" elapsed="0.000871"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:54.756970" elapsed="0.000071"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:54.742478" elapsed="0.014721"/>
</kw>
<msg time="2026-04-05T00:32:54.757366" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:54.728239" elapsed="0.029287"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.770360" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.783292" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.796408" elapsed="0.000056"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.796676" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.796850" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.797318" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:54.797110" elapsed="0.000367"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:54.797095" elapsed="0.000459"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.797727" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.798034" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.798416" elapsed="0.000038"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:54.797063" elapsed="0.001565"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:54.796928" elapsed="0.001730"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.798802" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:54.798877" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:54.798997" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:54.723989" elapsed="0.075034"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:54.800693" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:54.800215" elapsed="0.000665">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:54.801059" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:54.799723" elapsed="0.001360"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.801397" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:54.801155" elapsed="0.000395"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:54.802417" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:54.801794" elapsed="0.000693"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:54.801577" elapsed="0.001099"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:54.801136" elapsed="0.001575"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:54.809392" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:54.802888" elapsed="0.006532"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:54.809490" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:32:54.809646" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:54.799386" elapsed="0.010284"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:54.811248" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:54.810870" elapsed="0.000580">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:54.811635" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:54.810323" elapsed="0.001337"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:54.811869" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:32:54.811732" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:54.811714" elapsed="0.000238"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.812127" elapsed="0.000029"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.812308" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:54.812375" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:54.814823" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:54.809999" elapsed="0.004850"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:54.816672" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:54.816085" elapsed="0.000635"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:54.817345" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:54.816870" elapsed="0.000522"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:54.889384" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:54.889917" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:54.890219" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:54.819724" elapsed="0.071151">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:54.817482" elapsed="0.073692">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.891532" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:54.891233" elapsed="0.000549"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:54.817461" elapsed="0.074360">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.892572" elapsed="0.000041"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:54.892774" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:54.892719" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:54.892692" elapsed="0.000249"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.893209" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:54.893369" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:54.815215" elapsed="0.078516">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:54.893983" elapsed="0.000051"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:54.701590" elapsed="0.192700">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:54.895159" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:54.894643" elapsed="0.000695"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:54.894594" elapsed="0.000798"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:54.895506" elapsed="0.000036"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:54.691326" elapsed="0.204412">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:57.950161" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:57.949548" elapsed="0.000668"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:57.951304" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:57.951036" elapsed="0.000347">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:57.951597" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:57.950589" elapsed="0.001052"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:57.952598" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:57.951979" elapsed="0.000667"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:32:57.953317" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:32:57.953729" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:32:57.953027" elapsed="0.000749"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:57.954628" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:57.954143" elapsed="0.000621"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:57.956016" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:57.955754" elapsed="0.000308"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:32:57.956503" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:32:57.956217" elapsed="0.000311"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:57.957227" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:57.956923" elapsed="0.000395"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:57.958087" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:57.957849" elapsed="0.000267"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:57.958171" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:32:57.958342" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:57.957528" elapsed="0.000839"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:57.958660" elapsed="0.000258"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:32:57.956759" elapsed="0.002203"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:32:57.959552" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:32:57.959215" elapsed="0.000363"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:32:57.960475" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:32:57.960244" elapsed="0.000257"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:32:57.960551" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:57.960704" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:32:57.959767" elapsed="0.000962"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:32:57.960892" elapsed="0.000226"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:32:57.959081" elapsed="0.002078"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:32:57.956582" elapsed="0.004611"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:32:57.961243" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:32:57.961400" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:32:57.955407" elapsed="0.006034"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:57.954976" elapsed="0.006524"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:57.961766" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:57.961560" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:57.954915" elapsed="0.006982"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:32:57.963133" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:32:57.962196" elapsed="0.000985"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:32:57.963311" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:32:57.947927" elapsed="0.015632"/>
</kw>
<msg time="2026-04-05T00:32:57.963727" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:32:57.933750" elapsed="0.030034"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:57.976489" elapsed="0.000050"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:57.989408" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.001751" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.001945" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.002117" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.002615" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:58.002385" elapsed="0.000371"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:58.002368" elapsed="0.000464"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.003006" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.003319" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.003684" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:32:58.002334" elapsed="0.001545"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:32:58.002197" elapsed="0.001711"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.004052" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:58.004128" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:32:58.004258" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:32:57.929544" elapsed="0.074740"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:58.005949" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:58.005535" elapsed="0.000610">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:58.006326" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:58.005006" elapsed="0.001345"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.006706" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:58.006442" elapsed="0.000402"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:32:58.007561" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:32:58.007047" elapsed="0.000555"/>
</kw>
<status status="PASS" start="2026-04-05T00:32:58.006871" elapsed="0.000840"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:58.006405" elapsed="0.001329"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:32:58.014108" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:32:58.007881" elapsed="0.006254"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:32:58.014187" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:32:58.014342" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:58.004661" elapsed="0.009705"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:32:58.015955" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:32:58.015593" elapsed="0.000543">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:32:58.016350" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:32:58.015096" elapsed="0.001279"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:32:58.016596" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:32:58.016461" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:32:58.016442" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.016819" elapsed="0.000033"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.016998" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:32:58.017064" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:32:58.019073" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:32:58.014778" elapsed="0.004321"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:58.020749" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:58.020276" elapsed="0.000520"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:32:58.021416" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:32:58.020968" elapsed="0.000510"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:32:58.096014" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:32:58.096881" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:32:58.097279" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:32:58.023846" elapsed="0.074119">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:32:58.021545" elapsed="0.076775">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.098806" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:58.098403" elapsed="0.000730"/>
</branch>
<status status="FAIL" start="2026-04-05T00:32:58.021527" elapsed="0.077657">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.099979" elapsed="0.000045"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:58.100193" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:32:58.100137" elapsed="0.000119"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:58.100108" elapsed="0.000178"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.100529" elapsed="0.000033"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:32:58.100632" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:32:58.019462" elapsed="0.081330">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:58.100925" elapsed="0.000028"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:32:57.905299" elapsed="0.195863">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:32:58.101583" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:32:58.101297" elapsed="0.000392"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:32:58.101272" elapsed="0.000450"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:32:58.101768" elapsed="0.000021"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:32:57.896878" elapsed="0.205032">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:01.155730" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:01.155108" elapsed="0.000676"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:01.157641" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:01.157012" elapsed="0.000781">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:01.158230" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:01.156150" elapsed="0.002176"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:01.160495" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:01.159105" elapsed="0.001552"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:01.161755" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:01.162124" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:01.161296" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:01.163239" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:01.162706" elapsed="0.000675"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:01.165125" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:01.164746" elapsed="0.000445"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:01.165949" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:01.165553" elapsed="0.000434"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:01.166977" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:01.166537" elapsed="0.000478"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:01.168111" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:01.167789" elapsed="0.000360"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:01.168224" elapsed="0.000049"/>
</return>
<msg time="2026-04-05T00:33:01.168471" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:01.167285" elapsed="0.001240"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:01.168753" elapsed="0.000353"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:01.166315" elapsed="0.002853"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:01.170026" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:01.169588" elapsed="0.000476"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:01.171489" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:01.171160" elapsed="0.000367"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:01.171600" elapsed="0.000043"/>
</return>
<msg time="2026-04-05T00:33:01.171819" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:01.170492" elapsed="0.001362"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:01.172070" elapsed="0.000324"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:01.169335" elapsed="0.003140"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:01.166062" elapsed="0.006498"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:01.172624" elapsed="0.000040"/>
</return>
<msg time="2026-04-05T00:33:01.172851" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:01.164223" elapsed="0.008664"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:01.163630" elapsed="0.009343"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.173269" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:01.173059" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:01.163564" elapsed="0.009835"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:01.174562" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:01.173766" elapsed="0.000842"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:01.174738" elapsed="0.000071"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:01.153484" elapsed="0.021481"/>
</kw>
<msg time="2026-04-05T00:33:01.175132" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:01.139345" elapsed="0.035840"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.187536" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.199729" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.211959" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.212146" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.212313" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.212804" elapsed="0.000095"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:01.212595" elapsed="0.000386"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:01.212580" elapsed="0.000476"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.213229" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.213559" elapsed="0.000025"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.213907" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:01.212548" elapsed="0.001552"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:01.212388" elapsed="0.001741"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.214270" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:01.214345" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:33:01.214486" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:01.135179" elapsed="0.079333"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:01.216061" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:01.215690" elapsed="0.000557">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:01.216440" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:01.215184" elapsed="0.001283"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.216811" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:01.216559" elapsed="0.000389"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:01.217659" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:01.217146" elapsed="0.000554"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:01.216975" elapsed="0.000831"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:01.216537" elapsed="0.001293"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:01.224218" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:01.217975" elapsed="0.006270"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:01.224297" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:33:01.224462" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:01.214863" elapsed="0.009625"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:01.225999" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:01.225640" elapsed="0.000540">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:01.226356" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:01.225137" elapsed="0.001244"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:01.226655" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:33:01.226515" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:01.226495" elapsed="0.000242"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.226877" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.227041" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:01.227110" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:01.229038" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:01.224820" elapsed="0.004245"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:01.230912" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:01.230238" elapsed="0.000721"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:01.231571" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:01.231109" elapsed="0.000507"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:01.304044" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:01.304817" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:01.305217" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:01.233882" elapsed="0.072287">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:01.231683" elapsed="0.074940">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.307052" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:01.306704" elapsed="0.000753"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:01.231664" elapsed="0.075854">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.308563" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:01.308861" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:01.308779" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:01.308740" elapsed="0.000262"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.309306" elapsed="0.000046"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:01.309488" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:01.229415" elapsed="0.080309">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:01.309888" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:01.113406" elapsed="0.196693">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:01.310706" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:01.310296" elapsed="0.000569"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:01.310260" elapsed="0.000657"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:01.310987" elapsed="0.000031"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:01.102960" elapsed="0.208239">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:04.364974" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:04.364307" elapsed="0.000720"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:04.366136" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:04.365855" elapsed="0.000360">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:04.366412" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:04.365377" elapsed="0.001099"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:04.367414" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:04.366815" elapsed="0.000663"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:04.368096" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:04.368393" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:04.367841" elapsed="0.000614"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:04.369149" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:04.368790" elapsed="0.000453"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:04.370466" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:04.370194" elapsed="0.000318"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:04.370934" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:04.370665" elapsed="0.000295"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:04.371633" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:04.371319" elapsed="0.000339"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:04.372400" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:04.372180" elapsed="0.000261"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:04.372494" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:33:04.372656" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:04.371864" elapsed="0.000817"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:04.372828" elapsed="0.000242"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:04.371188" elapsed="0.001923"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:04.373933" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:04.373629" elapsed="0.000329"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:04.374825" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:04.374615" elapsed="0.000236"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:04.374901" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:04.375050" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:04.374139" elapsed="0.000936"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:04.375222" elapsed="0.000238"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:04.373223" elapsed="0.002279"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:04.371013" elapsed="0.004523"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:04.375579" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:33:04.375819" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:04.369866" elapsed="0.005979"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:04.369399" elapsed="0.006504"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.376171" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:04.375964" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:04.369352" elapsed="0.006955"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:04.377409" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:04.376623" elapsed="0.000850"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:04.377606" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:04.362725" elapsed="0.015111"/>
</kw>
<msg time="2026-04-05T00:33:04.378006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:04.348661" elapsed="0.029399"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.390439" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.402785" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.415188" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.415379" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.415564" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.416082" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:04.415868" elapsed="0.000358"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:04.415853" elapsed="0.000450"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.416501" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.416815" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.417165" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:04.415819" elapsed="0.001544"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:04.415642" elapsed="0.001750"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.417553" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:04.417672" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:33:04.417796" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:04.344449" elapsed="0.073373"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:04.419411" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:04.419023" elapsed="0.000598">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:04.419821" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:04.418525" elapsed="0.001321"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.420163" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:04.419917" elapsed="0.000385"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:04.421010" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:04.420517" elapsed="0.000534"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:04.420330" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:04.419899" elapsed="0.001285"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:04.427400" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:04.421333" elapsed="0.006108"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:04.427493" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:33:04.427646" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:04.418179" elapsed="0.009492"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:04.429210" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:04.428846" elapsed="0.000548">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:04.429593" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:04.428342" elapsed="0.001276"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:04.429824" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:33:04.429689" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:04.429671" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.430045" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.430208" elapsed="0.000026"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:04.430278" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:04.432484" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:04.428023" elapsed="0.004488"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:04.434141" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:04.433686" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:04.435034" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:04.434336" elapsed="0.000743"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:04.508803" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:04.509639" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:04.510067" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:04.437344" elapsed="0.073664">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:04.435146" elapsed="0.076315">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.511936" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:04.511544" elapsed="0.000782"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:04.435128" elapsed="0.077259">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.513410" elapsed="0.000114"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:04.513767" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:04.513685" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:04.513644" elapsed="0.000264"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.514213" elapsed="0.000046"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:04.514365" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:04.432866" elapsed="0.081770">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:04.514802" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:04.322503" elapsed="0.192511">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:04.515628" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:04.515213" elapsed="0.000594"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:04.515176" elapsed="0.000684"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:04.515931" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:04.312352" elapsed="0.203794">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:07.574088" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:07.573389" elapsed="0.000753"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:07.575248" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:07.574981" elapsed="0.000340">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:07.575535" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:07.574519" elapsed="0.001170"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:07.576681" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:07.576036" elapsed="0.000693"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:07.577314" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:07.577607" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:07.577065" elapsed="0.000588"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:07.578342" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:07.577982" elapsed="0.000475"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:07.579689" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:07.579407" elapsed="0.000328"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:07.580156" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:07.579891" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:07.580918" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:07.580560" elapsed="0.000385"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:07.581831" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:07.581602" elapsed="0.000255"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:07.581910" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:33:07.582074" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:07.581137" elapsed="0.000963"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:07.582251" elapsed="0.000272"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:07.580407" elapsed="0.002158"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:07.583114" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:07.582815" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:07.583865" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:07.583655" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:07.583940" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:07.584088" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:07.583323" elapsed="0.000792"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:07.584262" elapsed="0.000239"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:07.582684" elapsed="0.001861"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:07.580235" elapsed="0.004345"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:07.584622" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:07.584863" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:07.579071" elapsed="0.005818"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:07.578624" elapsed="0.006324"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.585216" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:07.585009" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:07.578574" elapsed="0.006772"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:07.586782" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:07.585697" elapsed="0.001132"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:07.586959" elapsed="0.000071"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:07.571560" elapsed="0.015629"/>
</kw>
<msg time="2026-04-05T00:33:07.587399" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:07.555891" elapsed="0.031583"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.600152" elapsed="0.000033"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.612594" elapsed="0.000039"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.625034" elapsed="0.000064"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.625300" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.625495" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.626015" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:07.625800" elapsed="0.000359"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:07.625780" elapsed="0.000457"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.626467" elapsed="0.000031"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.626797" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.627147" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:07.625737" elapsed="0.001607"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:07.625582" elapsed="0.001794"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.627541" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:07.627622" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:33:07.627780" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:07.551238" elapsed="0.076570"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:07.629657" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:07.629166" elapsed="0.000695">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:07.630051" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:07.628555" elapsed="0.001522"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.630510" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:07.630217" elapsed="0.000437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:07.631371" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:07.630862" elapsed="0.000550"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:07.630682" elapsed="0.000861"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:07.630198" elapsed="0.001371"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:07.640041" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:07.631719" elapsed="0.008364"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:07.640168" elapsed="0.000051"/>
</return>
<msg time="2026-04-05T00:33:07.640412" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:07.628184" elapsed="0.012288"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:07.643185" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:07.642347" elapsed="0.001143">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:07.643759" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:07.641597" elapsed="0.002200"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:07.644143" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-05T00:33:07.643910" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:07.643880" elapsed="0.000389"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.644504" elapsed="0.000033"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.644753" elapsed="0.000030"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:07.644849" elapsed="0.000023"/>
</return>
<msg time="2026-04-05T00:33:07.647696" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:07.640991" elapsed="0.006736"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:07.649670" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:07.649054" elapsed="0.000674"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:07.650336" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:07.649881" elapsed="0.000500"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:07.739328" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:07.740071" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:07.740518" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:07.652764" elapsed="0.088692">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:07.650569" elapsed="0.091316">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.742353" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:07.741965" elapsed="0.000800"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:07.650544" elapsed="0.092372">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.743667" elapsed="0.000038"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:07.743859" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:07.743805" elapsed="0.000115"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:07.743781" elapsed="0.000169"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.744145" elapsed="0.000029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:07.744241" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:07.648173" elapsed="0.096219">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:07.744522" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:07.526331" elapsed="0.218328">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:07.745030" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:07.744785" elapsed="0.000345"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:07.744762" elapsed="0.000401"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:07.745207" elapsed="0.000019"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:07.517293" elapsed="0.228050">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:10.799889" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:10.799228" elapsed="0.000715"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:10.801027" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:10.800768" elapsed="0.000332">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:10.801302" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:10.800293" elapsed="0.001053"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:10.802314" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:10.801720" elapsed="0.000641"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:10.802987" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:10.803251" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:10.802720" elapsed="0.000575"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:10.804080" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:10.803722" elapsed="0.000455"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:10.805615" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:10.805254" elapsed="0.000408"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:10.806090" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:10.805820" elapsed="0.000296"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:10.806796" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:10.806497" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:10.807592" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:10.807331" elapsed="0.000293"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:10.807683" elapsed="0.000038"/>
</return>
<msg time="2026-04-05T00:33:10.807846" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:10.807011" elapsed="0.000860"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:10.808019" elapsed="0.000242"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:10.806345" elapsed="0.001957"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:10.808858" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:10.808561" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:10.809774" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:10.809377" elapsed="0.000423"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:10.809850" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:10.809998" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:10.809068" elapsed="0.000954"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:10.810175" elapsed="0.000222"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:10.808415" elapsed="0.002044"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:10.806170" elapsed="0.004325"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:10.810539" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:33:10.810695" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:10.804810" elapsed="0.005911"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:10.804342" elapsed="0.006441"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.811057" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:10.810844" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:10.804294" elapsed="0.006896"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:10.812620" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:10.811553" elapsed="0.001116"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:10.812801" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:10.797562" elapsed="0.015468"/>
</kw>
<msg time="2026-04-05T00:33:10.813198" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:10.783480" elapsed="0.029776"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.825897" elapsed="0.000053"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.838713" elapsed="0.000050"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.851405" elapsed="0.000076"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.851687" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.851869" elapsed="0.000048"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.852419" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:10.852204" elapsed="0.000378"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:10.852185" elapsed="0.000477"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.852840" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.853154" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.853524" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:10.852141" elapsed="0.001581"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:10.851986" elapsed="0.001767"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.853899" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:10.853979" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:33:10.854142" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:10.779027" elapsed="0.075143"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:10.855961" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:10.855492" elapsed="0.000692">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:10.856371" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:10.854916" elapsed="0.001480"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.856752" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:10.856486" elapsed="0.000404"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:10.857612" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:10.857093" elapsed="0.000559"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:10.856918" elapsed="0.000844"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:10.856467" elapsed="0.001319"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:10.864102" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:10.857933" elapsed="0.006197"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:10.864184" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:33:10.864344" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:10.854562" elapsed="0.009806"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:10.866024" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:10.865635" elapsed="0.000578">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:10.866392" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:10.865121" elapsed="0.001296"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:10.866777" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:33:10.866640" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:10.866621" elapsed="0.000237"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.867000" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.867172" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:10.867237" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:10.869359" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:10.864790" elapsed="0.004596"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:10.871096" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:10.870630" elapsed="0.000513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:10.871922" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:10.871289" elapsed="0.000679"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:10.940522" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:10.941247" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:10.941706" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:10.874237" elapsed="0.068415">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:10.872067" elapsed="0.071014">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.943586" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:10.943169" elapsed="0.000803"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:10.872044" elapsed="0.071986">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.945110" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:10.945411" elapsed="0.000110"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:10.945327" elapsed="0.000259"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:10.945287" elapsed="0.000348"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.945943" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:10.946095" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:10.869765" elapsed="0.076569">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:10.946634" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:10.756448" elapsed="0.190410">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:10.947492" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:10.947061" elapsed="0.000592"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:10.947024" elapsed="0.000681"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:10.947776" elapsed="0.000031"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:10.746350" elapsed="0.201638">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:14.008233" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:14.007632" elapsed="0.000655"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:14.009373" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:14.009094" elapsed="0.000385">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:14.009706" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:14.008651" elapsed="0.001099"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:14.010706" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:14.010090" elapsed="0.000662"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:14.011336" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:14.011636" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:14.011087" elapsed="0.000593"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:14.012365" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:14.012007" elapsed="0.000492"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:14.013740" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:14.013414" elapsed="0.000370"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:14.014206" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:14.013939" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:14.014909" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:14.014613" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:14.015663" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:14.015442" elapsed="0.000252"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:14.015747" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:33:14.015911" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:14.015115" elapsed="0.000910"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:14.016182" elapsed="0.000263"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:14.014479" elapsed="0.002008"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:14.017031" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:14.016732" elapsed="0.000325"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:14.017922" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:14.017711" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:14.017998" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:14.018178" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:14.017240" elapsed="0.000963"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:14.018349" elapsed="0.000244"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:14.016603" elapsed="0.002032"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:14.014285" elapsed="0.004385"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:14.018715" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:33:14.018867" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:14.013062" elapsed="0.005830"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:14.012661" elapsed="0.006288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.019215" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:14.019008" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:14.012614" elapsed="0.006731"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:14.020619" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:14.019656" elapsed="0.001010"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:14.020796" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:14.006070" elapsed="0.014955"/>
</kw>
<msg time="2026-04-05T00:33:14.021188" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:13.992173" elapsed="0.029068"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.033940" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.046286" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.058624" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.058846" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.059015" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.059494" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:14.059269" elapsed="0.000367"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:14.059254" elapsed="0.000457"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.059884" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.060193" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.060554" elapsed="0.000026"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:14.059223" elapsed="0.001528"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:14.059091" elapsed="0.001689"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.060923" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:14.060998" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:14.061116" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:13.987957" elapsed="0.073185"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:14.062741" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:14.062356" elapsed="0.000569">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:14.063103" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:14.061858" elapsed="0.001271"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.063468" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:14.063202" elapsed="0.000402"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:14.064284" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:14.063804" elapsed="0.000520"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:14.063631" elapsed="0.000823"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:14.063181" elapsed="0.001298"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:14.070700" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:14.064626" elapsed="0.006101"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:14.070777" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:14.070928" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:14.061517" elapsed="0.009436"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:14.072559" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:14.072092" elapsed="0.000650">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:14.072919" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:14.071605" elapsed="0.001339"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:14.073147" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:33:14.073014" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:14.072996" elapsed="0.000271"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.073412" elapsed="0.000042"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.073602" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:14.073667" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:14.075743" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:14.071271" elapsed="0.004499"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:14.077601" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:14.077131" elapsed="0.000517"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:14.078272" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:14.077795" elapsed="0.000522"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:14.150909" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:14.151638" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:14.152035" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:14.080634" elapsed="0.072317">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:14.078383" elapsed="0.074986">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.153818" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:14.153479" elapsed="0.000718"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:14.078365" elapsed="0.075892">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.155284" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:14.155639" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:14.155558" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:14.155517" elapsed="0.000261"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.156083" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:14.156235" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:14.076124" elapsed="0.080393">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:14.156688" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:13.960052" elapsed="0.196849">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:14.157510" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:14.157098" elapsed="0.000643"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:14.157062" elapsed="0.000735"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:14.157871" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:13.949122" elapsed="0.208968">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:17.214744" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:17.214115" elapsed="0.000682"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:17.215895" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:17.215624" elapsed="0.000349">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:17.216167" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:17.215151" elapsed="0.001059"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:17.217159" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:17.216560" elapsed="0.000647"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:17.217807" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:17.218114" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:17.217558" elapsed="0.000603"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:17.218875" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:17.218515" elapsed="0.000454"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:17.220152" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:17.219896" elapsed="0.000301"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:17.220652" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:17.220350" elapsed="0.000328"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:17.221334" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:17.221037" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:17.222129" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:17.221875" elapsed="0.000280"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:17.222207" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:33:17.222369" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:17.221564" elapsed="0.000830"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:17.222558" elapsed="0.000245"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:17.220906" elapsed="0.001938"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:17.223397" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:17.223102" elapsed="0.000464"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:17.224269" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:17.224061" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:17.224345" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:17.224512" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:17.223752" elapsed="0.000785"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:17.224772" elapsed="0.000225"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:17.222959" elapsed="0.002079"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:17.220731" elapsed="0.004341"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:17.225115" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:33:17.225270" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:17.219572" elapsed="0.005722"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:17.219126" elapsed="0.006225"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.225635" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:17.225412" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:17.219079" elapsed="0.006687"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:17.227889" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:17.227081" elapsed="0.000855"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:17.228067" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:17.212518" elapsed="0.015778"/>
</kw>
<msg time="2026-04-05T00:33:17.228484" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:17.197524" elapsed="0.031016"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.288470" elapsed="0.000062"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.301150" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.313493" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.313709" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.313889" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.314465" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:17.314188" elapsed="0.000426"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:17.314168" elapsed="0.000529"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.314878" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.315195" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.315630" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:17.314123" elapsed="0.001712"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:17.313974" elapsed="0.001894"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.316015" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:17.316097" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:33:17.316254" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:17.193335" elapsed="0.122947"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:17.318002" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:17.317579" elapsed="0.000618">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:17.318443" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:17.317011" elapsed="0.001459"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.318804" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:17.318543" elapsed="0.000399"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:17.319653" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:17.319141" elapsed="0.000552"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:17.318971" elapsed="0.000834"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:17.318525" elapsed="0.001304"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:17.326211" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:17.319977" elapsed="0.006261"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:17.326317" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:33:17.326491" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:17.316658" elapsed="0.009859"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:17.328074" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:17.327670" elapsed="0.000595">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:17.328575" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:17.327162" elapsed="0.001440"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:17.328810" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:33:17.328675" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:17.328656" elapsed="0.000239"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.329038" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.329205" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:17.329270" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:17.331198" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:17.326839" elapsed="0.004389"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:17.333096" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:17.332633" elapsed="0.000512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:17.333802" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:17.333295" elapsed="0.000555"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:17.402481" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:17.403199" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:17.403652" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:17.336127" elapsed="0.068454">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:17.333919" elapsed="0.071084">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.405447" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:17.405081" elapsed="0.000753"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:17.333900" elapsed="0.071993">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.406978" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:17.407233" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:17.407182" elapsed="0.000110"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:17.407155" elapsed="0.000166"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.407563" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:17.407662" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:17.331647" elapsed="0.076164">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:17.407915" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:17.168057" elapsed="0.239991">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:17.408412" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:17.408174" elapsed="0.000361"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:17.408151" elapsed="0.000417"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:17.408617" elapsed="0.000019"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:17.159157" elapsed="0.249594">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.462890" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:20.462254" elapsed="0.000754"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:20.464090" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:20.463825" elapsed="0.000342">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:20.464369" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:20.463363" elapsed="0.001050"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.465375" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:20.464777" elapsed="0.000658"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:20.466025" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:20.466283" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:20.465777" elapsed="0.000550"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.467082" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:20.466713" elapsed="0.000468"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.468363" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:20.468101" elapsed="0.000307"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.468911" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:20.468639" elapsed="0.000298"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.469625" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:20.469308" elapsed="0.000343"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:20.470381" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:20.470156" elapsed="0.000251"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:20.470476" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:33:20.470656" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:20.469839" elapsed="0.000842"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:20.470833" elapsed="0.000248"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:20.469174" elapsed="0.001947"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.471683" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:20.471369" elapsed="0.000340"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:20.472709" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:20.472364" elapsed="0.000371"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:20.472786" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:33:20.472938" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:20.472045" elapsed="0.000917"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:20.473111" elapsed="0.000222"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:20.471237" elapsed="0.002138"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:20.468993" elapsed="0.004416"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:20.473471" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:33:20.473628" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:20.467774" elapsed="0.005879"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:20.467342" elapsed="0.006369"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.473977" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:20.473771" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:20.467295" elapsed="0.006812"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.475284" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:20.474409" elapsed="0.000922"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:20.475482" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:20.460695" elapsed="0.015020"/>
</kw>
<msg time="2026-04-05T00:33:20.475881" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:20.446635" elapsed="0.029301"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.488693" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.501128" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.513514" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.513714" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.513890" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.514368" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:20.514156" elapsed="0.000372"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:20.514139" elapsed="0.000464"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.514831" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.515152" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.515515" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:20.514105" elapsed="0.001607"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:20.513969" elapsed="0.001772"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.515889" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:20.515966" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:33:20.516095" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:20.442363" elapsed="0.073758"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:20.517793" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:20.517385" elapsed="0.000598">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:20.518164" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:20.516879" elapsed="0.001311"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.518535" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:20.518267" elapsed="0.000407"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.519386" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:20.518892" elapsed="0.000549"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:20.518702" elapsed="0.000854"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:20.518248" elapsed="0.001332"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.526011" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:20.519732" elapsed="0.006306"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:20.526090" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:33:20.526247" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:20.516549" elapsed="0.009722"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:20.527836" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:20.527462" elapsed="0.000559">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:20.528201" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:20.526950" elapsed="0.001276"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:20.528580" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:33:20.528298" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:20.528279" elapsed="0.000386"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.528809" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.528974" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:20.529039" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:20.530991" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:20.526615" elapsed="0.004402"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.532831" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:20.532212" elapsed="0.000667"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.533490" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:20.533028" elapsed="0.000509"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:20.614012" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:20.614509" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:20.614777" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:20.535820" elapsed="0.079643">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:20.533605" elapsed="0.082198">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.616095" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:20.615857" elapsed="0.000479"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:20.533586" elapsed="0.082787">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.617047" elapsed="0.000038"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:20.617239" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:20.617186" elapsed="0.000114"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:20.617161" elapsed="0.000169"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.617544" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:20.617643" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:20.531384" elapsed="0.086413">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:20.617903" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:20.419943" elapsed="0.198098">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.618418" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:20.618169" elapsed="0.000375"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:20.618145" elapsed="0.000432"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:20.618621" elapsed="0.000021"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:20.409814" elapsed="0.208945">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<msg time="2026-04-05T00:33:20.618895" level="FAIL">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${timeout}</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-05T00:32:48.336319" elapsed="32.282724">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${mapping}</arg>
<doc>Checks weather the device was mounted.</doc>
<status status="FAIL" start="2026-04-05T00:32:48.316574" elapsed="32.302629">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.629085" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${mod_session}</var>
<arg>member_index=${idx}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.629450" elapsed="0.000025"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}netconf-state</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${mod_session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.629636" elapsed="0.000021"/>
</kw>
<var name="${idx}"/>
<status status="NOT RUN" start="2026-04-05T00:33:20.629243" elapsed="0.000497"/>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:20.629174" elapsed="0.000599"/>
</for>
<kw name="Remove_Netconf_Device" type="TEARDOWN">
<kw name="Remove_Device_From_Netconf" owner="NetconfKeywords">
<kw name="Pop From Dictionary" owner="Collections">
<msg time="2026-04-05T00:33:20.631227" level="INFO">${device_type} = full-uri-device</msg>
<var>${device_type}</var>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<doc>Pops the given ``key`` from the ``dictionary`` and returns its value.</doc>
<status status="PASS" start="2026-04-05T00:33:20.630922" elapsed="0.000332"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.631882" level="INFO">${mapping} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:20.631415" elapsed="0.000493"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:20.650128" elapsed="0.000866"/>
</kw>
<msg time="2026-04-05T00:33:20.651249" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:20.649769" elapsed="0.001551"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:20.649341" elapsed="0.002054"/>
</kw>
<msg time="2026-04-05T00:33:20.651455" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:20.640642" elapsed="0.010871"/>
</kw>
<msg time="2026-04-05T00:33:20.651614" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:20.640280" elapsed="0.011358"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.694914" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:20.694239" elapsed="0.000787"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:20.696677" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:20.696152" elapsed="0.000633">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:20.696909" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:20.695370" elapsed="0.001645"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.698398" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:20.697354" elapsed="0.001172"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:20.699131" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:20.699359" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:20.698904" elapsed="0.000580"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.700271" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:20.699782" elapsed="0.000552"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.702297" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:20.702035" elapsed="0.000308"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.702821" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:20.702556" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.703634" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:20.703311" elapsed="0.000349"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:20.704410" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:20.704185" elapsed="0.000412"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:20.704692" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:33:20.704851" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:20.703844" elapsed="0.001032"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:20.705024" elapsed="0.000233"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:20.703178" elapsed="0.002120"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.705857" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:20.705556" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:20.706631" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:20.706404" elapsed="0.000252"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:20.706705" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:20.706853" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:20.706066" elapsed="0.000811"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:20.707062" elapsed="0.000263"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:20.705409" elapsed="0.001958"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:20.702943" elapsed="0.004479"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:20.707503" elapsed="0.000070"/>
</return>
<msg time="2026-04-05T00:33:20.707866" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:20.701253" elapsed="0.006701"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:20.700593" elapsed="0.007436"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.708319" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:20.708105" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:20.700571" elapsed="0.008042"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.709880" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:20.708762" elapsed="0.001228"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:20.710215" elapsed="0.000032"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:20.693158" elapsed="0.017204"/>
</kw>
<msg time="2026-04-05T00:33:20.710417" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:20.680443" elapsed="0.030053"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.723005" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.735326" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.749293" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.749607" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.749785" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.750221" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:20.750076" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:20.750059" elapsed="0.000244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.750463" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.750630" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.750790" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:20.750023" elapsed="0.000820"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:20.749866" elapsed="0.001003"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.751011" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:20.751088" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:20.751258" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:20.675993" elapsed="0.075293"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.752494" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:20.752199" elapsed="0.000344"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:20.765732" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:20.765798" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:20.765923" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:33:20.754641" elapsed="0.011317"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:20.752610" elapsed="0.013404"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.766259" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:20.766050" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:20.752592" elapsed="0.013781"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.774627" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:20.768075" elapsed="0.006660"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:20.767770" elapsed="0.007052"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:20.767744" elapsed="0.007138"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.778468" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:20.775666" elapsed="0.002850"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:20.775017" elapsed="0.003533"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:20.774977" elapsed="0.003597"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.779164" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:20.778755" elapsed="0.000436"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.779524" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:20.779260" elapsed="0.000322"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.780166" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:20.779763" elapsed="0.000431"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:20.779606" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:20.779242" elapsed="0.001059"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.780841" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:20.780472" elapsed="0.000396"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:20.781164" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:20.780937" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:20.781810" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:20.781397" elapsed="0.000440"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:20.781243" elapsed="0.000629"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:20.780919" elapsed="0.000974"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:20.782043" elapsed="0.000485"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:33:20.783069" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:20.782692" elapsed="0.000404"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:33:20.783254" elapsed="0.005460"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:33:20.767100" elapsed="0.021677"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:33:20.788824" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:33:20.791120" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:33:20.751575" elapsed="0.039572"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:33:20.791200" elapsed="0.000028"/>
</return>
<arg>${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>${mapping}</arg>
<arg>session=${session}</arg>
<arg>location=${location}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:33:20.651856" elapsed="0.139507"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf to deconfigure the specified device</doc>
<status status="PASS" start="2026-04-05T00:33:20.630463" elapsed="0.160988"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<doc>Removes configured device</doc>
<status status="PASS" start="2026-04-05T00:33:20.629978" elapsed="0.161532"/>
</kw>
<arg>${idx}</arg>
<doc>Netconf readines for a node is done by creating a netconf device connected to that node
and performing GET operation got from the device's mount point.</doc>
<status status="FAIL" start="2026-04-05T00:32:47.978370" elapsed="32.813236">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<var name="${idx}">1</var>
<status status="FAIL" start="2026-04-05T00:32:47.977852" elapsed="32.813816">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="FAIL" start="2026-04-05T00:32:47.977418" elapsed="32.814311">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</for>
<doc>Verifies the netconf readiness for every odl node.</doc>
<status status="FAIL" start="2026-04-05T00:32:47.976890" elapsed="32.814935">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Check_Netconf_Topology_Ready">
<for flavor="IN">
<iter>
<kw name="Verify_Netconf_Topology_Ready_For_Node">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.796332" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:21.795588" elapsed="0.000815"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:33:21.796552" elapsed="0.000077"/>
</return>
<msg time="2026-04-05T00:33:21.796899" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${node_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:33:21.794788" elapsed="0.002167"/>
</kw>
<kw name="Configure_Netconf_Device">
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:21.821794" elapsed="0.000885"/>
</kw>
<msg time="2026-04-05T00:33:21.822823" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:21.821272" elapsed="0.001676"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:21.820886" elapsed="0.002142"/>
</kw>
<msg time="2026-04-05T00:33:21.823071" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:21.812296" elapsed="0.010820"/>
</kw>
<msg time="2026-04-05T00:33:21.823219" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:21.811964" elapsed="0.011280"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.824149" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.823408" elapsed="0.000770"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:21.824612" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:21.824273" elapsed="0.000407"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.858072" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:21.857682" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:21.858932" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:21.858675" elapsed="0.000334">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:21.859103" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:21.858316" elapsed="0.000811"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.859754" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:21.859341" elapsed="0.000440"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:21.860130" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:21.860291" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:21.859991" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.860790" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:21.860539" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.861889" level="INFO">mapping: {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:21.861622" elapsed="0.000313"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.862348" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.862090" elapsed="0.000284"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.863064" level="INFO">${value} = 10.30.170.184</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:21.862768" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:21.863830" level="INFO">${encoded} = 10.30.170.184</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.863607" elapsed="0.000249"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:21.863906" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:33:21.864101" level="INFO">${encoded_value} = 10.30.170.184</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:21.863277" elapsed="0.000849"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.864276" elapsed="0.000258"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.184</var>
<status status="PASS" start="2026-04-05T00:33:21.862637" elapsed="0.001938"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.865117" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:21.864819" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:21.865918" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.865706" elapsed="0.000238"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:21.865993" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:21.866143" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:21.865325" elapsed="0.000842"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.866317" elapsed="0.000255"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:21.864689" elapsed="0.001924"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.867148" level="INFO">${value} = 2830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:21.866852" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:21.867886" level="INFO">${encoded} = 2830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.867676" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:21.867962" elapsed="0.000188"/>
</return>
<msg time="2026-04-05T00:33:21.868280" level="INFO">${encoded_value} = 2830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:21.867352" elapsed="0.000953"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.868468" elapsed="0.000229"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">2830</var>
<status status="PASS" start="2026-04-05T00:33:21.866724" elapsed="0.002015"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.869278" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:21.868980" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:21.870049" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.869839" elapsed="0.000236"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:21.870124" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:21.870274" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:21.869502" elapsed="0.000796"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.870469" elapsed="0.000224"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:33:21.868851" elapsed="0.001883"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.871271" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:21.870973" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:21.872015" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.871804" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:21.872091" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:33:21.872241" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:21.871494" elapsed="0.000772"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.872412" elapsed="0.000239"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:33:21.870845" elapsed="0.001847"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.873228" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:21.872929" elapsed="0.000325"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:21.874016" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.873799" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:21.874092" elapsed="0.000053"/>
</return>
<msg time="2026-04-05T00:33:21.874267" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:21.873449" elapsed="0.001043"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.874645" elapsed="0.000226"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:33:21.872802" elapsed="0.002111"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.875463" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:21.875152" elapsed="0.000337"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:21.876184" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.875979" elapsed="0.000231"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:21.876260" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:21.876410" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:21.875671" elapsed="0.000782"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.876602" elapsed="0.000221"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:33:21.875023" elapsed="0.001841"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.877391" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:21.877099" elapsed="0.000316"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:21.878151" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.877944" elapsed="0.000232"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:21.878225" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:21.878374" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:21.877634" elapsed="0.000764"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:21.878560" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:21.876973" elapsed="0.001848"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:21.862420" elapsed="0.016435"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:21.878897" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:33:21.879056" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:21.861259" elapsed="0.017823"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:21.860955" elapsed="0.018159"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:21.879281" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:21.879139" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:21.860933" elapsed="0.018426"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.881622" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:21.879575" elapsed="0.002076"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:21.881751" elapsed="0.000054"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:21.856500" elapsed="0.025529"/>
</kw>
<msg time="2026-04-05T00:33:21.882119" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:21.843036" elapsed="0.039181"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:21.904037" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:21.926536" elapsed="0.000069"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:21.948398" elapsed="0.000132"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:21.948750" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:21.948943" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:21.949529" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:21.949251" elapsed="0.000364"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:21.949235" elapsed="0.000486"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:21.949931" elapsed="0.000045"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:21.950256" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:21.950597" elapsed="0.000044"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:21.949203" elapsed="0.001562"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:21.949070" elapsed="0.001754"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:21.950971" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:21.951124" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:33:21.951251" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:21.838674" elapsed="0.112603"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.979154" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:21.978773" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:21.979989" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:21.979748" elapsed="0.000313">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:21.980154" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:21.979397" elapsed="0.000781"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.980801" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:21.980392" elapsed="0.000437"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:21.981175" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:21.981321" level="INFO">${template} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVI...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:21.981035" elapsed="0.000346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.981885" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;$DEVICE_USER&lt;/username&gt;
      &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:21.981607" elapsed="0.000330"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:33:21.982358" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:21.982058" elapsed="0.000359"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.982901" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:21.982602" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:21.982458" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:21.982037" elapsed="0.000947"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:21.983914" level="INFO">${final_text} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:21.983178" elapsed="0.000767"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:21.984042" elapsed="0.000055"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:21.977783" elapsed="0.006534"/>
</kw>
<msg time="2026-04-05T00:33:21.984407" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:21.964414" elapsed="0.020106"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.006524" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.028724" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.050699" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.050939" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.051130" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.051751" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:22.051487" elapsed="0.000348"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:22.051413" elapsed="0.000506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.052119" elapsed="0.000045"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.052515" elapsed="0.000046"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.052843" elapsed="0.000045"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:22.051381" elapsed="0.001629"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:22.051252" elapsed="0.001818"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.053218" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:22.053370" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:33:22.053515" level="INFO">${data} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:21.961515" elapsed="0.092030"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:22.056277" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:22.055759" elapsed="0.000635">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:22.056542" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:22.054284" elapsed="0.002282"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.057013" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:22.056675" elapsed="0.000490"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.058327" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:22.057670" elapsed="0.000698"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:22.057193" elapsed="0.001269"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:22.056656" elapsed="0.001831"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.061246" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:22.058637" elapsed="0.002636"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:22.061371" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:33:22.061543" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:22.053941" elapsed="0.007627"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.063395" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:22.062912" elapsed="0.000681"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.064236" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:22.063763" elapsed="0.000543"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.064968" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:22.064485" elapsed="0.000544"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.065683" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:22.065192" elapsed="0.000551"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:33:22.067331" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:33:22.066681" elapsed="0.000883"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:33:22.068363" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:33:22.067831" elapsed="0.000647"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:22.068783" elapsed="0.000491"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.070268" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:22.069555" elapsed="0.000930"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:33:22.070573" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:33:22.070847" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:33:22.065991" elapsed="0.004882"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:22.093184" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '439', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt; 
 </msg>
<msg time="2026-04-05T00:33:22.093391" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:22.093789" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:33:22.079124" elapsed="0.014756"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:22.070983" elapsed="0.023213"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.094713" elapsed="0.000172"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:22.094264" elapsed="0.000911"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:22.070963" elapsed="0.024265"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.102255" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:22.098811" elapsed="0.003534"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:22.097957" elapsed="0.004456"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:22.097880" elapsed="0.004651"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.106673" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:22.103290" elapsed="0.003450"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:22.102652" elapsed="0.004135"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:22.102609" elapsed="0.004245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.108338" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:22.107347" elapsed="0.001106"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.109056" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:22.108583" elapsed="0.000568"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.110121" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:22.109616" elapsed="0.000546"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:22.109218" elapsed="0.000999"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:22.108551" elapsed="0.001735"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.111788" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:22.110800" elapsed="0.001087"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.112517" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:22.112016" elapsed="0.000596"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.113488" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:22.113016" elapsed="0.000508"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:22.112680" elapsed="0.000893"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:22.111984" elapsed="0.001656"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:22.113891" elapsed="0.000974"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:33:22.115794" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:22.115138" elapsed="0.000815"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:33:22.116219" elapsed="0.002621"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:33:22.096269" elapsed="0.022678"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:33:22.119175" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-05T00:33:22.119030" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:22.119011" elapsed="0.000304"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.119650" elapsed="0.000024"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:22.119761" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:33:22.122084" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:33:22.061997" elapsed="0.060116"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:33:22.122178" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:33:22.122333" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:33:21.827616" elapsed="0.294742"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.122711" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:22.122473" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:22.122455" elapsed="0.000349"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:33:22.122839" elapsed="0.000026"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:33:21.824943" elapsed="0.298019"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:21.824706" elapsed="0.298299"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:21.824252" elapsed="0.298776"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:22.123168" elapsed="0.000243"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=full-uri-device</arg>
<arg>device_port=${DEVICE_PORT}</arg>
<arg>device_address=${device_ip}</arg>
<arg>device_user=admin</arg>
<arg>device_password=admin</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:33:21.798615" elapsed="0.324876"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${ODL_SYSTEM_${node_index}_IP}</arg>
<doc>Configures the device via REST api.</doc>
<status status="PASS" start="2026-04-05T00:33:21.797232" elapsed="0.326327"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.124165" level="INFO">&amp;{mapping} = { DEVICE_NAME=test-device | RESTCONF_ROOT=/rests }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:22.123719" elapsed="0.000475"/>
</kw>
<kw name="Wait_Netconf_Device_Mounted">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:22.142772" elapsed="0.000790"/>
</kw>
<msg time="2026-04-05T00:33:22.143614" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:22.142390" elapsed="0.001279"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:22.141971" elapsed="0.001773"/>
</kw>
<msg time="2026-04-05T00:33:22.143787" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:22.133304" elapsed="0.010528"/>
</kw>
<msg time="2026-04-05T00:33:22.143935" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:22.132987" elapsed="0.010973"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.191468" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:22.190873" elapsed="0.000644"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:22.192539" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:22.192293" elapsed="0.000315">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:22.192804" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:22.191851" elapsed="0.000998"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.193809" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:22.193184" elapsed="0.000671"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:22.194493" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:22.194727" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:22.194223" elapsed="0.000549"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.195474" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:22.195103" elapsed="0.000468"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.196699" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:22.196440" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.197157" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:22.196899" elapsed="0.000284"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.198092" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:22.197635" elapsed="0.000483"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:22.198870" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:22.198653" elapsed="0.000242"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:22.198946" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:33:22.199096" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:22.198323" elapsed="0.000798"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:22.199267" elapsed="0.000241"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:22.197401" elapsed="0.002148"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.200089" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:22.199790" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:22.200833" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:22.200625" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:22.200907" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:22.201055" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:22.200299" elapsed="0.000780"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:22.201223" elapsed="0.000316"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:22.199662" elapsed="0.001919"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:22.197232" elapsed="0.004383"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:22.201657" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:33:22.201813" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:22.196104" elapsed="0.005735"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:22.195718" elapsed="0.006177"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.202223" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:22.201986" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:22.195675" elapsed="0.006682"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.203441" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:22.202666" elapsed="0.000823"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:22.203619" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:22.189268" elapsed="0.014581"/>
</kw>
<msg time="2026-04-05T00:33:22.204013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:22.175450" elapsed="0.028616"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.216613" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.228978" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.241283" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.241485" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.241656" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.242115" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:22.241906" elapsed="0.000383"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:22.241891" elapsed="0.000483"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.242567" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.242878" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.243224" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:22.241860" elapsed="0.001559"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:22.241730" elapsed="0.001734"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.243608" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:22.243683" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:22.243800" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:22.171189" elapsed="0.072667"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:22.245417" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:22.245045" elapsed="0.000578">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:22.245803" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:22.244555" elapsed="0.001272"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.246136" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:22.245898" elapsed="0.000394"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.246986" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:22.246497" elapsed="0.000529"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:22.246322" elapsed="0.000812"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:22.245880" elapsed="0.001277"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.253584" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:22.247302" elapsed="0.006309"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:22.253662" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:33:22.253816" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:22.244213" elapsed="0.009627"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:22.255367" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:22.255003" elapsed="0.000562">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:22.255744" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:22.254511" elapsed="0.001258"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:22.255973" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:33:22.255840" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:22.255821" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.256195" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.256363" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:22.256588" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:33:22.258528" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:22.254162" elapsed="0.004392"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.260184" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:22.259726" elapsed="0.000504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:22.260969" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:22.260379" elapsed="0.000636"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:22.283829" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:22.284574" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=503, reason=Service Unavailable 
 headers={'Content-Type': 'application/xml', 'Content-Length': '433'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;protocol&lt;/error-type&gt;&lt;error-path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology/a:topology[a:topology-id='topology-netconf']/a:node[a:node-id='test-device']&lt;/error-path&gt;&lt;error-message&gt;Mount point does not exist&lt;/error-message&gt;&lt;error-tag&gt;resource-denied-transport&lt;/error-tag&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:22.285053" level="FAIL">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:22.263250" elapsed="0.022724">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:22.261082" elapsed="0.025390">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.286896" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:22.286555" elapsed="0.000736"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:22.261064" elapsed="0.026286">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.288407" elapsed="0.000116"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:22.288772" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:22.288687" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:22.288648" elapsed="0.000267"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.289225" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:22.289383" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:22.258909" elapsed="0.030750">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:22.289829" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:22.149115" elapsed="0.140976">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:22.290796" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:22.290297" elapsed="0.000666"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:22.290259" elapsed="0.000756"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:22.291087" elapsed="0.000031"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:22.144740" elapsed="0.146568">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:25.344359" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:25.343752" elapsed="0.000660"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:25.345522" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:25.345225" elapsed="0.000373">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:25.345797" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:25.344784" elapsed="0.001056"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:25.346802" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:25.346183" elapsed="0.000666"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:25.347561" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:25.347817" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:25.347259" elapsed="0.000603"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:25.348603" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:25.348198" elapsed="0.000503"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:25.349864" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:25.349600" elapsed="0.000310"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:25.350329" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:25.350065" elapsed="0.000290"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:25.351028" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:25.350728" elapsed="0.000325"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:25.351812" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:25.351595" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:25.351890" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:33:25.352047" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:25.351237" elapsed="0.000836"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:25.352222" elapsed="0.000251"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:25.350595" elapsed="0.001919"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:25.353064" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:25.352762" elapsed="0.000328"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:25.354154" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:25.353940" elapsed="0.000241"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:25.354232" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:25.354381" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:25.353273" elapsed="0.001133"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:25.354569" elapsed="0.000222"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:25.352634" elapsed="0.002197"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:25.350406" elapsed="0.004458"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:25.354907" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:33:25.355061" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:25.349256" elapsed="0.005831"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:25.348858" elapsed="0.006287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.355457" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:25.355204" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:25.348811" elapsed="0.006781"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:25.356704" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:25.355887" elapsed="0.000865"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:25.356883" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:25.342092" elapsed="0.015030"/>
</kw>
<msg time="2026-04-05T00:33:25.357290" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:25.328093" elapsed="0.029252"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.369889" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.382360" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.394744" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.394938" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.395107" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.395624" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:25.395394" elapsed="0.000376"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:25.395377" elapsed="0.000469"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.396022" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.396336" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.396702" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:25.395316" elapsed="0.001583"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:25.395182" elapsed="0.001746"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.397074" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:25.397150" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:33:25.397273" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:25.323833" elapsed="0.073465"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:25.398904" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:25.398517" elapsed="0.000582">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:25.399282" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:25.397992" elapsed="0.001315"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.399656" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:25.399394" elapsed="0.000439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:25.400554" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:25.400043" elapsed="0.000552"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:25.399862" elapsed="0.000844"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:25.399375" elapsed="0.001355"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:25.407243" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:25.400878" elapsed="0.006393"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:25.407323" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:33:25.407531" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:25.397667" elapsed="0.009888"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:25.409070" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:25.408704" elapsed="0.000550">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:25.409449" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:25.408200" elapsed="0.001275"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:25.409681" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:33:25.409547" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:25.409528" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.409903" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.410070" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:25.410134" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:25.412231" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:25.407882" elapsed="0.004375"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:25.413899" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:25.413443" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:25.414684" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:25.414095" elapsed="0.000636"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:25.494464" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:25.495202" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:25.495691" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:25.416977" elapsed="0.079684">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:25.414799" elapsed="0.082296">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.497565" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:25.497177" elapsed="0.000781"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:25.414781" elapsed="0.083238">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.499147" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:25.499539" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:25.499366" elapsed="0.000275"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:25.499327" elapsed="0.000363"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.499998" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:25.500152" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:25.412627" elapsed="0.087781">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:25.500626" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:25.301701" elapsed="0.199147">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:25.501514" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:25.501053" elapsed="0.000627"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:25.501014" elapsed="0.000719"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:25.501806" elapsed="0.000031"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:25.292334" elapsed="0.209693">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:28.556293" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:28.555688" elapsed="0.000658"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:28.557449" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:28.557164" elapsed="0.000360">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:28.557723" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:28.556716" elapsed="0.001051"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:28.558727" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:28.558107" elapsed="0.000667"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:28.559385" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:28.559660" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:28.559113" elapsed="0.000593"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:28.560462" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:28.560054" elapsed="0.000514"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:28.561766" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:28.561503" elapsed="0.000309"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:28.562296" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:28.562025" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:28.562992" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:28.562692" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:28.563779" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:28.563558" elapsed="0.000247"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:28.563858" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:33:28.564017" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:28.563201" elapsed="0.000841"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:28.564193" elapsed="0.000264"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:28.562560" elapsed="0.001939"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:28.565044" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:28.564741" elapsed="0.000329"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:28.566065" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:28.565855" elapsed="0.000236"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:28.566140" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:28.566290" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:28.565254" elapsed="0.001060"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:28.566475" elapsed="0.000224"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:28.564612" elapsed="0.002127"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:28.562372" elapsed="0.004401"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:28.566816" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:33:28.566969" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:28.561123" elapsed="0.005871"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:28.560725" elapsed="0.006327"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.567350" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:28.567111" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:28.560679" elapsed="0.006824"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:28.568606" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:28.567805" elapsed="0.000850"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:28.568788" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:28.554076" elapsed="0.014943"/>
</kw>
<msg time="2026-04-05T00:33:28.569185" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:28.539997" elapsed="0.029243"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.581688" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.593948" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.606329" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.606530" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.606701" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.607165" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:28.606953" elapsed="0.000367"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:28.606937" elapsed="0.000468"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.607599" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.607913" elapsed="0.000025"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.608270" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:28.606906" elapsed="0.001584"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:28.606776" elapsed="0.001744"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.608663" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:28.608739" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:33:28.608857" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:28.535780" elapsed="0.073103"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:28.610451" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:28.610065" elapsed="0.000574">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:28.610819" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:28.609569" elapsed="0.001275"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.611153" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:28.610915" elapsed="0.000375"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:28.612022" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:28.611529" elapsed="0.000535"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:28.611341" elapsed="0.000833"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:28.610897" elapsed="0.001301"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:28.618844" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:28.612350" elapsed="0.006521"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:28.618923" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:28.619076" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:28.609233" elapsed="0.009867"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:28.620813" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:28.620276" elapsed="0.000719">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:28.621207" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:28.619791" elapsed="0.001442"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:28.621454" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:33:28.621305" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:28.621286" elapsed="0.000253"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.621680" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.621845" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:28.621910" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:28.623808" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:28.619471" elapsed="0.004363"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:28.625585" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:28.625117" elapsed="0.000514"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:28.626224" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:28.625778" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:28.700221" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:28.700999" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:28.701405" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:28.628610" elapsed="0.073739">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:28.626338" elapsed="0.076481">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.703231" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:28.702898" elapsed="0.000776"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:28.626319" elapsed="0.077416">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.704779" elapsed="0.000058"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:28.705077" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:28.704996" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:28.704957" elapsed="0.000259"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.705558" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:28.705715" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:28.624183" elapsed="0.081769">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:28.706116" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:28.512040" elapsed="0.194415">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:28.707055" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:28.706669" elapsed="0.000560"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:28.706630" elapsed="0.000652"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:28.707353" elapsed="0.000033"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:28.503099" elapsed="0.204546">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:31.763232" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:31.762627" elapsed="0.000659"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:31.764499" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:31.764211" elapsed="0.000361">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:31.764770" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:31.763766" elapsed="0.001050"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:31.765772" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:31.765158" elapsed="0.000661"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:31.766434" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:31.766707" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:31.766155" elapsed="0.000598"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:31.767479" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:31.767088" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:31.768771" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:31.768511" elapsed="0.000306"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:31.769238" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:31.768970" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:31.769935" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:31.769639" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:31.770721" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:31.770498" elapsed="0.000248"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:31.770798" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:33:31.770957" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:31.770141" elapsed="0.000841"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:31.771129" elapsed="0.000242"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:31.769508" elapsed="0.001903"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:31.771962" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:31.771669" elapsed="0.000318"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:31.773034" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:31.772823" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:31.773110" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:31.773260" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:31.772235" elapsed="0.001049"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:31.773452" elapsed="0.000224"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:31.771541" elapsed="0.002176"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:31.769318" elapsed="0.004434"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:31.773795" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:33:31.773949" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:31.768132" elapsed="0.005842"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:31.767736" elapsed="0.006295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.774296" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:31.774091" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:31.767690" elapsed="0.006768"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:31.775564" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:31.774765" elapsed="0.000846"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:31.775746" elapsed="0.000075"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:31.761022" elapsed="0.014959"/>
</kw>
<msg time="2026-04-05T00:33:31.776150" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:31.747120" elapsed="0.029084"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.788725" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.801044" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.813376" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.813582" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.813753" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.814216" elapsed="0.000095"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:31.814008" elapsed="0.000383"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:31.813993" elapsed="0.000506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.814678" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.814988" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.815332" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:31.813962" elapsed="0.001585"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:31.813828" elapsed="0.001749"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.815724" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:31.815801" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:33:31.815920" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:31.742893" elapsed="0.073053"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:31.817514" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:31.817125" elapsed="0.000574">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:31.817879" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:31.816635" elapsed="0.001269"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.818216" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:31.817976" elapsed="0.000384"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:31.819101" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:31.818609" elapsed="0.000532"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:31.818388" elapsed="0.000862"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:31.817958" elapsed="0.001316"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:31.825602" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:31.819438" elapsed="0.006191"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:31.825682" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:31.825835" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:31.816297" elapsed="0.009562"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:31.827493" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:31.827108" elapsed="0.000569">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:31.827857" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:31.826617" elapsed="0.001265"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:31.828089" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:33:31.827955" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:31.827936" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.828313" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.828496" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:31.828564" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:31.830883" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:31.826183" elapsed="0.004727"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:31.832571" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:31.832099" elapsed="0.000519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:31.833218" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:31.832770" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:31.898411" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:31.899160" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:31.899611" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:31.835655" elapsed="0.064884">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:31.833331" elapsed="0.067633">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.901382" elapsed="0.000127"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:31.901044" elapsed="0.000802"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:31.833312" elapsed="0.068594">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.902962" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:31.903268" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:31.903183" elapsed="0.000177"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:31.903142" elapsed="0.000266"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.903751" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:31.903908" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:31.831272" elapsed="0.072874">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:31.904316" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:31.719644" elapsed="0.184919">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:31.905155" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:31.904769" elapsed="0.000547"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:31.904731" elapsed="0.000636"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:31.905506" elapsed="0.000036"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:31.708854" elapsed="0.196873">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:34.962598" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:34.961982" elapsed="0.000669"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:34.963726" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:34.963462" elapsed="0.000338">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:34.963999" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:34.963003" elapsed="0.001041"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:34.965042" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:34.964388" elapsed="0.000704"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:34.965705" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:34.965966" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:34.965443" elapsed="0.000571"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:34.966737" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:34.966347" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:34.968004" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:34.967745" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:34.968542" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:34.968205" elapsed="0.000363"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:34.969251" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:34.968929" elapsed="0.000348"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:34.970015" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:34.969796" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:34.970093" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:33:34.970252" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:34.969479" elapsed="0.000797"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:34.970444" elapsed="0.000244"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:34.968797" elapsed="0.001932"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:34.971270" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:34.970974" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:34.972009" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:34.971800" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:34.972085" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:33:34.972234" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:34.971492" elapsed="0.000767"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:34.972403" elapsed="0.000350"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:34.970841" elapsed="0.001954"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:34.968622" elapsed="0.004207"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:34.972873" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:33:34.973123" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:34.967403" elapsed="0.005747"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:34.966995" elapsed="0.006214"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:34.973499" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:34.973270" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:34.966950" elapsed="0.006685"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:34.974914" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:34.973934" elapsed="0.001028"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:34.975098" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:34.960368" elapsed="0.014964"/>
</kw>
<msg time="2026-04-05T00:33:34.975584" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:34.946359" elapsed="0.029279"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:34.988399" elapsed="0.000052"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.000758" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.013132" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.013326" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.013516" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.013985" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:35.013774" elapsed="0.000354"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:35.013759" elapsed="0.000444"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.014381" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.014705" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.015050" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:35.013727" elapsed="0.001519"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:35.013593" elapsed="0.001683"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.015432" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:35.015552" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:33:35.015675" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:34.941885" elapsed="0.073816"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:35.017303" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:35.016892" elapsed="0.000625">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:35.017700" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:35.016383" elapsed="0.001343"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.018061" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:35.017797" elapsed="0.000403"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:35.018914" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:35.018401" elapsed="0.000562"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:35.018228" elapsed="0.000863"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:35.017779" elapsed="0.001337"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:35.025313" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:35.019284" elapsed="0.006056"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:35.025392" elapsed="0.000120"/>
</return>
<msg time="2026-04-05T00:33:35.025642" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:35.016059" elapsed="0.009608"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:35.027172" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:35.026807" elapsed="0.000548">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:35.027556" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:35.026307" elapsed="0.001275"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:35.027788" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:33:35.027654" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:35.027635" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.028010" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.028174" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:35.028240" elapsed="0.000014"/>
</return>
<msg time="2026-04-05T00:33:35.030557" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:35.025989" elapsed="0.004596"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:35.032273" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:35.031807" elapsed="0.000514"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:35.032973" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:35.032510" elapsed="0.000509"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:35.118026" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:35.118978" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:35.119480" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:35.035416" elapsed="0.085154">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:35.033119" elapsed="0.087900">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.121587" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:35.121108" elapsed="0.000881"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:35.033099" elapsed="0.088954">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.123209" elapsed="0.000070"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:35.123591" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:35.123502" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:35.123456" elapsed="0.000284"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.124052" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:35.124209" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:35.030947" elapsed="0.093538">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:35.124662" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:34.917224" elapsed="0.207659">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:35.125585" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:35.125088" elapsed="0.000664"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:35.125051" elapsed="0.000755"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:35.125879" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:34.906894" elapsed="0.219207">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:38.180054" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:38.179435" elapsed="0.000674"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:38.181212" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:38.180948" elapsed="0.000342">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:38.181505" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:38.180500" elapsed="0.001118"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:38.182579" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:38.181960" elapsed="0.000667"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:38.183214" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:38.183540" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:38.182964" elapsed="0.000623"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:38.184285" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:38.183921" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:38.185582" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:38.185301" elapsed="0.000326"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:38.186044" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:38.185781" elapsed="0.000289"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:38.186741" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:38.186443" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:38.187526" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:38.187260" elapsed="0.000292"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:38.187605" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:33:38.187766" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:38.186949" elapsed="0.000842"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:38.187938" elapsed="0.000238"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:38.186298" elapsed="0.001919"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:38.189128" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:38.188712" elapsed="0.000452"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:38.190226" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:38.189878" elapsed="0.000387"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:38.190335" elapsed="0.000041"/>
</return>
<msg time="2026-04-05T00:33:38.190567" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:38.189416" elapsed="0.001186"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:38.190805" elapsed="0.000309"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:38.188336" elapsed="0.002835"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:38.186123" elapsed="0.005095"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:38.191276" elapsed="0.000074"/>
</return>
<msg time="2026-04-05T00:33:38.191559" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:38.184978" elapsed="0.006618"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:38.184573" elapsed="0.007109"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.192054" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:38.191766" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:38.184527" elapsed="0.007710"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:38.194135" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:38.192733" elapsed="0.001468"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:38.194384" elapsed="0.000194"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:38.177742" elapsed="0.017065"/>
</kw>
<msg time="2026-04-05T00:33:38.195094" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:38.163671" elapsed="0.031500"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.208076" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.220356" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.232659" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.232850" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.233019" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.233506" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:38.233276" elapsed="0.000374"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:38.233261" elapsed="0.000467"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.233903" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.234211" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.234575" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:38.233230" elapsed="0.001537"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:38.233095" elapsed="0.001702"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.234943" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:38.235019" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:38.235139" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:38.159409" elapsed="0.075756"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:38.236780" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:38.236388" elapsed="0.000577">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:38.237142" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:38.235893" elapsed="0.001274"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.237540" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:38.237275" elapsed="0.000402"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:38.238364" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:38.237876" elapsed="0.000532"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:38.237705" elapsed="0.000832"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:38.237255" elapsed="0.001307"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:38.244783" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:38.238710" elapsed="0.006100"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:38.244861" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:33:38.245016" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:38.235565" elapsed="0.009476"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:38.246637" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:38.246249" elapsed="0.000570">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:38.246999" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:38.245766" elapsed="0.001262"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:38.247234" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:33:38.247100" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:38.247081" elapsed="0.000240"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.247483" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.247677" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:38.247743" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:38.249970" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:38.245362" elapsed="0.004635"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:38.251652" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:38.251179" elapsed="0.000547"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:38.252326" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:38.251877" elapsed="0.000494"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:38.330016" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:38.330774" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:38.331182" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:38.254749" elapsed="0.077364">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:38.252442" elapsed="0.080138">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.333009" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:38.332662" elapsed="0.000730"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:38.252420" elapsed="0.081145">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.334627" elapsed="0.000039"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:38.334823" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:38.334769" elapsed="0.000114"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:38.334744" elapsed="0.000170"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.335111" elapsed="0.000029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:38.335207" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:38.250353" elapsed="0.085008">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:38.335493" elapsed="0.000023"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:38.135476" elapsed="0.200158">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:38.336007" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:38.335761" elapsed="0.000345"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:38.335738" elapsed="0.000402"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:38.336184" elapsed="0.000020"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:38.127187" elapsed="0.209134">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:41.389873" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:41.389246" elapsed="0.000681"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:41.391064" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:41.390780" elapsed="0.000362">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:41.391340" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:41.390306" elapsed="0.001078"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:41.392346" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:41.391750" elapsed="0.000646"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:41.393005" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:41.393266" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:41.392754" elapsed="0.000557"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:41.394022" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:41.393661" elapsed="0.000461"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:41.395374" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:41.395118" elapsed="0.000300"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:41.395909" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:41.395642" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:41.396605" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:41.396290" elapsed="0.000341"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:41.397341" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:41.397124" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:41.397419" elapsed="0.000051"/>
</return>
<msg time="2026-04-05T00:33:41.397597" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:41.396813" elapsed="0.000809"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:41.397769" elapsed="0.000239"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:41.396159" elapsed="0.001889"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:41.398632" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:41.398313" elapsed="0.000344"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:41.399352" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:41.399144" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:41.399435" elapsed="0.000153"/>
</return>
<msg time="2026-04-05T00:33:41.399711" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:41.398836" elapsed="0.000900"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:41.399882" elapsed="0.000221"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:41.398159" elapsed="0.001983"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:41.395986" elapsed="0.004190"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:41.400219" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:33:41.400372" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:41.394736" elapsed="0.005661"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:41.394317" elapsed="0.006153"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.400738" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:41.400532" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:41.394266" elapsed="0.006603"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:41.402142" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:41.401166" elapsed="0.001024"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:41.402322" elapsed="0.000093"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:41.387668" elapsed="0.014924"/>
</kw>
<msg time="2026-04-05T00:33:41.402760" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:41.373582" elapsed="0.029232"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.415325" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.427861" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.440134" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.440322" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.440515" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.440974" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:41.440767" elapsed="0.000347"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:41.440753" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.441363" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.441690" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.442038" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:41.440722" elapsed="0.001508"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:41.440591" elapsed="0.001668"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.442402" elapsed="0.000023"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:41.442494" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:33:41.442614" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:41.369398" elapsed="0.073241"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:41.444204" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:41.443840" elapsed="0.000547">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:41.444590" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:41.443325" elapsed="0.001290"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.444923" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:41.444685" elapsed="0.000372"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:41.445762" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:41.445256" elapsed="0.000546"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:41.445084" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:41.444667" elapsed="0.001268"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:41.452181" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:41.446081" elapsed="0.006127"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:41.452258" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:41.452413" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:41.442990" elapsed="0.009463"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:41.453988" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:41.453626" elapsed="0.000543">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:41.454346" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:41.453126" elapsed="0.001245"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:41.454594" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:33:41.454459" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:41.454427" elapsed="0.000249"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.454816" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.454979" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:41.455043" elapsed="0.000014"/>
</return>
<msg time="2026-04-05T00:33:41.457321" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:41.452811" elapsed="0.004537"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:41.458987" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:41.458533" elapsed="0.000501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:41.459721" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:41.459183" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:41.541847" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:41.542565" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:41.542960" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:41.462088" elapsed="0.081793">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:41.459835" elapsed="0.084466">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.544745" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:41.544379" elapsed="0.000792"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:41.459817" elapsed="0.085420">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.546251" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:41.546613" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:41.546527" elapsed="0.000180"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:41.546434" elapsed="0.000321"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.547060" elapsed="0.000046"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:41.547213" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:41.457721" elapsed="0.089762">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:41.547729" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:41.345375" elapsed="0.202577">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:41.548578" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:41.548156" elapsed="0.000585"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:41.548118" elapsed="0.000675"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:41.548865" elapsed="0.000031"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:41.337387" elapsed="0.211690">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:44.598857" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:44.598239" elapsed="0.000670"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:44.600006" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:44.599737" elapsed="0.000342">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:44.600274" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:44.599255" elapsed="0.001062"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:44.601294" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:44.600683" elapsed="0.000657"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:44.601996" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:44.602280" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:44.601742" elapsed="0.000585"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:44.603032" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:44.602669" elapsed="0.000459"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:44.604320" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:44.604063" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:44.604853" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:44.604586" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:44.605546" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:44.605232" elapsed="0.000340"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:44.606283" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:44.606065" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:44.606361" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:33:44.606538" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:44.605755" elapsed="0.000860"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:44.606768" elapsed="0.000243"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:44.605103" elapsed="0.001949"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:44.607619" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:44.607302" elapsed="0.000342"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:44.608378" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:44.608171" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:44.608578" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:33:44.608731" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:44.607859" elapsed="0.000896"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:44.608903" elapsed="0.000222"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:44.607172" elapsed="0.001994"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:44.604932" elapsed="0.004268"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:44.609243" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:33:44.609400" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:44.603729" elapsed="0.005700"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:44.603281" elapsed="0.006219"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.609765" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:44.609560" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:44.603236" elapsed="0.006662"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:44.610988" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:44.610194" elapsed="0.000840"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:44.611166" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:44.596528" elapsed="0.014869"/>
</kw>
<msg time="2026-04-05T00:33:44.611582" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:44.582546" elapsed="0.029100"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.624363" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.636700" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.649338" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.649583" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.649763" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.650231" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:44.650021" elapsed="0.000353"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:44.650005" elapsed="0.000467"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.650649" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.650961" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.651306" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:44.649974" elapsed="0.001549"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:44.649839" elapsed="0.001737"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.651732" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:44.651808" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:33:44.651927" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:44.578333" elapsed="0.073620"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:44.653565" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:44.653173" elapsed="0.000590">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:44.653945" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:44.652680" elapsed="0.001290"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.654283" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:44.654042" elapsed="0.000383"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:44.655135" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:44.654641" elapsed="0.000534"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:44.654471" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:44.654024" elapsed="0.001285"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:44.661600" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:44.655473" elapsed="0.006153"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:44.661677" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:44.661829" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:44.652308" elapsed="0.009545"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:44.663448" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:44.663063" elapsed="0.000572">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:44.663815" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:44.662573" elapsed="0.001267"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:44.664046" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:33:44.663912" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:44.663893" elapsed="0.000269"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.664309" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.664505" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:44.664575" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:33:44.666782" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:44.662174" elapsed="0.004634"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:44.668460" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:44.667987" elapsed="0.000523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:44.669149" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:44.668694" elapsed="0.000500"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:44.754381" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:44.755117" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:44.755748" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:44.671564" elapsed="0.085154">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:44.669261" elapsed="0.087891">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.757604" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:44.757232" elapsed="0.000793"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:44.669243" elapsed="0.088844">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.759144" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:44.759483" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:44.759364" elapsed="0.000218"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:44.759325" elapsed="0.000306"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.759938" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:44.760093" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:44.667170" elapsed="0.093162">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:44.760539" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:44.554488" elapsed="0.206271">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:44.761348" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:44.760961" elapsed="0.000658"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:44.760923" elapsed="0.000753"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:44.761751" elapsed="0.000083"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:44.549839" elapsed="0.212190">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:47.815753" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:47.815044" elapsed="0.000765"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:47.816915" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:47.816640" elapsed="0.000355">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:47.817191" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:47.816162" elapsed="0.001073"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:47.818192" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:47.817593" elapsed="0.000647"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:47.818866" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:47.819124" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:47.818617" elapsed="0.000552"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:47.819929" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:47.819564" elapsed="0.000461"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:47.821214" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:47.820955" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:47.821695" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:47.821413" elapsed="0.000308"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:47.822374" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:47.822078" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:47.823230" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:47.823009" elapsed="0.000246"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:47.823308" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:33:47.823501" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:47.822689" elapsed="0.000837"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:47.823676" elapsed="0.000240"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:47.821948" elapsed="0.002009"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:47.824513" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:47.824199" elapsed="0.000340"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:47.825242" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:47.825031" elapsed="0.000236"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:47.825317" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:47.825485" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:47.824720" elapsed="0.000791"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:47.825721" elapsed="0.000225"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:47.824071" elapsed="0.001916"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:47.821774" elapsed="0.004247"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:47.826064" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:33:47.826219" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:47.820631" elapsed="0.005614"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:47.820186" elapsed="0.006117"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.826697" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:47.826363" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:47.820138" elapsed="0.006692"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:47.828146" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:47.827126" elapsed="0.001068"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:47.828325" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:47.813280" elapsed="0.015298"/>
</kw>
<msg time="2026-04-05T00:33:47.828744" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:47.799097" elapsed="0.029701"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.841393" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.853805" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.866359" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.866568" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.866740" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.867204" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:47.866994" elapsed="0.000352"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:47.866979" elapsed="0.000448"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.867625" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.868133" elapsed="0.000026"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.868563" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:47.866947" elapsed="0.001815"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:47.866814" elapsed="0.001978"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.868938" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:47.869015" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:33:47.869155" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:47.794606" elapsed="0.074577"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:47.870814" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:47.870393" elapsed="0.000622">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:47.871196" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:47.869891" elapsed="0.001330"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.871561" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:47.871291" elapsed="0.000408"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:47.872419" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:47.871926" elapsed="0.000552"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:47.871727" elapsed="0.000867"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:47.871272" elapsed="0.001346"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:47.878956" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:47.872766" elapsed="0.006217"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:47.879034" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:33:47.879188" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:47.869558" elapsed="0.009655"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:47.880889" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:47.880515" elapsed="0.000571">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:47.881268" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:47.879944" elapsed="0.001350"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:47.881522" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:33:47.881367" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:47.881347" elapsed="0.000259"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.881749" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.881914" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:47.881981" elapsed="0.000019"/>
</return>
<msg time="2026-04-05T00:33:47.884521" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:47.879621" elapsed="0.004927"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:47.886240" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:47.885764" elapsed="0.000523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:47.886951" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:47.886454" elapsed="0.000548"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:47.958928" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:47.959747" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:47.960203" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:47.889472" elapsed="0.071818">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:47.887077" elapsed="0.074778">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.962412" elapsed="0.000098"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:47.961949" elapsed="0.000928"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:47.887058" elapsed="0.075883">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.964136" elapsed="0.000066"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:47.964510" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:47.964378" elapsed="0.000239"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:47.964333" elapsed="0.000336"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.965047" elapsed="0.000052"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:47.965215" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:47.884912" elapsed="0.080613">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:47.965671" elapsed="0.000018"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:47.772448" elapsed="0.193325">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:47.966096" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:47.965870" elapsed="0.000316"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:47.965849" elapsed="0.000368"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:47.966258" elapsed="0.000019"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:47.763183" elapsed="0.203204">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:51.020022" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:51.019400" elapsed="0.000737"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:51.021216" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:51.020955" elapsed="0.000335">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:51.021523" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:51.020507" elapsed="0.001072"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:51.022571" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:51.021960" elapsed="0.000658"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:51.023208" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:51.023507" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:51.022959" elapsed="0.000594"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:51.024263" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:51.023899" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:51.025563" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:51.025260" elapsed="0.000348"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:51.026029" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:51.025762" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:51.026755" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:51.026410" elapsed="0.000370"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:51.027545" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:51.027276" elapsed="0.000294"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:51.027623" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:33:51.027783" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:51.026963" elapsed="0.000844"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:51.027955" elapsed="0.000242"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:51.026279" elapsed="0.001958"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:51.028900" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:51.028495" elapsed="0.000432"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:51.029759" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:51.029419" elapsed="0.000365"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:51.029833" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:51.029981" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:51.029111" elapsed="0.000894"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:51.030150" elapsed="0.000228"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:51.028349" elapsed="0.002070"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:51.026108" elapsed="0.004366"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:51.030518" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:33:51.030672" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:51.024935" elapsed="0.005762"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:51.024538" elapsed="0.006217"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.031020" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:51.030816" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:51.024492" elapsed="0.006660"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:51.032502" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:51.031478" elapsed="0.001072"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:51.032684" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:51.017776" elapsed="0.015141"/>
</kw>
<msg time="2026-04-05T00:33:51.033083" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:51.003658" elapsed="0.029478"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.045668" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.058091" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.070455" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.070643" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.070812" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.071274" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:51.071066" elapsed="0.000348"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:51.071051" elapsed="0.000456"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.071696" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.072003" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.072345" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:51.071020" elapsed="0.001545"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:51.070887" elapsed="0.001708"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.072741" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:51.072817" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:33:51.072935" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:50.999396" elapsed="0.073565"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:51.074604" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:51.074195" elapsed="0.000592">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:51.074963" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:51.073704" elapsed="0.001284"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.075297" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:51.075060" elapsed="0.000391"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:51.076167" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:51.075676" elapsed="0.000531"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:51.075480" elapsed="0.000835"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:51.075042" elapsed="0.001297"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:51.082547" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:51.076508" elapsed="0.006066"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:51.082626" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:33:51.082778" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:51.073354" elapsed="0.009448"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:51.084378" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:51.084001" elapsed="0.000679">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:51.084859" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:51.083466" elapsed="0.001418"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:51.085090" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:33:51.084957" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:51.084938" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.085314" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.085495" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:51.085562" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:51.087594" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:51.083126" elapsed="0.004494"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:51.089467" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:51.088993" elapsed="0.000611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:51.090216" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:51.089760" elapsed="0.000502"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:51.166503" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:51.167196" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:51.167626" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:51.092625" elapsed="0.075950">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:51.090330" elapsed="0.078749">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.169526" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:51.169159" elapsed="0.000751"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:51.090311" elapsed="0.079658">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.170988" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:51.171290" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:51.171208" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:51.171168" elapsed="0.000340"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.171820" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:51.171976" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:51.087990" elapsed="0.084249">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:51.172411" elapsed="0.000072"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:50.975341" elapsed="0.197331">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:51.173257" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:51.172872" elapsed="0.000547"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:51.172836" elapsed="0.000669"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:51.173578" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:50.967509" elapsed="0.206284">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.227440" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:54.226820" elapsed="0.000701"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:54.228607" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:54.228317" elapsed="0.000367">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:54.228889" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:54.227872" elapsed="0.001061"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.229883" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:54.229269" elapsed="0.000663"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:54.230536" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:54.230848" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:54.230268" elapsed="0.000626"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.231638" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:54.231226" elapsed="0.000511"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.232923" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:54.232666" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.233388" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:54.233123" elapsed="0.000290"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.234089" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:54.233792" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:54.234846" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:54.234627" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:54.234923" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:33:54.235082" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:54.234295" elapsed="0.000811"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:54.235253" elapsed="0.000290"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:54.233661" elapsed="0.001925"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.236119" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:54.235827" elapsed="0.000317"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:54.236982" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:54.236774" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:54.237056" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:33:54.237202" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:54.236322" elapsed="0.000904"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:54.237370" elapsed="0.000240"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:54.235700" elapsed="0.001951"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:54.233486" elapsed="0.004199"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:54.237727" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:33:54.237879" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:54.232294" elapsed="0.005610"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:54.231897" elapsed="0.006066"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.238226" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:54.238023" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:54.231848" elapsed="0.006510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.239654" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:54.238675" elapsed="0.001028"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:54.239833" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:54.225242" elapsed="0.014821"/>
</kw>
<msg time="2026-04-05T00:33:54.240230" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:54.211227" elapsed="0.029056"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.252837" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.265334" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.277643" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.277843" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.278012" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.278510" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:54.278278" elapsed="0.000376"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:54.278264" elapsed="0.000467"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.278905" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.279216" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.279581" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:54.278233" elapsed="0.001581"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:54.278086" elapsed="0.001759"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.279991" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:54.280066" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:33:54.280202" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:54.207054" elapsed="0.073174"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:54.281816" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:54.281419" elapsed="0.000585">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:54.282181" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:54.280930" elapsed="0.001276"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.282537" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:54.282276" elapsed="0.000399"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.283360" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:54.282876" elapsed="0.000524"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:54.282702" elapsed="0.000854"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:54.282258" elapsed="0.001324"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.289811" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:54.283754" elapsed="0.006084"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:54.289889" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:54.290040" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:54.280608" elapsed="0.009456"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:54.291669" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:54.291288" elapsed="0.000594">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:54.292062" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:54.290806" elapsed="0.001281"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:54.292292" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:33:54.292158" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:54.292140" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.292532" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.292698" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:54.292762" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:54.294927" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:54.290384" elapsed="0.004569"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.296631" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:54.296161" elapsed="0.000516"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.297277" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:54.296825" elapsed="0.000496"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:54.367701" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:54.368421" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:54.368860" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:54.299693" elapsed="0.070099">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:54.297388" elapsed="0.072833">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.370673" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:54.370301" elapsed="0.000763"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:54.297370" elapsed="0.073754">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.372179" elapsed="0.000064"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:54.372550" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:54.372404" elapsed="0.000314"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:54.372365" elapsed="0.000407"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.373083" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:54.373240" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:54.295309" elapsed="0.078205">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:54.373688" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:54.183234" elapsed="0.190671">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.374528" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:54.374107" elapsed="0.000585"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:54.374070" elapsed="0.000675"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:54.374816" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:54.175208" elapsed="0.199824">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<msg time="2026-04-05T00:33:54.375243" level="FAIL">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${timeout}</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-05T00:33:22.144122" elapsed="32.231354">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${mapping}</arg>
<doc>Checks weather the device was mounted.</doc>
<status status="FAIL" start="2026-04-05T00:33:22.124334" elapsed="32.251398">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.384610" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${mod_session}</var>
<arg>member_index=${idx}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.384945" elapsed="0.000024"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}netconf-state</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${mod_session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.385125" elapsed="0.000021"/>
</kw>
<var name="${idx}"/>
<status status="NOT RUN" start="2026-04-05T00:33:54.384757" elapsed="0.000433"/>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:54.384694" elapsed="0.000523"/>
</for>
<kw name="Remove_Netconf_Device" type="TEARDOWN">
<kw name="Remove_Device_From_Netconf" owner="NetconfKeywords">
<kw name="Pop From Dictionary" owner="Collections">
<msg time="2026-04-05T00:33:54.386606" level="INFO">${device_type} = full-uri-device</msg>
<var>${device_type}</var>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<doc>Pops the given ``key`` from the ``dictionary`` and returns its value.</doc>
<status status="PASS" start="2026-04-05T00:33:54.386330" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.387217" level="INFO">${mapping} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:54.386794" elapsed="0.000449"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:54.406719" elapsed="0.000856"/>
</kw>
<msg time="2026-04-05T00:33:54.407803" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:54.406343" elapsed="0.001527"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:54.405929" elapsed="0.002052"/>
</kw>
<msg time="2026-04-05T00:33:54.408025" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:54.397307" elapsed="0.010775"/>
</kw>
<msg time="2026-04-05T00:33:54.408185" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:54.396954" elapsed="0.011258"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.451284" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:54.450637" elapsed="0.000755"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:54.452996" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:54.452495" elapsed="0.000608">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:54.453227" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:54.451719" elapsed="0.001613"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.454748" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:54.453698" elapsed="0.001160"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:54.455464" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:54.455693" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:54.455233" elapsed="0.000568"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.456647" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:54.456098" elapsed="0.000611"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.458623" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:54.458345" elapsed="0.000323"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.459135" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:54.458875" elapsed="0.000286"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.460015" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:54.459707" elapsed="0.000334"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:54.460972" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:54.460751" elapsed="0.000246"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:54.461049" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:33:54.461201" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:54.460376" elapsed="0.000849"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:54.461371" elapsed="0.000246"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:54.459574" elapsed="0.002084"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.462194" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:54.461898" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:54.462972" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:54.462762" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:54.463046" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:54.463193" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:54.462400" elapsed="0.000817"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:54.463403" elapsed="0.000387"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:54.461769" elapsed="0.002062"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:54.459258" elapsed="0.004627"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:54.463949" elapsed="0.000071"/>
</return>
<msg time="2026-04-05T00:33:54.464315" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:54.457566" elapsed="0.006838"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:54.456886" elapsed="0.007639"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.464823" elapsed="0.000083"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:54.464607" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:54.456865" elapsed="0.008194"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.466150" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:54.465203" elapsed="0.001056"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:54.466505" elapsed="0.000032"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:54.449643" elapsed="0.017013"/>
</kw>
<msg time="2026-04-05T00:33:54.466710" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:54.436948" elapsed="0.029823"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.479277" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.491660" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.504037" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.504224" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.504395" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.504852" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:54.504706" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:54.504686" elapsed="0.000247"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.505067" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.505229" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.505389" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:54.504627" elapsed="0.000874"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:54.504483" elapsed="0.001047"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.505676" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:54.505752" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:33:54.505870" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:54.432676" elapsed="0.073219"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.507009" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:54.506762" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:54.520414" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:54.520507" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:54.520632" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:33:54.509323" elapsed="0.011347"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:54.507121" elapsed="0.013666"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.521044" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:54.520833" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:54.507104" elapsed="0.014059"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.529290" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:54.523585" elapsed="0.005802"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:54.523071" elapsed="0.006457"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:54.523030" elapsed="0.006557"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.532365" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:54.529868" elapsed="0.002544"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:54.529651" elapsed="0.002816"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:54.529634" elapsed="0.002858"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.533052" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:54.532656" elapsed="0.000422"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.533374" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:54.533147" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.534025" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:54.533627" elapsed="0.000424"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:54.533472" elapsed="0.000614"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:54.533129" elapsed="0.000978"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.534656" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:54.534260" elapsed="0.000426"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:54.534977" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:54.534754" elapsed="0.000278"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:54.535635" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:54.535209" elapsed="0.000453"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:54.535056" elapsed="0.000641"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:54.534736" elapsed="0.000982"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:54.535876" elapsed="0.000461"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:33:54.536963" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:54.536554" elapsed="0.000435"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:33:54.537145" elapsed="0.005377"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:33:54.522064" elapsed="0.020522"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:33:54.542632" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:33:54.544932" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:33:54.506151" elapsed="0.038809"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:33:54.545013" elapsed="0.000028"/>
</return>
<arg>${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>${mapping}</arg>
<arg>session=${session}</arg>
<arg>location=${location}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:33:54.408497" elapsed="0.136639"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf to deconfigure the specified device</doc>
<status status="PASS" start="2026-04-05T00:33:54.385885" elapsed="0.159312"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<doc>Removes configured device</doc>
<status status="PASS" start="2026-04-05T00:33:54.385409" elapsed="0.159839"/>
</kw>
<arg>${idx}</arg>
<doc>Netconf readines for a node is done by creating a netconf device connected to that node
and performing GET operation got from the device's mount point.</doc>
<status status="FAIL" start="2026-04-05T00:33:21.793896" elapsed="32.751432">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<var name="${idx}">1</var>
<status status="FAIL" start="2026-04-05T00:33:21.793501" elapsed="32.751887">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="FAIL" start="2026-04-05T00:33:21.793098" elapsed="32.752364">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</for>
<doc>Verifies the netconf readiness for every odl node.</doc>
<status status="FAIL" start="2026-04-05T00:33:21.792569" elapsed="32.752990">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Check_Netconf_Topology_Ready">
<for flavor="IN">
<iter>
<kw name="Verify_Netconf_Topology_Ready_For_Node">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.550145" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:55.549366" elapsed="0.000846"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:33:55.550327" elapsed="0.000073"/>
</return>
<msg time="2026-04-05T00:33:55.550706" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${node_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:33:55.548527" elapsed="0.002234"/>
</kw>
<kw name="Configure_Netconf_Device">
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:55.576537" elapsed="0.000920"/>
</kw>
<msg time="2026-04-05T00:33:55.577602" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:55.576060" elapsed="0.001604"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:55.575674" elapsed="0.002067"/>
</kw>
<msg time="2026-04-05T00:33:55.577783" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:55.567054" elapsed="0.010774"/>
</kw>
<msg time="2026-04-05T00:33:55.577930" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:55.566727" elapsed="0.011227"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.578857" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.578117" elapsed="0.000768"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.579381" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:55.579051" elapsed="0.000415"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.612382" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:55.611996" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:55.613274" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:55.613018" elapsed="0.000330">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:55.613463" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:55.612643" elapsed="0.000846"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.614096" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:55.613705" elapsed="0.000419"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:55.614491" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:55.614647" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:55.614332" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.615127" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:55.614875" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.616199" level="INFO">mapping: {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:55.615939" elapsed="0.000306"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.616694" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.616401" elapsed="0.000319"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.617402" level="INFO">${value} = 10.30.170.184</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:55.617103" elapsed="0.000341"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:55.618163" level="INFO">${encoded} = 10.30.170.184</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.617945" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:55.618239" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:33:55.618391" level="INFO">${encoded_value} = 10.30.170.184</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:55.617630" elapsed="0.000786"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.618582" elapsed="0.000236"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.184</var>
<status status="PASS" start="2026-04-05T00:33:55.616971" elapsed="0.001888"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.619395" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:55.619098" elapsed="0.000338"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:55.620144" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.619931" elapsed="0.000239"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:55.620219" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:55.620369" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:55.619621" elapsed="0.000773"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.620639" elapsed="0.000241"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:55.618970" elapsed="0.001952"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.621485" level="INFO">${value} = 2830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:55.621165" elapsed="0.000346"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:55.622216" level="INFO">${encoded} = 2830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.622006" elapsed="0.000236"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:55.622292" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:55.622459" level="INFO">${encoded_value} = 2830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:55.621694" elapsed="0.000792"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.622633" elapsed="0.000408"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">2830</var>
<status status="PASS" start="2026-04-05T00:33:55.621035" elapsed="0.002049"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.623649" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:55.623327" elapsed="0.000348"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:55.624379" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.624169" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:55.624483" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:33:55.624634" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:55.623859" elapsed="0.000799"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.624804" elapsed="0.000254"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:33:55.623196" elapsed="0.001902"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.625739" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:55.625336" elapsed="0.000428"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:55.626485" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.626253" elapsed="0.000258"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:55.626559" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:33:55.626706" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:55.625946" elapsed="0.000784"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.626875" elapsed="0.000217"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:33:55.625208" elapsed="0.001925"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.627690" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:55.627368" elapsed="0.000347"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:55.628419" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.628207" elapsed="0.000253"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:55.628508" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:55.628660" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:55.627894" elapsed="0.000789"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.628828" elapsed="0.000249"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:33:55.627242" elapsed="0.001875"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.629677" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:55.629354" elapsed="0.000348"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:55.630400" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.630190" elapsed="0.000250"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:55.630490" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:55.630636" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:55.629880" elapsed="0.000780"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.630843" elapsed="0.000224"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:33:55.629226" elapsed="0.001889"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.631671" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:55.631355" elapsed="0.000341"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:55.632398" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.632192" elapsed="0.000247"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:55.632490" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:55.632640" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:55.631877" elapsed="0.000787"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.632810" elapsed="0.000243"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:55.631228" elapsed="0.001867"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:55.616768" elapsed="0.016361"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:55.633171" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:33:55.633330" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:55.615621" elapsed="0.017734"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:55.615292" elapsed="0.018095"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.633573" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:55.633412" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:55.615270" elapsed="0.018379"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.634549" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:55.633842" elapsed="0.000735"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:55.634675" elapsed="0.000053"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:55.610996" elapsed="0.023955"/>
</kw>
<msg time="2026-04-05T00:33:55.635043" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:55.597516" elapsed="0.037624"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.657558" elapsed="0.000034"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.679855" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.701816" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.702076" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.702344" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.702960" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:55.702696" elapsed="0.000348"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:55.702678" elapsed="0.000452"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.703331" elapsed="0.000044"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.703677" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.704002" elapsed="0.000044"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:55.702640" elapsed="0.001528"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:55.702497" elapsed="0.001735"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.704382" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:55.704725" elapsed="0.000019"/>
</return>
<msg time="2026-04-05T00:33:55.704873" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:55.593115" elapsed="0.111784"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.732621" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:55.732209" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:55.733470" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:55.733186" elapsed="0.000359">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:55.733639" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:55.732857" elapsed="0.000805"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.734256" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:55.733870" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:55.734645" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:55.734798" level="INFO">${template} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVI...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:55.734504" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.735274" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;$DEVICE_USER&lt;/username&gt;
      &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:55.735029" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:33:55.735760" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:55.735462" elapsed="0.000357"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.736278" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:55.735985" elapsed="0.000357"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:55.735845" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:55.735424" elapsed="0.000977"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.737362" level="INFO">${final_text} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:55.736619" elapsed="0.000773"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:55.737505" elapsed="0.000056"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:55.731221" elapsed="0.006563"/>
</kw>
<msg time="2026-04-05T00:33:55.737875" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:55.717789" elapsed="0.020181"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.759767" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.781820" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.803650" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.803912" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.804106" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.804715" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:55.804451" elapsed="0.000348"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:55.804417" elapsed="0.000468"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.805084" elapsed="0.000044"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.805406" elapsed="0.000080"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.805777" elapsed="0.000044"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:55.804379" elapsed="0.001564"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:55.804235" elapsed="0.001768"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.806151" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:55.806304" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:33:55.806587" level="INFO">${data} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:55.714939" elapsed="0.091730"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:55.809283" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:55.808735" elapsed="0.000673">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:55.809582" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:55.807447" elapsed="0.002161"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.810068" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:55.809719" elapsed="0.000503"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.811478" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:55.810831" elapsed="0.000688"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:55.810248" elapsed="0.001350"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:55.809700" elapsed="0.001921"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.814342" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:55.811769" elapsed="0.002600"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:55.814557" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:33:55.814720" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:55.807068" elapsed="0.007677"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.816559" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:55.816060" elapsed="0.000563"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.817248" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:55.816787" elapsed="0.000529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.818002" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:55.817519" elapsed="0.000543"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.818963" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:55.818225" elapsed="0.000798"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:33:55.820499" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:33:55.819912" elapsed="0.000686"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:33:55.821377" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:33:55.820857" elapsed="0.000637"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.821866" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.823392" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:55.822724" elapsed="0.000881"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:33:55.823691" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:33:55.823960" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:33:55.819235" elapsed="0.004750"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:55.846189" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '439', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt; 
 </msg>
<msg time="2026-04-05T00:33:55.846306" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:55.846480" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:33:55.832166" elapsed="0.014356"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:55.824095" elapsed="0.022544"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.846847" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:55.846668" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:55.824076" elapsed="0.022996"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.851164" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:55.848736" elapsed="0.002493"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:55.848262" elapsed="0.003015"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:55.848229" elapsed="0.003116"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.854270" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:55.851912" elapsed="0.002425"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:55.851452" elapsed="0.002932"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:55.851399" elapsed="0.003071"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.856022" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:55.854962" elapsed="0.001160"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.856745" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:55.856251" elapsed="0.000589"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.857746" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:55.857242" elapsed="0.000540"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:55.856908" elapsed="0.000924"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:55.856218" elapsed="0.001679"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.859382" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:55.858393" elapsed="0.001156"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.860152" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:55.859679" elapsed="0.000567"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.861118" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:55.860666" elapsed="0.000487"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:55.860315" elapsed="0.000886"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:55.859646" elapsed="0.001620"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:55.861535" elapsed="0.000817"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:33:55.863281" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:55.862643" elapsed="0.000737"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.863718" elapsed="0.002616"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:33:55.847545" elapsed="0.018913"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:33:55.866688" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-05T00:33:55.866543" elapsed="0.000256"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:55.866524" elapsed="0.000302"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.866972" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:55.867079" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:33:55.869344" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:33:55.815147" elapsed="0.054224"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:33:55.869551" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:55.869725" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:33:55.582354" elapsed="0.287436"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.870129" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:55.869894" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:55.869876" elapsed="0.000346"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:33:55.870256" elapsed="0.000026"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:33:55.579729" elapsed="0.290650"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:55.579494" elapsed="0.290942"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:55.579028" elapsed="0.291434"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.870604" elapsed="0.000234"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=full-uri-device</arg>
<arg>device_port=${DEVICE_PORT}</arg>
<arg>device_address=${device_ip}</arg>
<arg>device_user=admin</arg>
<arg>device_password=admin</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:33:55.552278" elapsed="0.318625"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${ODL_SYSTEM_${node_index}_IP}</arg>
<doc>Configures the device via REST api.</doc>
<status status="PASS" start="2026-04-05T00:33:55.551034" elapsed="0.319936"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.871733" level="INFO">&amp;{mapping} = { DEVICE_NAME=test-device | RESTCONF_ROOT=/rests }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.871129" elapsed="0.000632"/>
</kw>
<kw name="Wait_Netconf_Device_Mounted">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:55.890183" elapsed="0.000781"/>
</kw>
<msg time="2026-04-05T00:33:55.891016" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:55.889829" elapsed="0.001239"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:55.889407" elapsed="0.001734"/>
</kw>
<msg time="2026-04-05T00:33:55.891183" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:55.880988" elapsed="0.010239"/>
</kw>
<msg time="2026-04-05T00:33:55.891327" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:55.880671" elapsed="0.010680"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.938379" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:55.937774" elapsed="0.000666"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:55.939457" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:55.939212" elapsed="0.000313">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:55.939719" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:55.938776" elapsed="0.000987"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.940725" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:55.940098" elapsed="0.000673"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:55.941345" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:55.941718" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:55.941101" elapsed="0.000665"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.942487" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:55.942111" elapsed="0.000471"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.943846" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:55.943588" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.944301" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.944043" elapsed="0.000283"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.945060" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:55.944763" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:55.945806" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.945593" elapsed="0.000238"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:55.945880" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:55.946057" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:55.945266" elapsed="0.000816"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.946227" elapsed="0.000239"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:55.944632" elapsed="0.001876"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.947040" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:55.946747" elapsed="0.000318"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:55.947772" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.947564" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:55.947846" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:55.947992" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:55.947242" elapsed="0.000774"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:55.948159" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:55.946619" elapsed="0.001800"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:55.944375" elapsed="0.004199"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:55.948617" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:33:55.948772" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:55.943108" elapsed="0.005689"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:55.942729" elapsed="0.006124"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.949116" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:55.948911" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:55.942687" elapsed="0.006557"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.950346" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:55.949554" elapsed="0.000838"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:55.950539" elapsed="0.000077"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:55.936202" elapsed="0.014571"/>
</kw>
<msg time="2026-04-05T00:33:55.950935" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:55.922540" elapsed="0.028448"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.963349" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.975699" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.988589" elapsed="0.000040"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.988807" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.988976" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.989464" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:55.989238" elapsed="0.000370"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:55.989223" elapsed="0.000461"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.989858" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.990185" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.990546" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:55.989192" elapsed="0.001551"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:55.989057" elapsed="0.001715"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.990916" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:55.990991" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:33:55.991117" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:55.918377" elapsed="0.072765"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:55.992724" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:55.992326" elapsed="0.000579">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:55.993081" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:55.991829" elapsed="0.001277"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:55.993412" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:55.993175" elapsed="0.000390"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:55.994263" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:55.993751" elapsed="0.000552"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:55.993592" elapsed="0.000872"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:55.993157" elapsed="0.001334"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:56.000648" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:55.994642" elapsed="0.006033"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:56.000725" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:56.000876" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:55.991511" elapsed="0.009390"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:56.002453" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:56.002032" elapsed="0.000604">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:56.002816" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:56.001549" elapsed="0.001292"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:56.003044" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:33:56.002912" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:56.002894" elapsed="0.000232"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:56.003266" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:56.003580" elapsed="0.000027"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:56.003653" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:33:56.005522" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:56.001218" elapsed="0.004329"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:56.007167" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:56.006717" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:56.007965" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:56.007359" elapsed="0.000650"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:56.026381" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:56.026729" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=503, reason=Service Unavailable 
 headers={'Content-Type': 'application/xml', 'Content-Length': '433'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;protocol&lt;/error-type&gt;&lt;error-path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology/a:topology[a:topology-id='topology-netconf']/a:node[a:node-id='test-device']&lt;/error-path&gt;&lt;error-message&gt;Mount point does not exist&lt;/error-message&gt;&lt;error-tag&gt;resource-denied-transport&lt;/error-tag&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:56.026916" level="FAIL">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:56.011386" elapsed="0.015960">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:56.008075" elapsed="0.019598">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:56.027858" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:56.027708" elapsed="0.000321"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:56.008057" elapsed="0.019998">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:56.028519" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:56.028689" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:56.028652" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:56.028633" elapsed="0.000119"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:56.028890" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:56.028958" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:56.005892" elapsed="0.023172">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:56.029138" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:55.896405" elapsed="0.132828">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:56.029511" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:56.029323" elapsed="0.000259"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:56.029306" elapsed="0.000303"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:56.029641" elapsed="0.000014"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:55.892120" elapsed="0.137615">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:59.087107" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:59.086464" elapsed="0.000698"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:59.088254" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:59.087992" elapsed="0.000337">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:59.088551" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:59.087531" elapsed="0.001066"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:59.089565" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:59.088943" elapsed="0.000670"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:33:59.090221" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:33:59.090506" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:33:59.089970" elapsed="0.000584"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:59.091279" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:59.090893" elapsed="0.000484"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:59.092887" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:59.092307" elapsed="0.000628"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:33:59.093371" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:33:59.093097" elapsed="0.000301"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:59.094155" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:59.093785" elapsed="0.000396"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:59.094933" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:59.094710" elapsed="0.000250"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:59.095045" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:33:59.095207" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:59.094368" elapsed="0.000864"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:59.095384" elapsed="0.000288"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:33:59.093651" elapsed="0.002063"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:33:59.096259" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:33:59.095958" elapsed="0.000327"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:33:59.097141" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:33:59.096928" elapsed="0.000239"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:33:59.097217" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:33:59.097366" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:33:59.096615" elapsed="0.000775"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:33:59.097553" elapsed="0.000225"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:33:59.095828" elapsed="0.001991"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:33:59.093471" elapsed="0.004383"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:33:59.097896" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:33:59.098050" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:33:59.091977" elapsed="0.006098"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:59.091558" elapsed="0.006577"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.098402" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:59.098195" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:59.091505" elapsed="0.007046"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:33:59.100134" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:33:59.098855" elapsed="0.001326"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:33:59.100312" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:33:59.084887" elapsed="0.015765"/>
</kw>
<msg time="2026-04-05T00:33:59.100820" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:33:59.070807" elapsed="0.030069"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.113400" elapsed="0.000064"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.125810" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.138216" elapsed="0.000033"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.138451" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.138630" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.139146" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:59.138913" elapsed="0.000383"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:59.138895" elapsed="0.000480"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.139569" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.139883" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.140233" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:33:59.138859" elapsed="0.001583"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:33:59.138712" elapsed="0.001763"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.140624" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:59.140703" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:33:59.140850" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:33:59.066506" elapsed="0.074372"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:59.142597" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:59.142156" elapsed="0.000643">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:59.142982" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:59.141615" elapsed="0.001393"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.143385" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:59.143082" elapsed="0.000457"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:33:59.144246" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:33:59.143747" elapsed="0.000540"/>
</kw>
<status status="PASS" start="2026-04-05T00:33:59.143568" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:59.143062" elapsed="0.001361"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:33:59.151261" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:33:59.144594" elapsed="0.006696"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:33:59.151346" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:33:59.151527" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:59.141246" elapsed="0.010307"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:33:59.153195" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:33:59.152809" elapsed="0.000574">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:33:59.153764" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:33:59.152287" elapsed="0.001503"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:33:59.154007" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:33:59.153866" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-05T00:33:59.153846" elapsed="0.000246"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.154235" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.154405" elapsed="0.000037"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:33:59.154490" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:33:59.156399" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:33:59.151951" elapsed="0.004489"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:59.158317" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:59.157842" elapsed="0.000524"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:33:59.158998" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:33:59.158534" elapsed="0.000509"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:33:59.227106" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:33:59.227915" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:33:59.228348" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:33:59.161401" elapsed="0.067885">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:33:59.159112" elapsed="0.070640">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.230224" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:59.229837" elapsed="0.000806"/>
</branch>
<status status="FAIL" start="2026-04-05T00:33:59.159094" elapsed="0.071608">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.231818" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:59.232128" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:33:59.232042" elapsed="0.000181"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:59.232002" elapsed="0.000270"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.232615" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:33:59.232770" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:33:59.156822" elapsed="0.076192">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:59.233181" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:33:59.037382" elapsed="0.196146">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:33:59.234129" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:33:59.233738" elapsed="0.000552"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:33:59.233699" elapsed="0.000644"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:33:59.234414" elapsed="0.000067"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:33:59.030517" elapsed="0.204152">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:02.292238" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:02.291611" elapsed="0.000681"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:02.293414" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:02.293136" elapsed="0.000392">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:02.293744" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:02.292678" elapsed="0.001112"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:02.294742" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:02.294130" elapsed="0.000659"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:02.295384" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:02.295666" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:02.295129" elapsed="0.000583"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:02.296407" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:02.296044" elapsed="0.000494"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:02.298085" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:02.297540" elapsed="0.000592"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:02.298580" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:02.298289" elapsed="0.000317"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:02.299281" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:02.298968" elapsed="0.000339"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:02.300141" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:02.299905" elapsed="0.000262"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:02.300221" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:34:02.300384" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:02.299531" elapsed="0.000878"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:02.300590" elapsed="0.000244"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:02.298836" elapsed="0.002039"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:02.301547" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:02.301119" elapsed="0.000476"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:02.302581" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:02.302350" elapsed="0.000257"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:02.302658" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:34:02.302811" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:02.301865" elapsed="0.000971"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:02.302983" elapsed="0.000224"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:02.300990" elapsed="0.002259"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:02.298660" elapsed="0.004623"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:02.303325" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:02.303500" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:02.297112" elapsed="0.006413"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:02.296698" elapsed="0.006885"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.303853" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:02.303644" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:02.296650" elapsed="0.007336"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:02.305106" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:02.304279" elapsed="0.000874"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:02.305284" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:02.290006" elapsed="0.015545"/>
</kw>
<msg time="2026-04-05T00:34:02.305764" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:02.275902" elapsed="0.029923"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.318364" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.330678" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.343027" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.343232" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.343405" elapsed="0.000033"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.343910" elapsed="0.000110"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:02.343693" elapsed="0.000409"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:02.343677" elapsed="0.000503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.344357" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.344700" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.345050" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:02.343640" elapsed="0.001607"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:02.343499" elapsed="0.001779"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.345442" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:02.345522" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:34:02.345684" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:02.271493" elapsed="0.074219"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:02.347373" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:02.346946" elapsed="0.000643">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:02.347768" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:02.346408" elapsed="0.001385"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.348116" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:02.347864" elapsed="0.000388"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:02.348976" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:02.348482" elapsed="0.000534"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:02.348279" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:02.347846" elapsed="0.001301"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:02.355645" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:02.349293" elapsed="0.006378"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:02.355728" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:34:02.355884" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:02.346071" elapsed="0.009838"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:02.357635" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:02.357071" elapsed="0.000776">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:02.358025" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:02.356584" elapsed="0.001466"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:02.358256" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:34:02.358122" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:02.358104" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.358497" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.358666" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:02.358730" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:34:02.360686" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:02.356235" elapsed="0.004478"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:02.362534" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:02.362054" elapsed="0.000528"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:02.363184" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:02.362735" elapsed="0.000496"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:02.444077" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:02.444926" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:02.445387" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:02.365516" elapsed="0.080903">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:02.363298" elapsed="0.083621">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.447417" elapsed="0.000099"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:02.447008" elapsed="0.000880"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:02.363280" elapsed="0.084671">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.449123" elapsed="0.000063"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:02.449546" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:02.449355" elapsed="0.000305"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:02.449311" elapsed="0.000398"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.450069" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:02.450230" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:02.361071" elapsed="0.089453">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:02.450707" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:02.247181" elapsed="0.203754">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:02.451584" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:02.451139" elapsed="0.000612"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:02.451101" elapsed="0.000704"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:02.451877" elapsed="0.000034"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:02.235813" elapsed="0.216290">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:05.511990" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:05.511318" elapsed="0.000726"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:05.513164" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:05.512898" elapsed="0.000340">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:05.513459" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:05.512398" elapsed="0.001108"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:05.514552" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:05.513878" elapsed="0.000722"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:05.515234" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:05.515512" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:05.514951" elapsed="0.000610"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:05.516252" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:05.515890" elapsed="0.000459"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:05.517620" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:05.517339" elapsed="0.000327"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:05.518093" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:05.517827" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:05.518839" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:05.518540" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:05.519599" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:05.519360" elapsed="0.000266"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:05.519678" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:34:05.519839" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:05.519047" elapsed="0.000817"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:05.520020" elapsed="0.000241"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:05.518379" elapsed="0.001922"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:05.521031" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:05.520691" elapsed="0.000366"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:05.521966" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:05.521752" elapsed="0.000240"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:05.522042" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:05.522191" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:05.521242" elapsed="0.000974"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:05.522363" elapsed="0.000278"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:05.520416" elapsed="0.002265"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:05.518202" elapsed="0.004513"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:05.522758" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:05.523030" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:05.516996" elapsed="0.006060"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:05.516550" elapsed="0.006573"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.523396" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:05.523184" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:05.516502" elapsed="0.007050"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:05.524815" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:05.523856" elapsed="0.001008"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:05.524996" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:05.508869" elapsed="0.016361"/>
</kw>
<msg time="2026-04-05T00:34:05.525402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:05.492649" elapsed="0.032829"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.538086" elapsed="0.000053"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.550489" elapsed="0.000069"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.564558" elapsed="0.000071"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.564903" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.565139" elapsed="0.000029"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.565777" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:05.565543" elapsed="0.000385"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:05.565519" elapsed="0.000494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.566195" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.566569" elapsed="0.000025"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.566926" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:05.565470" elapsed="0.001654"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:05.565254" elapsed="0.001901"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.567299" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:05.567467" elapsed="0.000019"/>
</return>
<msg time="2026-04-05T00:34:05.567637" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:05.488225" elapsed="0.079441"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:05.569460" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:05.569004" elapsed="0.000653">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:05.569840" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:05.568433" elapsed="0.001433"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.570201" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:05.569939" elapsed="0.000401"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:05.571163" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:05.570591" elapsed="0.000625"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:05.570369" elapsed="0.000991"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:05.569920" elapsed="0.001473"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:05.578324" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:05.571615" elapsed="0.006739"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:05.578415" elapsed="0.000057"/>
</return>
<msg time="2026-04-05T00:34:05.578649" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:05.568064" elapsed="0.010612"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:05.580358" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:05.579943" elapsed="0.000633">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:05.580767" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:05.579412" elapsed="0.001381"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:05.581033" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-05T00:34:05.580872" elapsed="0.000243"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:05.580850" elapsed="0.000305"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.581356" elapsed="0.000029"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.581761" elapsed="0.000025"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:05.581835" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:34:05.583820" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:05.579060" elapsed="0.004787"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:05.585917" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:05.585180" elapsed="0.000787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:05.586606" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:05.586116" elapsed="0.000538"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:05.655923" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:05.656868" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:05.657348" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:05.588947" elapsed="0.069430">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:05.586736" elapsed="0.072182">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.659474" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:05.659011" elapsed="0.000891"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:05.586711" elapsed="0.073256">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.661160" elapsed="0.000067"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:05.661535" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:05.661406" elapsed="0.000237"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:05.661361" elapsed="0.000337"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.662041" elapsed="0.000052"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:05.662209" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:05.584227" elapsed="0.078275">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:05.662788" elapsed="0.000042"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:05.463522" elapsed="0.199517">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:05.663732" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:05.663260" elapsed="0.000549"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:05.663220" elapsed="0.000613"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:05.663865" elapsed="0.000014"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:05.453196" elapsed="0.210770">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:08.718203" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:08.717555" elapsed="0.000703"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:08.719362" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:08.719089" elapsed="0.000369">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:08.719657" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:08.718632" elapsed="0.001138"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:08.720733" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:08.720119" elapsed="0.000661"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:08.721367" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:08.721679" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:08.721117" elapsed="0.000607"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:08.722477" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:08.722051" elapsed="0.000526"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:08.723790" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:08.723530" elapsed="0.000307"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:08.724258" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:08.723993" elapsed="0.000290"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:08.724958" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:08.724664" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:08.725838" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:08.725607" elapsed="0.000257"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:08.725917" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:34:08.726080" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:08.725168" elapsed="0.000937"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:08.726267" elapsed="0.000260"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:08.724530" elapsed="0.002038"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:08.727103" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:08.726810" elapsed="0.000318"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:08.728021" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:08.727813" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:08.728096" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:08.728244" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:08.727309" elapsed="0.000959"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:08.728413" elapsed="0.000237"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:08.726682" elapsed="0.002009"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:08.724337" elapsed="0.004388"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:08.728768" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:08.728920" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:08.723183" elapsed="0.005768"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:08.722740" elapsed="0.006268"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.729273" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:08.729067" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:08.722691" elapsed="0.006713"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:08.730656" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:08.729831" elapsed="0.000875"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:08.730888" elapsed="0.000077"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:08.715927" elapsed="0.015201"/>
</kw>
<msg time="2026-04-05T00:34:08.731357" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:08.701816" elapsed="0.029629"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.744118" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.756750" elapsed="0.000033"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.769016" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.769224" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.769400" elapsed="0.000038"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.769922" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:08.769707" elapsed="0.000359"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:08.769688" elapsed="0.000457"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.770339" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.770671" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.771024" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:08.769649" elapsed="0.001574"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:08.769503" elapsed="0.001751"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.771397" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:08.771494" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:34:08.771641" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:08.697631" elapsed="0.074038"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:08.773340" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:08.772920" elapsed="0.000641">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:08.773742" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:08.772366" elapsed="0.001402"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.774150" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:08.773893" elapsed="0.000442"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:08.775063" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:08.774559" elapsed="0.000545"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:08.774365" elapsed="0.000850"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:08.773874" elapsed="0.001365"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:08.781753" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:08.775387" elapsed="0.006393"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:08.781833" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:34:08.781988" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:08.772029" elapsed="0.009983"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:08.783570" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:08.783190" elapsed="0.000564">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:08.783930" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:08.782707" elapsed="0.001248"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:08.784160" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:34:08.784026" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:08.784008" elapsed="0.000234"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.784382" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.784565" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:08.784630" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:08.786696" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:08.782370" elapsed="0.004353"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:08.788353" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:08.787894" elapsed="0.000507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:08.789011" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:08.788564" elapsed="0.000494"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:08.860830" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:08.861480" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:08.861822" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:08.791449" elapsed="0.071140">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:08.789125" elapsed="0.073776">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.863347" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:08.862967" elapsed="0.000679"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:08.789107" elapsed="0.074659">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.864596" elapsed="0.000045"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:08.864814" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:08.864755" elapsed="0.000124"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:08.864727" elapsed="0.000185"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.865119" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:08.865259" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:08.787073" elapsed="0.078463">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:08.865674" elapsed="0.000028"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:08.675669" elapsed="0.190182">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:08.866367" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:08.866011" elapsed="0.000537"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:08.865981" elapsed="0.000615"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:08.866661" elapsed="0.000030"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:08.665013" elapsed="0.201852">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:11.922493" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:11.921876" elapsed="0.000670"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:11.923632" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:11.923334" elapsed="0.000375">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:11.923907" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:11.922893" elapsed="0.001059"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:11.924922" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:11.924286" elapsed="0.000682"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:11.925566" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:11.925833" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:11.925301" elapsed="0.000578"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:11.926582" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:11.926208" elapsed="0.000470"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:11.927918" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:11.927660" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:11.928401" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:11.928117" elapsed="0.000330"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:11.929110" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:11.928813" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:11.929869" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:11.929647" elapsed="0.000247"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:11.929947" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:34:11.930108" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:11.929317" elapsed="0.000816"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:11.930280" elapsed="0.000263"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:11.928681" elapsed="0.001903"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:11.931118" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:11.930824" elapsed="0.000319"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:11.932121" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:11.931912" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:11.932197" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:11.932345" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:11.931323" elapsed="0.001075"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:11.932563" elapsed="0.000222"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:11.930696" elapsed="0.002130"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:11.928502" elapsed="0.004358"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:11.932904" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:34:11.933057" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:11.927229" elapsed="0.005853"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:11.926834" elapsed="0.006306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:11.933403" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:11.933199" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:11.926786" elapsed="0.006764"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:11.934637" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:11.933844" elapsed="0.000840"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:11.934813" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:11.920259" elapsed="0.014784"/>
</kw>
<msg time="2026-04-05T00:34:11.935210" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:11.906179" elapsed="0.029085"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:11.947984" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:11.960231" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:11.972626" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:11.972819" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:11.972988" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:11.973468" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:11.973243" elapsed="0.000370"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:11.973228" elapsed="0.000462"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:11.973863" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:11.974173" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:11.974552" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:11.973197" elapsed="0.001553"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:11.973063" elapsed="0.001716"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:11.974929" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:11.975004" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:34:11.975123" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:11.901012" elapsed="0.074137"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:11.976749" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:11.976333" elapsed="0.000616">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:11.977128" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:11.975838" elapsed="0.001315"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:11.977481" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:11.977223" elapsed="0.000398"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:11.978331" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:11.977823" elapsed="0.000549"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:11.977649" elapsed="0.000856"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:11.977205" elapsed="0.001324"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:11.984868" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:11.978675" elapsed="0.006219"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:11.984946" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:11.985110" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:11.975518" elapsed="0.009619"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:11.986799" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:11.986331" elapsed="0.000657">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:11.987166" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:11.985841" elapsed="0.001351"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:11.987396" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-05T00:34:11.987263" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:11.987244" elapsed="0.000253"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:11.987669" elapsed="0.000024"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:11.987839" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:11.987903" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:11.990012" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:11.985513" elapsed="0.004525"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:11.991874" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:11.991398" elapsed="0.000523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:11.992563" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:11.992069" elapsed="0.000541"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:12.066634" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:12.067340" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:12.067806" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:11.994945" elapsed="0.073846">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:11.992678" elapsed="0.076543">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:12.069682" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:12.069303" elapsed="0.000761"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:11.992659" elapsed="0.077466">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:12.071168" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:12.071539" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:12.071384" elapsed="0.000254"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:12.071345" elapsed="0.000341"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:12.071993" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:12.072146" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:11.990395" elapsed="0.081991">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:12.072706" elapsed="0.000040"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:11.878127" elapsed="0.194810">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:12.073566" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:12.073142" elapsed="0.000586"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:12.073105" elapsed="0.000676"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:12.073852" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:11.867953" elapsed="0.206113">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:15.128136" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:15.127325" elapsed="0.000868"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:15.129329" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:15.129032" elapsed="0.000382">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:15.129627" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:15.128577" elapsed="0.001096"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:15.130668" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:15.130049" elapsed="0.000668"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:15.131330" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:15.131672" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:15.131068" elapsed="0.000650"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:15.132406" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:15.132047" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:15.133692" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:15.133417" elapsed="0.000320"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:15.134198" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:15.133897" elapsed="0.000327"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:15.134903" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:15.134605" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:15.135735" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:15.135508" elapsed="0.000253"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:15.135812" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:34:15.135971" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:15.135110" elapsed="0.000961"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:15.136227" elapsed="0.000262"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:15.134471" elapsed="0.002060"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:15.137086" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:15.136787" elapsed="0.000325"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:15.137832" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:15.137621" elapsed="0.000236"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:15.137907" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:34:15.138071" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:15.137295" elapsed="0.000801"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:15.138241" elapsed="0.000237"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:15.136656" elapsed="0.001864"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:15.134278" elapsed="0.004277"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:15.138598" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:15.138753" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:15.133090" elapsed="0.005689"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:15.132676" elapsed="0.006161"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.139105" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:15.138898" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:15.132629" elapsed="0.006611"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:15.140606" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:15.139630" elapsed="0.001026"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:15.140789" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:15.125476" elapsed="0.015547"/>
</kw>
<msg time="2026-04-05T00:34:15.141191" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:15.110534" elapsed="0.030717"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.153860" elapsed="0.000033"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.166355" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.178710" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.178957" elapsed="0.000027"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.179146" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.179636" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:15.179404" elapsed="0.000377"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:15.179389" elapsed="0.000470"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.180031" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.180343" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.180705" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:15.179358" elapsed="0.001546"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:15.179221" elapsed="0.001712"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.181076" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:15.181152" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:15.181272" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:15.106053" elapsed="0.075245"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:15.182929" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:15.182551" elapsed="0.000565">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:15.183294" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:15.182000" elapsed="0.001319"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.183655" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:15.183389" elapsed="0.000404"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:15.184504" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:15.183996" elapsed="0.000548"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:15.183820" elapsed="0.000833"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:15.183372" elapsed="0.001305"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:15.190995" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:15.184823" elapsed="0.006199"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:15.191074" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:15.191226" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:15.181676" elapsed="0.009574"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:15.192851" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:15.192482" elapsed="0.000553">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:15.193214" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:15.191985" elapsed="0.001254"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:15.193465" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:34:15.193310" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:15.193292" elapsed="0.000288"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.193726" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.193897" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:15.193963" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:15.196205" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:15.191664" elapsed="0.004567"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:15.197962" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:15.197504" elapsed="0.000505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:15.198658" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:15.198191" elapsed="0.000511"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:15.266673" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:15.267483" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:15.267941" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:15.201091" elapsed="0.067880">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:15.198770" elapsed="0.070704">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.269963" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:15.269569" elapsed="0.000845"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:15.198751" elapsed="0.071797">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.271776" elapsed="0.000065"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:15.272103" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:15.272014" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:15.271971" elapsed="0.000293"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.272633" elapsed="0.000053"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:15.272806" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:15.196688" elapsed="0.076375">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:15.273244" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:15.083987" elapsed="0.189528">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:15.274213" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:15.273746" elapsed="0.000759"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:15.273705" elapsed="0.000860"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:15.274651" elapsed="0.000036"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:15.075121" elapsed="0.199778">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:18.326752" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:18.326126" elapsed="0.000679"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:18.327909" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:18.327640" elapsed="0.000343">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:18.328181" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:18.327159" elapsed="0.001066"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:18.329182" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:18.328582" elapsed="0.000647"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:18.329846" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:18.330110" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:18.329595" elapsed="0.000560"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:18.330867" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:18.330509" elapsed="0.000454"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:18.332141" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:18.331884" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:18.332624" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:18.332341" elapsed="0.000309"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:18.333324" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:18.333020" elapsed="0.000330"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:18.334084" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:18.333863" elapsed="0.000246"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:18.334162" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:34:18.334321" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:18.333549" elapsed="0.000796"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:18.334608" elapsed="0.000248"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:18.332884" elapsed="0.002014"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:18.335455" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:18.335146" elapsed="0.000335"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:18.336218" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:18.336002" elapsed="0.000241"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:18.336293" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:18.336455" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:18.335686" elapsed="0.000794"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:18.336689" elapsed="0.000225"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:18.335018" elapsed="0.001937"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:18.332704" elapsed="0.004285"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:18.337032" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:18.337186" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:18.331526" elapsed="0.005684"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:18.331117" elapsed="0.006151"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.337551" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:18.337328" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:18.331073" elapsed="0.006613"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:18.339087" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:18.337982" elapsed="0.001152"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:18.339269" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:18.324563" elapsed="0.014956"/>
</kw>
<msg time="2026-04-05T00:34:18.339712" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:18.310571" elapsed="0.029196"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.352260" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.364540" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.376897" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.377087" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.377256" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.377738" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:18.377527" elapsed="0.000355"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:18.377513" elapsed="0.000444"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.378131" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.378455" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.378841" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:18.377481" elapsed="0.001557"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:18.377331" elapsed="0.001736"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.379211" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:18.379287" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:34:18.379407" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:18.306366" elapsed="0.073081"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:18.381021" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:18.380651" elapsed="0.000558">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:18.381388" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:18.380134" elapsed="0.001279"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.381745" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:18.381507" elapsed="0.000375"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:18.382589" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:18.382082" elapsed="0.000547"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:18.381909" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:18.381488" elapsed="0.001274"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:18.389024" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:18.382908" elapsed="0.006142"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:18.389102" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:18.389254" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:18.379814" elapsed="0.009464"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:18.390872" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:18.390505" elapsed="0.000552">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:18.391235" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:18.390003" elapsed="0.001257"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:18.391480" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:34:18.391330" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:18.391312" elapsed="0.000250"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.391750" elapsed="0.000024"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.391921" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:18.391987" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:18.394168" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:18.389688" elapsed="0.004506"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:18.395853" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:18.395364" elapsed="0.000536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:18.396563" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:18.396049" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:18.462138" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:18.462907" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:18.463339" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:18.399000" elapsed="0.065346">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:18.396677" elapsed="0.068145">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.465287" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:18.464907" elapsed="0.000806"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:18.396658" elapsed="0.069116">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.466844" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:18.467151" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:18.467066" elapsed="0.000181"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:18.467025" elapsed="0.000271"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.467637" elapsed="0.000065"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:18.467815" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:18.394564" elapsed="0.073493">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:18.468227" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:18.282324" elapsed="0.186154">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:18.469075" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:18.468684" elapsed="0.000552"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:18.468646" elapsed="0.000643"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:18.469359" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:18.275975" elapsed="0.193631">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:21.527645" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:21.526985" elapsed="0.000781"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:21.528915" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:21.528619" elapsed="0.000377">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:21.529199" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:21.528120" elapsed="0.001157"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:21.530268" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:21.529656" elapsed="0.000658"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:21.530964" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:21.531230" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:21.530705" elapsed="0.000569"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:21.532014" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:21.531619" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:21.533546" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:21.533172" elapsed="0.000433"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:21.534137" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:21.533811" elapsed="0.000352"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:21.534842" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:21.534545" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:21.535653" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:21.535396" elapsed="0.000283"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:21.535732" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:34:21.535896" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:21.535050" elapsed="0.000871"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:21.536068" elapsed="0.000242"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:21.534395" elapsed="0.001967"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:21.537083" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:21.536782" elapsed="0.000328"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:21.537919" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:21.537704" elapsed="0.000241"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:21.537995" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:21.538141" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:21.537332" elapsed="0.000833"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:21.538309" elapsed="0.000239"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:21.536632" elapsed="0.001957"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:21.534219" elapsed="0.004404"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:21.538666" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:34:21.538855" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:21.532748" elapsed="0.006139"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:21.532272" elapsed="0.006672"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.539210" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:21.539005" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:21.532223" elapsed="0.007117"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:21.540829" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:21.539658" elapsed="0.001219"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:21.541006" elapsed="0.000078"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:21.525367" elapsed="0.015907"/>
</kw>
<msg time="2026-04-05T00:34:21.541480" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:21.510566" elapsed="0.030973"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.554626" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.567856" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.580947" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.581139" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.581336" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.581852" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:21.581642" elapsed="0.000352"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:21.581627" elapsed="0.000444"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.582243" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.582606" elapsed="0.000025"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.582963" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:21.581593" elapsed="0.001591"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:21.581417" elapsed="0.001806"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.583376" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:21.583474" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:34:21.583602" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:21.506038" elapsed="0.077589"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:21.585404" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:21.584939" elapsed="0.000678">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:21.585799" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:21.584397" elapsed="0.001427"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.586182" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:21.585909" elapsed="0.000413"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:21.587042" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:21.586546" elapsed="0.000540"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:21.586350" elapsed="0.000873"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:21.585884" elapsed="0.001366"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:21.594014" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:21.587401" elapsed="0.006642"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:21.594109" elapsed="0.000038"/>
</return>
<msg time="2026-04-05T00:34:21.594288" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:21.584067" elapsed="0.010245"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:21.595949" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:21.595579" elapsed="0.000555">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:21.596312" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:21.595036" elapsed="0.001301"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:21.596591" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:34:21.596444" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:21.596403" elapsed="0.000272"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.596816" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.596981" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:21.597046" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:21.599548" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:21.594718" elapsed="0.004864"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:21.601458" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:21.600879" elapsed="0.000631"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:21.602117" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:21.601663" elapsed="0.000499"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:21.698150" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:21.698927" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:21.699342" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:21.604544" elapsed="0.095729">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:21.602230" elapsed="0.098590">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.701257" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:21.700903" elapsed="0.000794"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:21.602211" elapsed="0.099547">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.702821" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:21.703124" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:21.703043" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:21.703002" elapsed="0.000265"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.703606" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:21.703762" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:21.600052" elapsed="0.103948">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:21.704166" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:21.480537" elapsed="0.223844">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:21.705004" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:21.704617" elapsed="0.000545"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:21.704578" elapsed="0.000638"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:21.705287" elapsed="0.000094"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:21.470708" elapsed="0.234989">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:24.760773" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:24.760141" elapsed="0.000686"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:24.761953" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:24.761650" elapsed="0.000384">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:24.762234" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:24.761187" elapsed="0.001091"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:24.763272" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:24.762643" elapsed="0.000677"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:24.763927" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:24.764281" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:24.763675" elapsed="0.000650"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:24.765063" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:24.764690" elapsed="0.000481"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:24.766364" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:24.766106" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:24.766932" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:24.766635" elapsed="0.000323"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:24.767644" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:24.767327" elapsed="0.000342"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:24.768386" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:24.768165" elapsed="0.000246"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:24.768481" elapsed="0.000038"/>
</return>
<msg time="2026-04-05T00:34:24.768649" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:24.767854" elapsed="0.000820"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:24.768821" elapsed="0.000247"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:24.767194" elapsed="0.001915"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:24.769779" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:24.769357" elapsed="0.000448"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:24.770662" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:24.770296" elapsed="0.000393"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:24.770737" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:24.770906" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:24.769988" elapsed="0.000944"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:24.771077" elapsed="0.000374"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:24.769229" elapsed="0.002263"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:24.767016" elapsed="0.004510"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:24.771569" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:24.771723" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:24.765780" elapsed="0.005968"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:24.765333" elapsed="0.006473"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.772072" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:24.771867" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:24.765285" elapsed="0.006918"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:24.773322" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:24.772520" elapsed="0.000849"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:24.773521" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:24.758510" elapsed="0.015243"/>
</kw>
<msg time="2026-04-05T00:34:24.773924" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:24.744447" elapsed="0.029532"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.786831" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.799180" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.811726" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.811959" elapsed="0.000026"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.812139" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.812674" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:24.812446" elapsed="0.000372"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:24.812404" elapsed="0.000491"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.813070" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.813386" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.813755" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:24.812362" elapsed="0.001592"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:24.812220" elapsed="0.001764"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.814129" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:24.814204" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:34:24.814334" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:24.740105" elapsed="0.074255"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:24.816058" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:24.815652" elapsed="0.000605">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:24.816460" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:24.815121" elapsed="0.001365"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.816809" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:24.816558" elapsed="0.000390"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:24.817662" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:24.817150" elapsed="0.000552"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:24.816976" elapsed="0.000867"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:24.816539" elapsed="0.001330"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:24.824165" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:24.818016" elapsed="0.006176"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:24.824244" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:24.824397" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:24.814761" elapsed="0.009750"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:24.826017" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:24.825655" elapsed="0.000544">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:24.826376" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:24.825155" elapsed="0.001246"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:24.826623" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:34:24.826489" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:24.826470" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.826846" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.827036" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:24.827102" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:24.829180" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:24.824838" elapsed="0.004369"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:24.831008" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:24.830525" elapsed="0.000531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:24.831674" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:24.831205" elapsed="0.000514"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:24.900846" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:24.901598" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:24.902062" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:24.834110" elapsed="0.068950">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:24.831787" elapsed="0.071750">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.904009" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:24.903625" elapsed="0.000776"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:24.831769" elapsed="0.072725">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.905609" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:24.905925" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:24.905838" elapsed="0.000308"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:24.905796" elapsed="0.000412"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.906560" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:24.906721" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:24.829702" elapsed="0.077322">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:24.907203" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:24.716436" elapsed="0.190985">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:24.908063" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:24.907659" elapsed="0.000541"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:24.907620" elapsed="0.000609"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:24.908268" elapsed="0.000014"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:24.707516" elapsed="0.200848">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:27.963142" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:27.962544" elapsed="0.000652"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:27.964264" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:27.964000" elapsed="0.000340">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:27.964590" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:27.963557" elapsed="0.001083"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:27.965582" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:27.964976" elapsed="0.000652"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:27.966217" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:27.966494" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:27.965964" elapsed="0.000576"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:27.967225" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:27.966870" elapsed="0.000453"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:27.968548" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:27.968208" elapsed="0.000392"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:27.969028" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:27.968758" elapsed="0.000296"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:27.969731" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:27.969417" elapsed="0.000397"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:27.970563" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:27.970325" elapsed="0.000264"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:27.970642" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:34:27.970801" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:27.970005" elapsed="0.000821"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:27.970974" elapsed="0.000237"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:27.969285" elapsed="0.001967"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:27.971812" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:27.971513" elapsed="0.000325"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:27.972696" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:27.972330" elapsed="0.000393"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:27.972774" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:27.972924" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:27.972020" elapsed="0.000928"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:27.973094" elapsed="0.000222"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:27.971365" elapsed="0.001992"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:27.969111" elapsed="0.004281"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:27.973450" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:27.973607" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:27.967888" elapsed="0.005744"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:27.967493" elapsed="0.006200"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:27.973958" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:27.973752" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:27.967444" elapsed="0.006646"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:27.975345" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:27.974385" elapsed="0.001007"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:27.975542" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:27.960979" elapsed="0.014792"/>
</kw>
<msg time="2026-04-05T00:34:27.975939" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:27.947061" elapsed="0.028931"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:27.988623" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.000906" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.013230" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.013433" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.013607" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.014073" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:28.013863" elapsed="0.000354"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:28.013847" elapsed="0.000446"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.014481" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.014796" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.015141" elapsed="0.000026"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:28.013815" elapsed="0.001527"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:28.013683" elapsed="0.001688"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.015536" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:28.015620" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:28.015738" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:27.942650" elapsed="0.073114"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:28.017389" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:28.016972" elapsed="0.000622">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:28.017773" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:28.016453" elapsed="0.001345"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.018137" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:28.017870" elapsed="0.000417"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.019014" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:28.018516" elapsed="0.000538"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:28.018315" elapsed="0.000847"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:28.017851" elapsed="0.001335"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.025618" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:28.019333" elapsed="0.006312"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:28.025698" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:34:28.025857" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:28.016120" elapsed="0.009761"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:28.027438" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:28.027047" elapsed="0.000587">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:28.027866" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:28.026561" elapsed="0.001330"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:28.028098" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:34:28.027963" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:28.027945" elapsed="0.000236"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.028320" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.028504" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:28.028603" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:34:28.030778" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:28.026215" elapsed="0.004589"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.032469" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:28.031993" elapsed="0.000524"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.033146" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:28.032687" elapsed="0.000504"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:28.102565" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:28.103289" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:28.103731" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:28.035609" elapsed="0.069122">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:28.033259" elapsed="0.071912">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.105674" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:28.105261" elapsed="0.000799"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:28.033241" elapsed="0.072885">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.107160" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:28.107493" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:28.107379" elapsed="0.000211"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:28.107340" elapsed="0.000299"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.107944" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:28.108098" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:28.031163" elapsed="0.077171">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:28.108534" elapsed="0.000050"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:27.919504" elapsed="0.189346">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.109524" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:28.109061" elapsed="0.000629"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:28.109022" elapsed="0.000722"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:28.109817" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:27.909505" elapsed="0.200544">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<msg time="2026-04-05T00:34:28.110258" level="FAIL">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${timeout}</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-05T00:33:55.891530" elapsed="32.218964">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${mapping}</arg>
<doc>Checks weather the device was mounted.</doc>
<status status="FAIL" start="2026-04-05T00:33:55.871900" elapsed="32.238851">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.127645" elapsed="0.000086"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${mod_session}</var>
<arg>member_index=${idx}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.128287" elapsed="0.000026"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}netconf-state</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${mod_session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.128509" elapsed="0.000026"/>
</kw>
<var name="${idx}"/>
<status status="NOT RUN" start="2026-04-05T00:34:28.127969" elapsed="0.000644"/>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:28.127855" elapsed="0.000796"/>
</for>
<kw name="Remove_Netconf_Device" type="TEARDOWN">
<kw name="Remove_Device_From_Netconf" owner="NetconfKeywords">
<kw name="Pop From Dictionary" owner="Collections">
<msg time="2026-04-05T00:34:28.130249" level="INFO">${device_type} = full-uri-device</msg>
<var>${device_type}</var>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<doc>Pops the given ``key`` from the ``dictionary`` and returns its value.</doc>
<status status="PASS" start="2026-04-05T00:34:28.129933" elapsed="0.000346"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.131067" level="INFO">${mapping} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:28.130459" elapsed="0.000635"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:28.151710" elapsed="0.000950"/>
</kw>
<msg time="2026-04-05T00:34:28.152902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:28.151331" elapsed="0.001651"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:28.150917" elapsed="0.002145"/>
</kw>
<msg time="2026-04-05T00:34:28.153104" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:28.142354" elapsed="0.010807"/>
</kw>
<msg time="2026-04-05T00:34:28.153261" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:28.141999" elapsed="0.011286"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.195924" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:28.195251" elapsed="0.000861"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:28.197847" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:28.197264" elapsed="0.000710">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:28.198099" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:28.196450" elapsed="0.001763"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.199642" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:28.198578" elapsed="0.001177"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:28.200357" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:28.200616" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:28.200139" elapsed="0.000617"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.201577" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:28.201060" elapsed="0.000579"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.203687" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:28.203337" elapsed="0.000397"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.204195" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:28.203933" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.205177" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:28.204702" elapsed="0.000502"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:28.205978" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:28.205756" elapsed="0.000248"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:28.206057" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:34:28.206239" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:28.205395" elapsed="0.000874"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:28.206436" elapsed="0.000227"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:28.204549" elapsed="0.002156"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.207239" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:28.206944" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:28.208145" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:28.207937" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:28.208220" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:28.208367" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:28.207599" elapsed="0.000791"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:28.208551" elapsed="0.000246"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:28.206815" elapsed="0.002023"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:28.204320" elapsed="0.004572"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:28.208957" elapsed="0.000070"/>
</return>
<msg time="2026-04-05T00:34:28.209325" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:28.202542" elapsed="0.006874"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:28.201829" elapsed="0.007682"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.209812" elapsed="0.000085"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:28.209592" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:28.201802" elapsed="0.008279"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.211200" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:28.210233" elapsed="0.001077"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:28.211654" elapsed="0.000032"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:28.194265" elapsed="0.017536"/>
</kw>
<msg time="2026-04-05T00:34:28.211855" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:28.181678" elapsed="0.030237"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.224310" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.236701" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.248884" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.249074" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.249243" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.249672" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:28.249529" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:28.249514" elapsed="0.000237"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.249886" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.250046" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.250204" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:28.249482" elapsed="0.000774"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:28.249316" elapsed="0.000965"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.250437" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:28.250513" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:34:28.250630" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:28.177409" elapsed="0.073246"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.251809" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:28.251559" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:28.265636" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:28.265739" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:28.265932" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:34:28.254112" elapsed="0.011877"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:28.251922" elapsed="0.014155"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.266503" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:28.266135" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:28.251904" elapsed="0.014787"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.275143" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:28.269408" elapsed="0.005831"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:28.268927" elapsed="0.006388"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:28.268886" elapsed="0.006483"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.279185" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:28.276008" elapsed="0.003228"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:28.275527" elapsed="0.003742"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:28.275487" elapsed="0.003806"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.279857" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:28.279479" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.280180" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:28.279952" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.280837" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:28.280413" elapsed="0.000451"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:28.280260" elapsed="0.000638"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:28.279935" elapsed="0.000984"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.281449" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:28.281070" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:28.281769" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:28.281544" elapsed="0.000280"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:28.282395" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:28.282000" elapsed="0.000442"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:28.281848" elapsed="0.000630"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:28.281527" elapsed="0.000972"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:28.282642" elapsed="0.000458"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:34:28.283635" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:28.283261" elapsed="0.000400"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:34:28.283812" elapsed="0.005410"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:34:28.267849" elapsed="0.021435"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:34:28.289328" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:34:28.291596" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:34:28.250951" elapsed="0.040672"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:34:28.291717" elapsed="0.000029"/>
</return>
<arg>${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>${mapping}</arg>
<arg>session=${session}</arg>
<arg>location=${location}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:34:28.153523" elapsed="0.138319"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf to deconfigure the specified device</doc>
<status status="PASS" start="2026-04-05T00:34:28.129456" elapsed="0.162446"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<doc>Removes configured device</doc>
<status status="PASS" start="2026-04-05T00:34:28.128910" elapsed="0.163042"/>
</kw>
<arg>${idx}</arg>
<doc>Netconf readines for a node is done by creating a netconf device connected to that node
and performing GET operation got from the device's mount point.</doc>
<status status="FAIL" start="2026-04-05T00:33:55.547628" elapsed="32.744408">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<var name="${idx}">1</var>
<status status="FAIL" start="2026-04-05T00:33:55.547142" elapsed="32.744957">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="FAIL" start="2026-04-05T00:33:55.546811" elapsed="32.745346">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</for>
<doc>Verifies the netconf readiness for every odl node.</doc>
<status status="FAIL" start="2026-04-05T00:33:55.546237" elapsed="32.746015">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Check_Netconf_Topology_Ready">
<for flavor="IN">
<iter>
<kw name="Verify_Netconf_Topology_Ready_For_Node">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.296821" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:29.296046" elapsed="0.000843"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:34:29.297007" elapsed="0.000078"/>
</return>
<msg time="2026-04-05T00:34:29.297374" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${node_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:34:29.295206" elapsed="0.002253"/>
</kw>
<kw name="Configure_Netconf_Device">
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:29.321730" elapsed="0.000868"/>
</kw>
<msg time="2026-04-05T00:34:29.322741" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:29.321262" elapsed="0.001536"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:29.320854" elapsed="0.002019"/>
</kw>
<msg time="2026-04-05T00:34:29.322916" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:29.312381" elapsed="0.010580"/>
</kw>
<msg time="2026-04-05T00:34:29.323062" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:29.312053" elapsed="0.011034"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.323978" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.323250" elapsed="0.000756"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.324417" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.324100" elapsed="0.000399"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.359023" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:29.358557" elapsed="0.000501"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:29.360141" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:29.359824" elapsed="0.000406">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:29.360336" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:29.359403" elapsed="0.000960"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.361028" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:29.360629" elapsed="0.000425"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:29.361479" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:29.361639" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:29.361318" elapsed="0.000346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.362118" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:29.361868" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.363205" level="INFO">mapping: {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:29.362948" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.363687" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.363405" elapsed="0.000307"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.364371" level="INFO">${value} = 10.30.170.184</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:29.364076" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:29.365127" level="INFO">${encoded} = 10.30.170.184</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.364906" elapsed="0.000249"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:29.365281" elapsed="0.000048"/>
</return>
<msg time="2026-04-05T00:34:29.365492" level="INFO">${encoded_value} = 10.30.170.184</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:29.364594" elapsed="0.000924"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.365672" elapsed="0.000243"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.184</var>
<status status="PASS" start="2026-04-05T00:34:29.363944" elapsed="0.002012"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.366548" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:29.366202" elapsed="0.000372"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:29.367307" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.367092" elapsed="0.000242"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:29.367382" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:29.367555" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:29.366760" elapsed="0.000820"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.367727" elapsed="0.000226"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:29.366072" elapsed="0.001922"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.368559" level="INFO">${value} = 2830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:29.368240" elapsed="0.000345"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:29.369331" level="INFO">${encoded} = 2830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.369088" elapsed="0.000269"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:29.369412" elapsed="0.000046"/>
</return>
<msg time="2026-04-05T00:34:29.369582" level="INFO">${encoded_value} = 2830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:29.368765" elapsed="0.000842"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.369796" elapsed="0.000394"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">2830</var>
<status status="PASS" start="2026-04-05T00:34:29.368111" elapsed="0.002121"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.370813" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:29.370512" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:29.371565" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.371337" elapsed="0.000253"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:29.371640" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:29.371789" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:29.371021" elapsed="0.000792"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.371960" elapsed="0.000222"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:34:29.370345" elapsed="0.001877"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.372771" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:29.372474" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:29.373570" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.373328" elapsed="0.000268"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:29.373645" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:34:29.373794" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:29.372977" elapsed="0.000841"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.373964" elapsed="0.000223"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:34:29.372330" elapsed="0.001916"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.375029" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:29.374613" elapsed="0.000451"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:29.376065" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.375774" elapsed="0.000328"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:29.376169" elapsed="0.000041"/>
</return>
<msg time="2026-04-05T00:34:29.376386" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:29.375320" elapsed="0.001119"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.376649" elapsed="0.000310"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:34:29.374411" elapsed="0.002605"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.377822" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:29.377386" elapsed="0.000471"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:29.378658" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.378451" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:29.378733" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:29.378887" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:29.378109" elapsed="0.000803"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.379058" elapsed="0.000228"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:34:29.377170" elapsed="0.002156"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.379870" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:29.379578" elapsed="0.000317"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:29.380617" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.380396" elapsed="0.000246"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:29.380690" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:29.380836" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:29.380074" elapsed="0.000786"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.381016" elapsed="0.000284"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:29.379450" elapsed="0.001896"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:29.363764" elapsed="0.017617"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:29.381437" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:29.381604" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:29.362632" elapsed="0.018998"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:29.362292" elapsed="0.019370"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.381831" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.381688" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:29.362268" elapsed="0.019639"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.384046" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:29.382098" elapsed="0.001977"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:29.384177" elapsed="0.000056"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:29.357343" elapsed="0.027130"/>
</kw>
<msg time="2026-04-05T00:34:29.384565" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:29.342663" elapsed="0.041997"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.406565" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.428635" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.450666" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.450906" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.451096" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.451714" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.451395" elapsed="0.000404"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:29.451380" elapsed="0.000505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.452085" elapsed="0.000047"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.452416" elapsed="0.000059"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.452759" elapsed="0.000045"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:29.451350" elapsed="0.001609"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:29.451220" elapsed="0.001802"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.453175" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:29.453349" elapsed="0.000023"/>
</return>
<msg time="2026-04-05T00:34:29.453491" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:29.338154" elapsed="0.115363"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.482766" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:29.482338" elapsed="0.000459"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:29.483657" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:29.483379" elapsed="0.000362">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:29.483836" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:29.483034" elapsed="0.000826"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.484499" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:29.484079" elapsed="0.000451"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:29.484897" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:29.485057" level="INFO">${template} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVI...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:29.484748" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.485600" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;$DEVICE_USER&lt;/username&gt;
      &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:29.485321" elapsed="0.000337"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:34:29.486106" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.485786" elapsed="0.000382"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.486677" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.184', 'DEVICE_NAME': 'test-device', 'DEVICE_PORT': '2830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'admin', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', '...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:29.486343" elapsed="0.000361"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:29.486195" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:29.485760" elapsed="0.001001"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.487721" level="INFO">${final_text} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:29.486960" elapsed="0.000792"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:29.487851" elapsed="0.000062"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:29.481230" elapsed="0.006925"/>
</kw>
<msg time="2026-04-05T00:34:29.488297" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:29.467648" elapsed="0.020749"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.511771" elapsed="0.000060"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.539260" elapsed="0.000085"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.565123" elapsed="0.000052"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.565555" elapsed="0.000027"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.565788" elapsed="0.000026"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.566515" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.566192" elapsed="0.000424"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:29.566171" elapsed="0.000535"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.566918" elapsed="0.000045"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.567258" elapsed="0.000045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.567609" elapsed="0.000049"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:29.566127" elapsed="0.001661"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:29.565949" elapsed="0.001905"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.568006" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:29.568168" elapsed="0.000019"/>
</return>
<msg time="2026-04-05T00:34:29.568337" level="INFO">${data} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;283...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:29.464226" elapsed="0.104143"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:29.571375" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:29.570764" elapsed="0.000774">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:29.571680" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:29.569184" elapsed="0.002524"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.572282" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.571893" elapsed="0.000565"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.573660" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:29.572958" elapsed="0.000745"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:29.572487" elapsed="0.001298"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:29.571872" elapsed="0.001937"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.576578" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:29.573960" elapsed="0.002646"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:29.576706" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:34:29.576867" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:29.568805" elapsed="0.008088"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.579020" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:29.578523" elapsed="0.000563"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.579755" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:29.579253" elapsed="0.000573"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.580494" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:29.579994" elapsed="0.000563"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.581197" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:29.580719" elapsed="0.000538"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:34:29.582812" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:34:29.582189" elapsed="0.000725"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:34:29.583738" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:34:29.583183" elapsed="0.000657"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.584101" elapsed="0.000560"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.585726" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:29.584927" elapsed="0.000997"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:34:29.586013" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:34:29.586291" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:34:29.581508" elapsed="0.004814"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:29.609808" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '439', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.184&lt;/host&gt;
    &lt;port&gt;2830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;admin&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt; 
 </msg>
<msg time="2026-04-05T00:34:29.609920" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:29.610134" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:34:29.594571" elapsed="0.015645"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:29.586452" elapsed="0.024092"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.611006" elapsed="0.000178"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.610611" elapsed="0.001067"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:29.586414" elapsed="0.025329"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.619568" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:29.615634" elapsed="0.004000"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:29.614539" elapsed="0.005144"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:29.614463" elapsed="0.005289"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.622699" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:29.620301" elapsed="0.002468"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:29.619839" elapsed="0.002978"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:29.619808" elapsed="0.003079"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.624547" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:29.623469" elapsed="0.001189"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.625331" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.624812" elapsed="0.000671"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.626467" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:29.625938" elapsed="0.000568"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:29.625556" elapsed="0.001004"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:29.624773" elapsed="0.001855"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.628245" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:29.627159" elapsed="0.001190"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.628992" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.628499" elapsed="0.000591"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.630031" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:29.629541" elapsed="0.000535"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:29.629163" elapsed="0.000974"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:29.628465" elapsed="0.001744"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:29.630488" elapsed="0.000850"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:34:29.632356" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:29.631704" elapsed="0.000769"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.632743" elapsed="0.002807"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:34:29.612825" elapsed="0.022840"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:34:29.635908" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-05T00:34:29.635757" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:29.635736" elapsed="0.000328"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.636218" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:29.636340" elapsed="0.000019"/>
</return>
<msg time="2026-04-05T00:34:29.638618" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:34:29.577304" elapsed="0.061341"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:34:29.638708" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:29.638859" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:34:29.327440" elapsed="0.311444"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.639229" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.638980" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:29.638963" elapsed="0.000410"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:34:29.639407" elapsed="0.000175"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:34:29.324754" elapsed="0.314928"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:29.324525" elapsed="0.315199"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:29.324080" elapsed="0.315666"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.639884" elapsed="0.000234"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=full-uri-device</arg>
<arg>device_port=${DEVICE_PORT}</arg>
<arg>device_address=${device_ip}</arg>
<arg>device_user=admin</arg>
<arg>device_password=admin</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:34:29.298979" elapsed="0.341213"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${ODL_SYSTEM_${node_index}_IP}</arg>
<doc>Configures the device via REST api.</doc>
<status status="PASS" start="2026-04-05T00:34:29.297738" elapsed="0.342536"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.640920" level="INFO">&amp;{mapping} = { DEVICE_NAME=test-device | RESTCONF_ROOT=/rests }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.640469" elapsed="0.000478"/>
</kw>
<kw name="Wait_Netconf_Device_Mounted">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:29.659773" elapsed="0.000783"/>
</kw>
<msg time="2026-04-05T00:34:29.660608" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:29.659397" elapsed="0.001264"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:29.658915" elapsed="0.001820"/>
</kw>
<msg time="2026-04-05T00:34:29.660777" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:29.650195" elapsed="0.010626"/>
</kw>
<msg time="2026-04-05T00:34:29.660921" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:29.649878" elapsed="0.011068"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.708279" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:29.707706" elapsed="0.000620"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:29.709331" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:29.709108" elapsed="0.000301">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:29.709628" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:29.708673" elapsed="0.000998"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.710608" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:29.710005" elapsed="0.000649"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:29.711239" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:29.711510" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:29.710982" elapsed="0.000574"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.712243" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:29.711884" elapsed="0.000454"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.713604" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:29.713255" elapsed="0.000407"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.714084" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.713819" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.714939" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:29.714486" elapsed="0.000479"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:29.715737" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.715515" elapsed="0.000247"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:29.715814" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:34:29.715966" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:29.715151" elapsed="0.000840"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.716138" elapsed="0.000225"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:29.714337" elapsed="0.002067"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.717001" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:29.716696" elapsed="0.000331"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:29.717907" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.717693" elapsed="0.000239"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:29.717983" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:29.718221" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:29.717214" elapsed="0.001033"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:29.718395" elapsed="0.000243"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:29.716533" elapsed="0.002146"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:29.714162" elapsed="0.004552"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:29.718756" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:29.718913" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:29.712890" elapsed="0.006048"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:29.712504" elapsed="0.006492"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.719262" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.719057" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:29.712460" elapsed="0.006936"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.720505" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:29.719711" elapsed="0.000842"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:29.720685" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:29.706139" elapsed="0.014778"/>
</kw>
<msg time="2026-04-05T00:34:29.721084" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:29.692288" elapsed="0.028850"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.733912" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.746275" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.758577" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.758767" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.758936" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.759417" elapsed="0.000083"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.759188" elapsed="0.000391"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:29.759172" elapsed="0.000482"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.759827" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.760135" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.760530" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:29.759142" elapsed="0.001581"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:29.759010" elapsed="0.001741"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.760893" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:29.760968" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:29.761085" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:29.688130" elapsed="0.072981"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:29.762713" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:29.762323" elapsed="0.000576">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:29.763076" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:29.761838" elapsed="0.001263"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.763409" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.763172" elapsed="0.000397"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.764255" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:29.763754" elapsed="0.000541"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:29.763596" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:29.763154" elapsed="0.001287"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.770976" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:29.764588" elapsed="0.006415"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:29.771054" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:29.771206" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:29.761521" elapsed="0.009709"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:29.772868" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:29.772501" elapsed="0.000549">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:29.773229" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:29.772000" elapsed="0.001254"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:29.773494" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:34:29.773325" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:29.773307" elapsed="0.000270"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.773722" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.773888" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:29.773953" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:29.775981" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:29.771681" elapsed="0.004326"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.777653" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:29.777173" elapsed="0.000527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:29.778299" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:29.777847" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:29.794612" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:29.794942" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=503, reason=Service Unavailable 
 headers={'Content-Type': 'application/xml', 'Content-Length': '433'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;protocol&lt;/error-type&gt;&lt;error-path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology/a:topology[a:topology-id='topology-netconf']/a:node[a:node-id='test-device']&lt;/error-path&gt;&lt;error-message&gt;Mount point does not exist&lt;/error-message&gt;&lt;error-tag&gt;resource-denied-transport&lt;/error-tag&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:29.795121" level="FAIL">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:29.780693" elapsed="0.014867">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:29.778411" elapsed="0.017340">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.795934" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.795786" elapsed="0.000316"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:29.778392" elapsed="0.017736">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.796588" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:29.796721" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:29.796684" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:29.796667" elapsed="0.000116"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.796919" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:29.796987" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:29.776358" elapsed="0.020766">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:29.797200" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:29.666116" elapsed="0.131181">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:29.797751" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:29.797387" elapsed="0.000439"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:29.797371" elapsed="0.000478"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:29.797881" elapsed="0.000014"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:29.661739" elapsed="0.136239">HTTPError: 503 Server Error: Service Unavailable for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:32.851161" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:32.850499" elapsed="0.000717"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:32.852312" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:32.852035" elapsed="0.000351">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:32.852608" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:32.851588" elapsed="0.001065"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:32.853601" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:32.852992" elapsed="0.000657"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:32.854231" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:32.854511" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:32.853985" elapsed="0.000571"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:32.855267" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:32.854885" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:32.856615" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:32.856273" elapsed="0.000388"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:32.857094" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:32.856827" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:32.857846" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:32.857545" elapsed="0.000327"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:32.858602" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:32.858367" elapsed="0.000260"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:32.858680" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:34:32.858895" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:32.858055" elapsed="0.000865"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:32.859091" elapsed="0.000243"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:32.857392" elapsed="0.001983"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:32.859926" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:32.859630" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:32.860915" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:32.860706" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:32.860990" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:32.861136" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:32.860131" elapsed="0.001029"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:32.861304" elapsed="0.000238"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:32.859502" elapsed="0.002081"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:32.857174" elapsed="0.004443"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:32.861658" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:34:32.861810" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:32.855931" elapsed="0.005904"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:32.855536" elapsed="0.006358"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.862156" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:32.861952" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:32.855490" elapsed="0.006795"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:32.863382" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:32.862595" elapsed="0.000849"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:32.863578" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:32.848896" elapsed="0.014911"/>
</kw>
<msg time="2026-04-05T00:34:32.863973" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:32.834819" elapsed="0.029208"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.876526" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.889178" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.901596" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.901835" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.902007" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.902489" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:32.902266" elapsed="0.000365"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:32.902251" elapsed="0.000456"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.902878" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.903214" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.903578" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:32.902220" elapsed="0.001555"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:32.902082" elapsed="0.001722"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.903947" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:32.904022" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:34:32.904148" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:32.830618" elapsed="0.073556"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:32.905748" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:32.905351" elapsed="0.000582">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:32.906109" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:32.904860" elapsed="0.001275"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.906463" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:32.906206" elapsed="0.000396"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:32.907334" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:32.906804" elapsed="0.000572"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:32.906629" elapsed="0.000872"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:32.906188" elapsed="0.001337"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:32.913931" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:32.907676" elapsed="0.006282"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:32.914009" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:32.914159" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:32.904544" elapsed="0.009639"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:32.915773" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:32.915390" elapsed="0.000567">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:32.916134" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:32.914834" elapsed="0.001325"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:32.916407" elapsed="0.000045"/>
</return>
<status status="PASS" start="2026-04-05T00:34:32.916241" elapsed="0.000245"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:32.916219" elapsed="0.000323"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.916686" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.916850" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:32.916914" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:32.918935" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:32.914521" elapsed="0.004440"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:32.920651" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:32.920181" elapsed="0.000517"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:32.921293" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:32.920846" elapsed="0.000492"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:32.991300" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:32.992021" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:32.992479" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:32.923753" elapsed="0.069638">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:32.921406" elapsed="0.072444">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.994260" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:32.993927" elapsed="0.000747"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:32.921387" elapsed="0.073347">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.995816" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:32.996117" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:32.996035" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:32.995996" elapsed="0.000263"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.996597" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:32.996754" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:32.919334" elapsed="0.077654">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:32.997157" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:32.807414" elapsed="0.189960">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:32.997999" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:32.997612" elapsed="0.000617"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:32.997574" elapsed="0.000711"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:32.998358" elapsed="0.000034"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:32.799204" elapsed="0.199411">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:36.053982" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:36.053293" elapsed="0.000748"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:36.055200" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:36.054925" elapsed="0.000352">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:36.055500" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:36.054455" elapsed="0.001091"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:36.056519" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:36.055891" elapsed="0.000711"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:36.057237" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:36.057531" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:36.056978" elapsed="0.000600"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:36.058280" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:36.057913" elapsed="0.000467"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:36.059609" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:36.059325" elapsed="0.000329"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:36.060136" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:36.059849" elapsed="0.000313"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:36.060895" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:36.060554" elapsed="0.000366"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:36.061679" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:36.061452" elapsed="0.000253"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:36.061757" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:34:36.061922" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:36.061108" elapsed="0.000838"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:36.062100" elapsed="0.000252"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:36.060402" elapsed="0.001991"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:36.063097" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:36.062799" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:36.063994" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:36.063783" elapsed="0.000238"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:36.064082" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:34:36.064231" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:36.063305" elapsed="0.000951"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:36.064493" elapsed="0.000247"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:36.062667" elapsed="0.002115"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:36.060220" elapsed="0.004596"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:36.064860" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:36.065015" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:36.058988" elapsed="0.006051"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:36.058575" elapsed="0.006521"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.065361" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:36.065155" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:36.058526" elapsed="0.007067"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:36.066707" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:36.065893" elapsed="0.000861"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:36.066887" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:36.051525" elapsed="0.015594"/>
</kw>
<msg time="2026-04-05T00:34:36.067284" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:36.037274" elapsed="0.030066"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.079767" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.092293" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.104565" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.104813" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.104990" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.105520" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:36.105280" elapsed="0.000386"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:36.105261" elapsed="0.000484"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.105921" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.106230" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.106689" elapsed="0.000025"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:36.105223" elapsed="0.001671"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:36.105074" elapsed="0.001851"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.107073" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:36.107152" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:34:36.107303" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:36.033032" elapsed="0.074298"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:36.109074" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:36.108625" elapsed="0.000649">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:36.109476" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:36.108056" elapsed="0.001446"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.109837" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:36.109575" elapsed="0.000397"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:36.110729" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:36.110173" elapsed="0.000597"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:36.110000" elapsed="0.000880"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:36.109556" elapsed="0.001348"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:36.117398" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:36.111056" elapsed="0.006470"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:36.117581" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:34:36.117740" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:36.107710" elapsed="0.010055"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:36.119351" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:36.118919" elapsed="0.000657">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:36.119761" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:36.118415" elapsed="0.001371"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:36.119997" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:34:36.119858" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:36.119839" elapsed="0.000242"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.120237" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.120410" elapsed="0.000038"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:36.120493" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:34:36.122591" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:36.118093" elapsed="0.004525"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:36.124319" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:36.123830" elapsed="0.000539"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:36.125067" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:36.124536" elapsed="0.000587"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:36.190785" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:36.191321" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:36.191683" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:36.127599" elapsed="0.064817">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:36.125198" elapsed="0.067567">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.193139" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:36.192832" elapsed="0.000575"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:36.125178" elapsed="0.068296">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.194285" elapsed="0.000045"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:36.194536" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:36.194471" elapsed="0.000139"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:36.194420" elapsed="0.000229"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.194880" elapsed="0.000035"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:36.194993" elapsed="0.000026"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:36.122984" elapsed="0.072190">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:36.195296" elapsed="0.000029"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:36.010445" elapsed="0.185051">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:36.195929" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:36.195646" elapsed="0.000397"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:36.195617" elapsed="0.000466"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:36.196136" elapsed="0.000024"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:35.999744" elapsed="0.196549">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:39.252335" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:39.251731" elapsed="0.000793"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:39.253642" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:39.253324" elapsed="0.000393">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:39.253916" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:39.252880" elapsed="0.001080"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:39.254972" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:39.254335" elapsed="0.000684"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:39.255627" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:39.255881" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:39.255355" elapsed="0.000572"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:39.256641" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:39.256260" elapsed="0.000479"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:39.257889" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:39.257634" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:39.258377" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:39.258086" elapsed="0.000320"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:39.259097" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:39.258791" elapsed="0.000332"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:39.259856" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:39.259636" elapsed="0.000246"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:39.259933" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:34:39.260095" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:39.259303" elapsed="0.000815"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:39.260265" elapsed="0.000262"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:39.258659" elapsed="0.001909"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:39.261103" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:39.260808" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:39.261987" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:39.261779" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:39.262062" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:39.262209" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:39.261307" elapsed="0.000926"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:39.262514" elapsed="0.000232"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:39.260680" elapsed="0.002107"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:39.258481" elapsed="0.004339"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:39.262863" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:39.263017" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:39.257292" elapsed="0.005749"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:39.256896" elapsed="0.006202"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.263364" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:39.263158" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:39.256850" elapsed="0.006663"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:39.264654" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:39.263808" elapsed="0.000894"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:39.264836" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:39.250085" elapsed="0.014980"/>
</kw>
<msg time="2026-04-05T00:34:39.265234" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:39.236198" elapsed="0.029090"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.277844" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.290134" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.302733" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.302942" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.303111" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.303628" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:39.303380" elapsed="0.000392"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:39.303362" elapsed="0.000485"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.304021" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.304330" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.304713" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:39.303325" elapsed="0.001584"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:39.303186" elapsed="0.001751"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.305079" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:39.305155" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:39.305273" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:39.232030" elapsed="0.073269"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:39.307087" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:39.306701" elapsed="0.000581">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:39.307477" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:39.306137" elapsed="0.001366"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.307823" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:39.307575" elapsed="0.000387"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:39.308674" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:39.308164" elapsed="0.000551"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:39.307989" elapsed="0.000838"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:39.307557" elapsed="0.001293"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:39.315180" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:39.308996" elapsed="0.006211"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:39.315258" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:34:39.315433" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:39.305817" elapsed="0.009642"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:39.317012" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:39.316644" elapsed="0.000553">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:39.317377" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:39.316134" elapsed="0.001268"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:39.317625" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:34:39.317490" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:39.317472" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.317848" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.318013" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:39.318078" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:39.320263" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:39.315814" elapsed="0.004475"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:39.321933" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:39.321473" elapsed="0.000507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:39.322824" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:39.322130" elapsed="0.000739"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:39.391617" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:39.392343" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:39.392798" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:39.325088" elapsed="0.068679">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:39.322937" elapsed="0.071332">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.394784" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:39.394396" elapsed="0.000772"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:39.322919" elapsed="0.072307">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.396236" elapsed="0.000058"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:39.396611" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:39.396526" elapsed="0.000180"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:39.396419" elapsed="0.000334"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.397062" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:39.397218" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:39.320659" elapsed="0.076832">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:39.397664" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:39.207845" elapsed="0.190031">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:39.398538" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:39.398074" elapsed="0.000628"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:39.398038" elapsed="0.000717"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:39.398825" elapsed="0.000032"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:39.197348" elapsed="0.201693">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:42.453541" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:42.452914" elapsed="0.000683"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:42.454720" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:42.454414" elapsed="0.000387">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:42.454997" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:42.453965" elapsed="0.001076"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:42.456010" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:42.455373" elapsed="0.000685"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:42.456753" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:42.457171" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:42.456398" elapsed="0.000829"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:42.458033" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:42.457651" elapsed="0.000484"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:42.459378" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:42.459112" elapsed="0.000329"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:42.459876" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:42.459600" elapsed="0.000330"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:42.460643" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:42.460320" elapsed="0.000349"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:42.461552" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:42.461223" elapsed="0.000364"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:42.461655" elapsed="0.000046"/>
</return>
<msg time="2026-04-05T00:34:42.461864" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:42.460854" elapsed="0.001040"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:42.462084" elapsed="0.000305"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:42.460184" elapsed="0.002417"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:42.463176" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:42.462856" elapsed="0.000346"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:42.463959" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:42.463717" elapsed="0.000275"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:42.464048" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:34:42.464202" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:42.463385" elapsed="0.000841"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:42.464372" elapsed="0.000279"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:42.462723" elapsed="0.001969"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:42.459996" elapsed="0.004742"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:42.464784" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:34:42.464940" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:42.458771" elapsed="0.006196"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:42.458302" elapsed="0.006735"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.465372" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:42.465100" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:42.458250" elapsed="0.007274"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:42.466942" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:42.465826" elapsed="0.001173"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:42.467135" elapsed="0.000075"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:42.451323" elapsed="0.016049"/>
</kw>
<msg time="2026-04-05T00:34:42.467562" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:42.437243" elapsed="0.030376"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.480417" elapsed="0.000045"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.493571" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.506681" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.506878" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.507059" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.507561" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:42.507331" elapsed="0.000373"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:42.507314" elapsed="0.000465"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.507967" elapsed="0.000029"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.508302" elapsed="0.000027"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.508765" elapsed="0.000029"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:42.507279" elapsed="0.001740"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:42.507142" elapsed="0.001915"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.509234" elapsed="0.000025"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:42.509322" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:34:42.509501" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:42.432792" elapsed="0.076745"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:42.511313" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:42.510843" elapsed="0.000712">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:42.511763" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:42.510264" elapsed="0.001525"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.512151" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:42.511862" elapsed="0.000428"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:42.513022" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:42.512511" elapsed="0.000553"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:42.512318" elapsed="0.000887"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:42.511843" elapsed="0.001388"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:42.520161" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:42.513382" elapsed="0.006807"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:42.520242" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:34:42.520397" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:42.509912" elapsed="0.010525"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:42.522018" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:42.521624" elapsed="0.000588">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:42.522396" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:42.521104" elapsed="0.001335"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:42.522652" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:34:42.522515" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:42.522496" elapsed="0.000241"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.522879" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.523063" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:42.523133" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:42.525353" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:42.520770" elapsed="0.004611"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:42.527081" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:42.526609" elapsed="0.000572"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:42.527880" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:42.527336" elapsed="0.000621"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:42.596246" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:42.597122" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:42.597623" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:42.530241" elapsed="0.068456">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:42.528036" elapsed="0.071155">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.599743" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:42.599288" elapsed="0.000964"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:42.528015" elapsed="0.072306">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.601565" elapsed="0.000068"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:42.601909" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:42.601815" elapsed="0.000323"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:42.601769" elapsed="0.000430"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.602580" elapsed="0.000054"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:42.602752" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:42.525768" elapsed="0.077251">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:42.603204" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:42.408097" elapsed="0.195369">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:42.604346" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:42.603739" elapsed="0.000858"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:42.603687" elapsed="0.000951"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:42.604692" elapsed="0.000025"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:42.400152" elapsed="0.204705">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:45.660423" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:45.659807" elapsed="0.000686"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:45.661571" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:45.661285" elapsed="0.000363">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:45.661842" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:45.660845" elapsed="0.001041"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:45.662834" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:45.662220" elapsed="0.000660"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:45.663491" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:45.663754" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:45.663218" elapsed="0.000581"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:45.664534" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:45.664129" elapsed="0.000502"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:45.665807" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:45.665542" elapsed="0.000310"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:45.666278" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:45.666010" elapsed="0.000293"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:45.666983" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:45.666687" elapsed="0.000375"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:45.667804" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:45.667581" elapsed="0.000249"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:45.667883" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:34:45.668044" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:45.667248" elapsed="0.000821"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:45.668236" elapsed="0.000259"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:45.666554" elapsed="0.001983"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:45.669090" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:45.668791" elapsed="0.000325"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:45.669962" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:45.669752" elapsed="0.000237"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:45.670039" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:45.670189" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:45.669300" elapsed="0.000915"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:45.670361" elapsed="0.000250"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:45.668662" elapsed="0.001990"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:45.666359" elapsed="0.004328"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:45.670730" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:45.670886" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:45.665180" elapsed="0.005732"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:45.664785" elapsed="0.006184"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.671235" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:45.671029" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:45.664738" elapsed="0.006629"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:45.672677" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:45.671681" elapsed="0.001043"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:45.672857" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:45.658249" elapsed="0.014839"/>
</kw>
<msg time="2026-04-05T00:34:45.673258" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:45.644321" elapsed="0.028991"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.685852" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.698485" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.711151" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.711378" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.711576" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.712090" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:45.711868" elapsed="0.000375"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:45.711849" elapsed="0.000474"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.712520" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.712895" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.713248" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:45.711809" elapsed="0.001660"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:45.711661" elapsed="0.001844"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.713657" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:45.713736" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:34:45.713886" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:45.640075" elapsed="0.073839"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:45.715642" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:45.715197" elapsed="0.000643">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:45.716025" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:45.714643" elapsed="0.001408"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.716387" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:45.716124" elapsed="0.000420"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:45.717266" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:45.716767" elapsed="0.000541"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:45.716573" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:45.716105" elapsed="0.001360"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:45.723760" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:45.717614" elapsed="0.006174"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:45.723840" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:34:45.723997" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:45.714275" elapsed="0.009747"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:45.725699" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:45.725213" elapsed="0.000670">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:45.726119" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:45.724692" elapsed="0.001452"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:45.726354" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:34:45.726217" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:45.726197" elapsed="0.000260"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.726601" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.726766" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:45.726832" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:34:45.729147" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:45.724350" elapsed="0.004827"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:45.731402" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:45.730880" elapsed="0.000604"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:45.732168" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:45.731667" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:45.802326" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:45.803077" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:45.803527" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:45.735035" elapsed="0.069438">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:45.732302" elapsed="0.072591">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.805305" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:45.804972" elapsed="0.000779"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:45.732281" elapsed="0.073531">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.806837" elapsed="0.000058"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:45.807137" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:45.807054" elapsed="0.000177"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:45.807014" elapsed="0.000265"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.807621" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:45.807777" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:45.729913" elapsed="0.078101">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:45.808182" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:45.614800" elapsed="0.193821">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:45.809231" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:45.808836" elapsed="0.000556"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:45.808797" elapsed="0.000683"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:45.809570" elapsed="0.000038"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:45.605966" elapsed="0.203889">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:48.863653" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:48.863032" elapsed="0.000674"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:48.864801" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:48.864538" elapsed="0.000338">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:48.865073" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:48.864055" elapsed="0.001064"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:48.866086" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:48.865494" elapsed="0.000640"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:48.866755" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:48.867016" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:48.866498" elapsed="0.000564"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:48.867848" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:48.867391" elapsed="0.000552"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:48.869105" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:48.868848" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:48.869587" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:48.869303" elapsed="0.000310"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:48.870267" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:48.869973" elapsed="0.000319"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:48.871017" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:48.870801" elapsed="0.000241"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:48.871094" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:34:48.871253" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:48.870490" elapsed="0.000787"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:48.871517" elapsed="0.000273"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:48.869843" elapsed="0.001988"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:48.872370" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:48.872077" elapsed="0.000318"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:48.873202" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:48.872993" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:48.873277" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:48.873446" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:48.872678" elapsed="0.000794"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:48.873619" elapsed="0.000355"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:48.871944" elapsed="0.002071"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:48.869669" elapsed="0.004381"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:48.874092" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:34:48.874245" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:48.868526" elapsed="0.005750"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:48.868100" elapsed="0.006233"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:48.874618" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:48.874394" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:48.868053" elapsed="0.006698"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:48.876058" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:48.875050" elapsed="0.001055"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:48.876236" elapsed="0.000073"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:48.861467" elapsed="0.015018"/>
</kw>
<msg time="2026-04-05T00:34:48.876667" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:48.847344" elapsed="0.029377"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:48.889065" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:48.901270" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:48.913974" elapsed="0.000035"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:48.914222" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:48.914418" elapsed="0.000045"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:48.914905" elapsed="0.000095"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:48.914697" elapsed="0.000384"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:48.914682" elapsed="0.000475"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:48.915330" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:48.915659" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:48.916055" elapsed="0.000025"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:48.914651" elapsed="0.001624"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:48.914520" elapsed="0.001786"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:48.916472" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:48.916552" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:48.916675" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:48.843173" elapsed="0.073528"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:48.918369" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:48.917987" elapsed="0.000620">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:48.918790" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:48.917483" elapsed="0.001333"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:48.919129" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:48.918887" elapsed="0.000382"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:48.920016" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:48.919487" elapsed="0.000570"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:48.919296" elapsed="0.000873"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:48.918869" elapsed="0.001331"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:48.926568" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:48.920350" elapsed="0.006245"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:48.926646" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:48.926797" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:48.917135" elapsed="0.009685"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:48.928320" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:48.927953" elapsed="0.000566">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:48.928695" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:48.927471" elapsed="0.001249"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:48.928955" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:34:48.928791" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:48.928773" elapsed="0.000266"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:48.929179" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:48.929343" elapsed="0.000028"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:48.929416" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:34:48.931662" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:48.927140" elapsed="0.004548"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:48.933328" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:48.932855" elapsed="0.000519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:48.933985" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:48.933539" elapsed="0.000492"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:49.006199" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:49.006956" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:49.007349" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:48.936360" elapsed="0.071920">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:48.934098" elapsed="0.074649">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:49.009169" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:49.008827" elapsed="0.000887"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:48.934080" elapsed="0.075717">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:49.010766" elapsed="0.000041"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:49.010969" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:49.010914" elapsed="0.000118"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:49.010887" elapsed="0.000177"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:49.011270" elapsed="0.000032"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:49.011374" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:48.932043" elapsed="0.079514">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:49.011671" elapsed="0.000023"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:48.819357" elapsed="0.192456">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:49.012199" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:49.011945" elapsed="0.000360"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:49.011921" elapsed="0.000417"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:49.012385" elapsed="0.000020"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:48.810924" elapsed="0.201625">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:52.067879" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:52.067215" elapsed="0.000719"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:52.069052" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:52.068773" elapsed="0.000356">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:52.069326" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:52.068279" elapsed="0.001092"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:52.070344" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:52.069742" elapsed="0.000648"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:52.071003" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:52.071279" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:52.070749" elapsed="0.000575"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:52.072069" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:52.071705" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:52.073318" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:52.073061" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:52.073853" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:52.073585" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:52.074549" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:52.074236" elapsed="0.000339"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:52.075294" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:52.075075" elapsed="0.000245"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:52.075372" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:34:52.075551" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:52.074757" elapsed="0.000818"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:52.075736" elapsed="0.000243"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:52.074106" elapsed="0.001914"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:52.076658" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:52.076335" elapsed="0.000348"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:52.077378" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:52.077172" elapsed="0.000232"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:52.077579" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:34:52.077730" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:52.076865" elapsed="0.000889"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:52.077900" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:52.076131" elapsed="0.002028"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:52.073934" elapsed="0.004259"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:52.078235" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:34:52.078459" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:52.072738" elapsed="0.005747"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:52.072326" elapsed="0.006217"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.078809" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:52.078603" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:52.072279" elapsed="0.006661"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:52.080094" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:52.079234" elapsed="0.000908"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:52.080284" elapsed="0.000080"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:52.065643" elapsed="0.014903"/>
</kw>
<msg time="2026-04-05T00:34:52.080722" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:52.051630" elapsed="0.029146"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.093522" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.105789" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.118053" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.118240" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.118411" elapsed="0.000040"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.118889" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:52.118684" elapsed="0.000348"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:52.118669" elapsed="0.000438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.119280" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.119608" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.119980" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:52.118638" elapsed="0.001536"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:52.118508" elapsed="0.001695"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.120347" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:52.120472" elapsed="0.000019"/>
</return>
<msg time="2026-04-05T00:34:52.120596" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:52.047436" elapsed="0.073186"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:52.122181" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:52.121811" elapsed="0.000555">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:52.122569" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:52.121295" elapsed="0.001300"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.122907" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:52.122666" elapsed="0.000375"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:52.123748" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:52.123238" elapsed="0.000550"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:52.123069" elapsed="0.000852"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:52.122648" elapsed="0.001297"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:52.130323" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:52.124094" elapsed="0.006256"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:52.130402" elapsed="0.000125"/>
</return>
<msg time="2026-04-05T00:34:52.130657" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:52.120975" elapsed="0.009707"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:52.132474" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:52.131824" elapsed="0.000836">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:52.132842" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:52.131317" elapsed="0.001551"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:52.133074" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:34:52.132939" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:52.132921" elapsed="0.000235"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.133296" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.133482" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:52.133549" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:52.135587" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:52.131003" elapsed="0.004611"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:52.137278" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:52.136820" elapsed="0.000505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:52.137946" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:52.137489" elapsed="0.000502"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:52.209368" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:52.210191" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:52.210641" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:52.140511" elapsed="0.071068">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:52.138057" elapsed="0.073975">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.212513" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:52.212109" elapsed="0.000701"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:52.138039" elapsed="0.074811">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.213544" elapsed="0.000040"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:52.213768" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:52.213701" elapsed="0.000135"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:52.213671" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.214057" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:52.214153" elapsed="0.000020"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:52.136000" elapsed="0.078301">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:52.214406" elapsed="0.000070"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:52.023881" elapsed="0.190711">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:52.214959" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:52.214718" elapsed="0.000340"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:52.214695" elapsed="0.000396"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:52.215135" elapsed="0.000019"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:52.013740" elapsed="0.201529">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:55.271753" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:55.271095" elapsed="0.000714"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:55.272964" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:55.272675" elapsed="0.000379">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:55.273293" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:55.272162" elapsed="0.001285"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:55.274582" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:55.273865" elapsed="0.000767"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:55.275228" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:55.275507" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:55.274972" elapsed="0.000590"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:55.276276" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:55.275907" elapsed="0.000468"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:55.277634" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:55.277330" elapsed="0.000351"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:55.278111" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:55.277838" elapsed="0.000300"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:55.278931" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:55.278621" elapsed="0.000335"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:55.279714" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:55.279475" elapsed="0.000266"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:55.279793" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:34:55.279956" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:55.279142" elapsed="0.000838"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:55.280130" elapsed="0.000241"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:55.278374" elapsed="0.002038"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:55.281022" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:55.280717" elapsed="0.000331"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:55.281797" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:55.281581" elapsed="0.000242"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:55.281873" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:55.282023" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:55.281232" elapsed="0.000816"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:55.282199" elapsed="0.000364"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:55.280553" elapsed="0.002065"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:55.278195" elapsed="0.004458"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:55.282698" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:34:55.282858" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:55.277003" elapsed="0.005881"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:55.276563" elapsed="0.006378"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.283213" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:55.283002" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:55.276508" elapsed="0.006838"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:55.284719" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:55.283676" elapsed="0.001092"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:55.284902" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:55.269474" elapsed="0.015661"/>
</kw>
<msg time="2026-04-05T00:34:55.285355" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:55.254598" elapsed="0.030814"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.298474" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.313726" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.326514" elapsed="0.000035"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.326740" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.326919" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.327449" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:55.327210" elapsed="0.000401"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:55.327192" elapsed="0.000502"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.327881" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.328196" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.328577" elapsed="0.000024"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:55.327152" elapsed="0.001656"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:55.327003" elapsed="0.001840"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.328993" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:55.329074" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:34:55.329222" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:55.250024" elapsed="0.079226"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:55.331006" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:55.330577" elapsed="0.000629">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:55.331388" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:55.329991" elapsed="0.001423"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.331831" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:55.331558" elapsed="0.000413"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:55.332718" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:55.332178" elapsed="0.000582"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:55.332000" elapsed="0.000890"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:55.331533" elapsed="0.001382"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:55.339583" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:55.333065" elapsed="0.006545"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:55.339663" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:34:55.339821" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:55.329639" elapsed="0.010207"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:55.341384" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:55.341015" elapsed="0.000570">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:55.341764" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:55.340511" elapsed="0.001279"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:55.341995" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:34:55.341860" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:55.341841" elapsed="0.000237"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.342219" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.342384" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:55.342467" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:34:55.344689" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:55.340170" elapsed="0.004545"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:55.346566" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:55.346080" elapsed="0.000534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:55.347264" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:55.346793" elapsed="0.000517"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:55.418466" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:55.418968" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:55.419246" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:55.349953" elapsed="0.069945">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:55.347378" elapsed="0.072800">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.420501" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:55.420232" elapsed="0.000530"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:55.347360" elapsed="0.073503">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.421628" elapsed="0.000041"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:55.421940" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:55.421848" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:55.421805" elapsed="0.000293"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.422472" elapsed="0.000056"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:55.422672" elapsed="0.000045"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:55.345098" elapsed="0.077852">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:55.423138" elapsed="0.000038"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:55.223725" elapsed="0.199652">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:55.424147" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:55.423704" elapsed="0.000620"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:55.423660" elapsed="0.000722"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:55.424498" elapsed="0.000041"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:55.216330" elapsed="0.208434">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:58.478068" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:58.477434" elapsed="0.000686"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:58.479208" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:58.478944" elapsed="0.000338">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:58.479496" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:58.478498" elapsed="0.001043"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:58.480493" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:58.479880" elapsed="0.000661"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:34:58.481136" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:34:58.481399" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:34:58.480885" elapsed="0.000575"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:58.482178" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:58.481815" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:58.483516" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:58.483239" elapsed="0.000322"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:34:58.483984" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:34:58.483718" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:58.484689" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:58.484366" elapsed="0.000350"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:58.485445" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:58.485211" elapsed="0.000262"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:58.485525" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:34:58.485709" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:58.484898" elapsed="0.000837"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:58.485886" elapsed="0.000239"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:34:58.484233" elapsed="0.001933"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:34:58.486832" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:34:58.486408" elapsed="0.000450"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:34:58.487576" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:34:58.487350" elapsed="0.000252"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:34:58.487651" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:58.487799" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:34:58.487040" elapsed="0.000783"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:34:58.487969" elapsed="0.000221"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:34:58.486279" elapsed="0.001950"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:34:58.484061" elapsed="0.004203"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:34:58.488306" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:34:58.488482" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:34:58.482860" elapsed="0.005649"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:58.482463" elapsed="0.006105"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.488836" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:58.488630" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:58.482385" elapsed="0.006584"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:34:58.490290" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:34:58.489268" elapsed="0.001070"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:34:58.490590" elapsed="0.000075"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:34:58.475848" elapsed="0.014978"/>
</kw>
<msg time="2026-04-05T00:34:58.490996" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:34:58.461852" elapsed="0.029198"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.503515" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.515738" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.528022" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.528212" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.528381" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.528859" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:58.528650" elapsed="0.000350"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:58.528635" elapsed="0.000440"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.529247" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.529577" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.529954" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:34:58.528604" elapsed="0.001544"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:34:58.528472" elapsed="0.001705"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.530320" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:58.530395" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:34:58.530538" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:34:58.457501" elapsed="0.073064"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:58.532113" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:58.531743" elapsed="0.000553">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:58.532496" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:58.531232" elapsed="0.001289"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.532829" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:58.532592" elapsed="0.000374"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:34:58.533663" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:34:58.533161" elapsed="0.000543"/>
</kw>
<status status="PASS" start="2026-04-05T00:34:58.532994" elapsed="0.000846"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:58.532574" elapsed="0.001291"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:34:58.540077" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:34:58.534012" elapsed="0.006092"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:34:58.540155" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:34:58.540306" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:58.530916" elapsed="0.009415"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:34:58.541918" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:34:58.541517" elapsed="0.000586">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:34:58.542281" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:34:58.541017" elapsed="0.001289"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:34:58.542528" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:34:58.542378" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-05T00:34:58.542360" elapsed="0.000251"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.542750" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.542914" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:34:58.542978" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:34:58.545162" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:34:58.540703" elapsed="0.004486"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:58.546852" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:58.546387" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:34:58.547640" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:34:58.547045" elapsed="0.000641"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:34:58.619519" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:34:58.620241" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:34:58.620691" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:34:58.549916" elapsed="0.071714">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:34:58.547754" elapsed="0.074335">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.622562" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:58.622174" elapsed="0.000783"/>
</branch>
<status status="FAIL" start="2026-04-05T00:34:58.547736" elapsed="0.075281">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.624068" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:58.624368" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:34:58.624285" elapsed="0.000252"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:58.624247" elapsed="0.000340"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.624896" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:34:58.625051" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:34:58.545559" elapsed="0.079730">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:58.625578" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:34:58.433580" elapsed="0.192220">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:34:58.626496" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:34:58.626060" elapsed="0.000602"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:34:58.625969" elapsed="0.000749"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:34:58.626801" elapsed="0.000037"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:34:58.425941" elapsed="0.201011">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Get_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.680540" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:01.679877" elapsed="0.000717"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:35:01.681688" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:35:01.681392" elapsed="0.000371">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:35:01.681964" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:35:01.680945" elapsed="0.001064"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.682954" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:01.682345" elapsed="0.000656"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:01.683604" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:01.683869" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:01.683334" elapsed="0.000581"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.684669" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:01.684274" elapsed="0.000494"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.686007" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:01.685741" elapsed="0.000311"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.686484" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:35:01.686204" elapsed="0.000306"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.687159" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:35:01.686866" elapsed="0.000318"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:35:01.687911" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:35:01.687693" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:35:01.687988" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:35:01.688147" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:35:01.687365" elapsed="0.000893"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:35:01.688411" elapsed="0.000271"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:35:01.686735" elapsed="0.001988"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.689260" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:35:01.688965" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:35:01.690116" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:35:01.689909" elapsed="0.000232"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:35:01.690191" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:01.690337" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:35:01.689594" elapsed="0.000768"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:35:01.690527" elapsed="0.000227"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:35:01.688837" elapsed="0.001960"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:35:01.686563" elapsed="0.004269"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:35:01.690880" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:01.691036" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:35:01.685324" elapsed="0.005742"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:01.684924" elapsed="0.006199"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.691389" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:01.691183" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:01.684879" elapsed="0.006659"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.692838" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:01.691836" elapsed="0.001049"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:35:01.693018" elapsed="0.000074"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:35:01.678292" elapsed="0.014958"/>
</kw>
<msg time="2026-04-05T00:35:01.693450" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:01.664244" elapsed="0.029263"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.705913" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.718277" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.730607" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.730856" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.731030" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.731523" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:01.731297" elapsed="0.000371"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:35:01.731282" elapsed="0.000463"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.731918" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.732226" elapsed="0.000036"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.732616" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:35:01.731248" elapsed="0.001565"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:35:01.731110" elapsed="0.001733"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.732985" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:35:01.733061" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:35:01.733189" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:35:01.660043" elapsed="0.073172"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:35:01.734842" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:35:01.734446" elapsed="0.000585">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:35:01.735212" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:35:01.733924" elapsed="0.001313"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.735568" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:01.735307" elapsed="0.000399"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.736444" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:01.735902" elapsed="0.000586"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:01.735733" elapsed="0.000863"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:01.735289" elapsed="0.001330"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.742875" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:01.736765" elapsed="0.006137"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:35:01.742954" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:01.743109" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:35:01.733593" elapsed="0.009540"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:35:01.744729" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:35:01.744321" elapsed="0.000592">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-mount/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:35:01.745092" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:35:01.743796" elapsed="0.001321"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:35:01.745322" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:01.745188" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:01.745170" elapsed="0.000492"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.745814" elapsed="0.000026"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.745985" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:35:01.746051" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:35:01.748096" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/ready/../../../variables/netconf/device/scandium/full-uri-mount/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:35:01.743477" elapsed="0.004645"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.749900" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:01.749327" elapsed="0.000620"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.750565" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:01.750095" elapsed="0.000515"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:35:01.817853" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:35:01.818622" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount 
 status=400, reason=Bad Request 
 headers={'Content-Type': 'application/xml', 'Content-Length': '307'} 
 body=&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"&gt;&lt;error&gt;&lt;error-type&gt;application&lt;/error-type&gt;&lt;error-message&gt;Transaction(GET) failed&lt;/error-message&gt;&lt;error-tag&gt;invalid-value&lt;/error-tag&gt;&lt;error-info&gt;Invalid value "aead" for union type.&lt;/error-info&gt;&lt;/error&gt;&lt;/errors&gt; 
 </msg>
<msg time="2026-04-05T00:35:01.819077" level="FAIL">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-05T00:35:01.752855" elapsed="0.067158">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<status status="FAIL" start="2026-04-05T00:35:01.750677" elapsed="0.069836">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.820963" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:01.820598" elapsed="0.000753"/>
</branch>
<status status="FAIL" start="2026-04-05T00:35:01.750659" elapsed="0.070751">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.822530" elapsed="0.000063"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:35:01.822837" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:01.822754" elapsed="0.000179"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:35:01.822714" elapsed="0.000267"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.823288" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:35:01.823522" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-05T00:35:01.748522" elapsed="0.075249">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:35:01.823935" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-05T00:35:01.636443" elapsed="0.187704">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.824818" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:01.824346" elapsed="0.000680"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:35:01.824308" elapsed="0.000745"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-05T00:35:01.825086" elapsed="0.000015"/>
</return>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Get_Templated response text.
Optionally, verification against XML data (may be iterated) is called.</doc>
<status status="FAIL" start="2026-04-05T00:35:01.628003" elapsed="0.197182">HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<msg time="2026-04-05T00:35:01.825287" level="FAIL">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${timeout}</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}full-uri-mount</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-05T00:34:29.661103" elapsed="32.164276">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<arg>${mapping}</arg>
<doc>Checks weather the device was mounted.</doc>
<status status="FAIL" start="2026-04-05T00:34:29.641085" elapsed="32.184427">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.833895" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${mod_session}</var>
<arg>member_index=${idx}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.834241" elapsed="0.000024"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>5x</arg>
<arg>3s</arg>
<arg>TemplatedRequests.Get_As_Xml_Templated</arg>
<arg>${NETCONF_FOLDER}${/}${version}${/}netconf-state</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${mod_session}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.834441" elapsed="0.000022"/>
</kw>
<var name="${idx}"/>
<status status="NOT RUN" start="2026-04-05T00:35:01.834053" elapsed="0.000455"/>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="NOT RUN" start="2026-04-05T00:35:01.833985" elapsed="0.000552"/>
</for>
<kw name="Remove_Netconf_Device" type="TEARDOWN">
<kw name="Remove_Device_From_Netconf" owner="NetconfKeywords">
<kw name="Pop From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:01.835931" level="INFO">${device_type} = full-uri-device</msg>
<var>${device_type}</var>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<doc>Pops the given ``key`` from the ``dictionary`` and returns its value.</doc>
<status status="PASS" start="2026-04-05T00:35:01.835665" elapsed="0.000293"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.836592" level="INFO">${mapping} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:35:01.836118" elapsed="0.000501"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:01.855810" elapsed="0.000916"/>
</kw>
<msg time="2026-04-05T00:35:01.856954" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:01.855453" elapsed="0.001571"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:35:01.855031" elapsed="0.002069"/>
</kw>
<msg time="2026-04-05T00:35:01.857141" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:01.846531" elapsed="0.010666"/>
</kw>
<msg time="2026-04-05T00:35:01.857297" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:35:01.846168" elapsed="0.011154"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.900219" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:01.899573" elapsed="0.000758"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:35:01.901952" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:35:01.901440" elapsed="0.000620">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:35:01.902225" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:35:01.900666" elapsed="0.001666"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.903756" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:01.902694" elapsed="0.001178"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:01.904502" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:01.904753" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:01.904252" elapsed="0.000607"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.905661" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:01.905151" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.907778" level="INFO">mapping: {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:01.907519" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.908279" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:35:01.908018" elapsed="0.000287"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.909218" level="INFO">${value} = test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:35:01.908913" elapsed="0.000330"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:35:01.965478" level="INFO">${encoded} = test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:35:01.965208" elapsed="0.000304"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:35:01.965576" elapsed="0.000044"/>
</return>
<msg time="2026-04-05T00:35:01.965748" level="INFO">${encoded_value} = test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:35:01.964701" elapsed="0.001072"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:35:01.965924" elapsed="0.000242"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">test-device</var>
<status status="PASS" start="2026-04-05T00:35:01.908780" elapsed="0.057428"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.966820" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:35:01.966477" elapsed="0.000375"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:35:01.967620" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:35:01.967393" elapsed="0.000253"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:35:01.967695" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:01.967843" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:35:01.967053" elapsed="0.000815"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:35:01.968013" elapsed="0.000221"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:35:01.966327" elapsed="0.001947"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:35:01.908401" elapsed="0.059969"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:35:01.968472" elapsed="0.000073"/>
</return>
<msg time="2026-04-05T00:35:01.968875" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:35:01.906576" elapsed="0.062390"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:01.905896" elapsed="0.063146"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.969350" elapsed="0.000106"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:01.969128" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:01.905874" elapsed="0.063741"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:01.970754" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:01.969764" elapsed="0.001102"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:35:01.971103" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:35:01.898588" elapsed="0.072661"/>
</kw>
<msg time="2026-04-05T00:35:01.971366" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:01.885944" elapsed="0.085504"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.984007" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:01.996481" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.008752" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.008943" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.009116" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.009562" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.009391" elapsed="0.000228"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:35:02.009374" elapsed="0.000269"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.009780" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.009942" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.010101" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:35:02.009341" elapsed="0.000812"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.009197" elapsed="0.000982"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.010319" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.010393" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:35:02.010531" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:35:01.881701" elapsed="0.128856"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.011685" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:02.011408" elapsed="0.000323"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:35:02.025363" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0ycfwi4y1039qo6nw9t4oaut10.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:35:02.025466" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:35:02.025558" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:35:02.013840" elapsed="0.011743"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:02.011797" elapsed="0.013827"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.025796" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.025650" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.011779" elapsed="0.014158"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.034078" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:02.028606" elapsed="0.005517"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:02.028093" elapsed="0.006066"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.028052" elapsed="0.006132"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.036963" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:02.034472" elapsed="0.002539"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:02.034240" elapsed="0.002805"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.034223" elapsed="0.002847"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.037630" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:02.037234" elapsed="0.000423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.037957" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.037728" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.038616" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:02.038196" elapsed="0.000447"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:02.038040" elapsed="0.000639"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.037710" elapsed="0.000990"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.039220" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:02.038856" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.039567" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.039317" elapsed="0.000307"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.040202" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:02.039802" elapsed="0.000426"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:02.039648" elapsed="0.000617"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.039298" elapsed="0.000988"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:02.040445" elapsed="0.000499"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:35:02.041480" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:02.041106" elapsed="0.000401"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:35:02.041657" elapsed="0.005496"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:35:02.027084" elapsed="0.020131"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:35:02.047260" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:35:02.049565" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:35:02.010812" elapsed="0.038779"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:35:02.049644" elapsed="0.000027"/>
</return>
<arg>${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>${mapping}</arg>
<arg>session=${session}</arg>
<arg>location=${location}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:35:01.857575" elapsed="0.192191"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Tell Netconf to deconfigure the specified device</doc>
<status status="PASS" start="2026-04-05T00:35:01.835200" elapsed="0.214627"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>${session}</arg>
<doc>Removes configured device</doc>
<status status="PASS" start="2026-04-05T00:35:01.834735" elapsed="0.215146"/>
</kw>
<arg>${idx}</arg>
<doc>Netconf readines for a node is done by creating a netconf device connected to that node
and performing GET operation got from the device's mount point.</doc>
<status status="FAIL" start="2026-04-05T00:34:29.294326" elapsed="32.755640">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<var name="${idx}">1</var>
<status status="FAIL" start="2026-04-05T00:34:29.293937" elapsed="32.756124">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</iter>
<var>${idx}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="FAIL" start="2026-04-05T00:34:29.293593" elapsed="32.756527">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</for>
<doc>Verifies the netconf readiness for every odl node.</doc>
<status status="FAIL" start="2026-04-05T00:34:29.292978" elapsed="32.757233">Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<msg time="2026-04-05T00:35:02.050301" level="FAIL">Keyword 'Check_Netconf_Topology_Ready' failed after retrying 10 times. The last error was: Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>10x</arg>
<arg>1s</arg>
<arg>Check_Netconf_Topology_Ready</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-05T00:29:24.243810" elapsed="337.806600">Keyword 'Check_Netconf_Topology_Ready' failed after retrying 10 times. The last error was: Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.051893" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.051324" elapsed="0.000631"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.051306" elapsed="0.000674"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:02.052121" elapsed="0.000327"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.057549" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:02.057028" elapsed="0.000548"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-05T00:35:02.057791" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.057650" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.057632" elapsed="0.000221"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.058287" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:02.057992" elapsed="0.000321"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:35:02.058796" level="INFO">${reference} = netconf_userfeatures_txt_Ready_Netconfready_Check_Whether_Netconf_Topology_Is_Ready</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:35:02.058479" elapsed="0.000343"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-05T00:35:02.059150" level="INFO">${reference} = netconf_userfeatures_txt_ready_netconfready_check_whether_netconf_topology_is_ready</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-05T00:35:02.058975" elapsed="0.000200"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.059685" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"netconf_userfeatures_txt_ready_netconfready_check_whether_netconf_topology_is_ready"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:02.059323" elapsed="0.000389"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.060166" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=netconf_userfeatures_txt_ready_netconfready_check_whether_netconf_topology_is_ready&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:02.059862" elapsed="0.000331"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.060818" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"netconf_userfeatures_txt_ready_netconfready_check_whether_netconf_topology_is_ready"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=netconf_userfeatures_txt_ready_netconfready_check_whether_netconf_topology_is_ready&amp;order=bug_status"

Keyword 'Check_Netconf_Topology_Ready' failed after retrying 10 times. The last error was: Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-05T00:35:02.060345" elapsed="0.000528"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.061312" level="INFO">... click for list of related bugs or create a new one if needed (with the
"netconf_userfeatures_txt_ready_netconfready_check_whether_netconf_topology_is_ready"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=netconf_userfeatures_txt_ready_netconfready_check_whether_netconf_topology_is_ready&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:02.061023" elapsed="0.000370"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:02.056704" elapsed="0.004762"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:02.051119" elapsed="0.010396"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:02.050767" elapsed="0.010789"/>
</kw>
<doc>Checks netconf readiness.</doc>
<status status="FAIL" start="2026-04-05T00:29:24.112484" elapsed="337.949115">... click for list of related bugs or create a new one if needed (with the
"netconf_userfeatures_txt_ready_netconfready_check_whether_netconf_topology_is_ready"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=netconf_userfeatures_txt_ready_netconfready_check_whether_netconf_topology_is_ready&amp;order=bug_status"

Keyword 'Check_Netconf_Topology_Ready' failed after retrying 10 times. The last error was: Keyword 'TemplatedRequests.Get_As_Xml_Templated' failed after retrying for 30 seconds. The last error was: HTTPError: 400 Client Error: Bad Request for url: http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=test-device/yang-ext:mount</status>
</test>
<test id="s1-s1-s1-t2" name="Wait_For_Netconf_Connector" line="97">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:02.064939" elapsed="0.000214"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:02.064654" elapsed="0.000553"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.066183" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.066076" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.066057" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.071417" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.071311" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.071293" elapsed="0.000216"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.072498" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:02.072103" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.073003" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:02.072681" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:02.073073" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:02.073229" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:02.071730" elapsed="0.001524"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.078643" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.078536" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.078517" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.079909" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.079804" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.079785" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:02.080497" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:02.080117" elapsed="0.000407"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.081015" level="INFO">${current_connection_index} = 11</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:02.080681" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.172721" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:02.081628" elapsed="0.091264"/>
</kw>
<msg time="2026-04-05T00:35:02.173100" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:02.173147" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.081201" elapsed="0.091983"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.210761" level="INFO">"s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "F "o "r "_ "N "e "t "c "o "n "f "_ "C "o "n "n "e "c "t "o "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:02.173801" elapsed="0.037175"/>
</kw>
<msg time="2026-04-05T00:35:02.211144" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:02.211189" level="INFO">${message_wait} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "F "o "r "_ "N "e "t "c "o "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.173357" elapsed="0.037869"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.211555" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.211306" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.211285" elapsed="0.000373"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.212167" level="INFO"> "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "F "o "r "_ "N "e "t "c "o "n "f "_ "C "o "n "n "e "c "t "o "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:02.211796" elapsed="0.000439"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.212525" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.212301" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.212284" elapsed="0.000342"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:02.212659" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:02.215716" elapsed="0.000156"/>
</kw>
<msg time="2026-04-05T00:35:02.215944" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:02.215017" elapsed="0.001024"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.217142" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.218088" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:02.213557" elapsed="0.004647"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:02.212926" elapsed="0.005392"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:02.079504" elapsed="0.138913"/>
</kw>
<msg time="2026-04-05T00:35:02.218526" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:02.218569" level="INFO">${message} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "F "o "r "_ "N "e "t "c "o "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.078853" elapsed="0.139753"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:02.218789" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:02.218682" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.218664" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.219271" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.219631" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.219703" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:02.078180" elapsed="0.141630"/>
</kw>
<msg time="2026-04-05T00:35:02.219903" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:02.219946" level="INFO">${output} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "F "o "r "_ "N "e "t "c "o "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.073628" elapsed="0.146354"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.220301" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.220057" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.220039" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:02.073491" elapsed="0.146909"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:02.073306" elapsed="0.147239"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:02.070957" elapsed="0.149645"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:02.065793" elapsed="0.154901"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.065350" elapsed="0.155388"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:02.062553" elapsed="0.158237"/>
</kw>
<if>
<branch type="IF" condition="not ${netconf_is_ready}">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Netconf_Up_And_Running">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:35:02.256389" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:35:02.258472" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0zw7hubqg86h1xqnh3pjwld9j1.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 04-Apr-2026 00:35:02 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '990'} 
 body={"network-topology:topology":[{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}}]} 
 </msg>
<msg time="2026-04-05T00:35:02.258708" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>ses</arg>
<arg>url=${RESTCONF_ROOT}/data/network-topology:network-topology/topology=topology-netconf${netconf_connector}</arg>
<arg>params=${pretty_print}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:35:02.223803" elapsed="0.034962"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.263595" level="INFO">{"network-topology:topology":[{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:02.259132" elapsed="0.004538"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.268063" level="FAIL">'{"network-topology:topology":[{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}}]}' does not contain 'data model content does not exist'</msg>
<arg>${response.text}</arg>
<arg>data model content does not exist</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-05T00:35:02.264375" elapsed="0.003795">'{"network-topology:topology":[{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}}]}' does not contain 'data model content does not exist'</status>
</kw>
<msg time="2026-04-05T00:35:02.268310" level="INFO">${status} = False</msg>
<var>${status}</var>
<arg>BuiltIn.Should_Contain</arg>
<arg>${response.text}</arg>
<arg>data model content does not exist</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:35:02.263892" elapsed="0.004451"/>
</kw>
<if>
<branch type="IF" condition="${status}">
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${netconf_not_ready_cause}</arg>
<arg>5832</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.268740" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.268470" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.268420" elapsed="0.000434"/>
</if>
<if>
<branch type="IF" condition="${status}">
<kw name="Set_Known_Bug_Id" owner="SetupUtils">
<arg>5832</arg>
<doc>Tell the Teardown keywords that any failure from now on is due to the specified known bug.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.269275" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.268929" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.268907" elapsed="0.000557"/>
</if>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.272198" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:35:02.269658" elapsed="0.002597"/>
</kw>
<doc>Make a request to netconf connector's list of mounted devices and check that the request was successful.</doc>
<status status="PASS" start="2026-04-05T00:35:02.221679" elapsed="0.050636"/>
</kw>
<arg>${NETCONFREADY_WAIT}</arg>
<arg>1s</arg>
<arg>Check_Netconf_Up_And_Running</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:35:02.221097" elapsed="0.051261"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:02.220864" elapsed="0.051528"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.220846" elapsed="0.051571"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.272929" level="INFO">${netconf_is_ready} = True</msg>
<arg>${netconf_is_ready}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:02.272601" elapsed="0.000370"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.274211" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.273831" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.273814" elapsed="0.000490"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:02.274550" elapsed="0.000330"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.279882" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:02.279451" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:02.280126" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:35:02.279983" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.279965" elapsed="0.000244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.280352" elapsed="0.000028"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.280543" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.280711" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.280871" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.281032" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.281203" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.281365" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:02.279138" elapsed="0.002317"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:02.273622" elapsed="0.007884"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:02.273251" elapsed="0.008296"/>
</kw>
<doc>Wait for the Netconf to go up for configurable time.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:35:02.061972" elapsed="0.219616"/>
</test>
<test id="s1-s1-s1-t3" name="Wait_Even_Longer" line="105">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:02.284818" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:02.284562" elapsed="0.000520"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.286086" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.285978" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.285960" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.291249" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.291142" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.291123" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.292344" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:02.291960" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.292844" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:02.292543" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:02.292916" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:02.293071" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:02.291551" elapsed="0.001545"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.298524" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.298402" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.298383" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.299785" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.299680" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.299661" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:02.300352" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:02.299994" elapsed="0.000384"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.300794" level="INFO">${current_connection_index} = 11</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:02.300550" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.348258" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:02.301385" elapsed="0.047172"/>
</kw>
<msg time="2026-04-05T00:35:02.348811" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:02.348860" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.300976" elapsed="0.047922"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.373014" level="INFO">"s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "E "v "e "n "_ "L "o "n "g "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:02.349756" elapsed="0.023440"/>
</kw>
<msg time="2026-04-05T00:35:02.373384" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:02.373449" level="INFO">${message_wait} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "E "v "e "n "_ "L "o "n "g "e ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.349176" elapsed="0.024312"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.373855" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.373593" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.373562" elapsed="0.000402"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.374519" level="INFO"> "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "E "v "e "n "_ "L "o "n "g "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:02.374111" elapsed="0.000481"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.374889" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.374674" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.374654" elapsed="0.000335"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:02.375029" elapsed="0.000046"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:02.378513" elapsed="0.000426"/>
</kw>
<msg time="2026-04-05T00:35:02.379013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:02.377642" elapsed="0.001480"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.380230" elapsed="0.000042"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.381279" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:02.376052" elapsed="0.005364"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:02.375373" elapsed="0.006178"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:02.299352" elapsed="0.082301"/>
</kw>
<msg time="2026-04-05T00:35:02.381747" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:02.381792" level="INFO">${message} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "E "v "e "n "_ "L "o "n "g "e ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.298739" elapsed="0.083093"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:02.382024" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:02.381915" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.381895" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.382560" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.382908" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.382980" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:02.298069" elapsed="0.085022"/>
</kw>
<msg time="2026-04-05T00:35:02.383187" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:02.383232" level="INFO">${output} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "E "v "e "n "_ "L "o "n "g "e ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.293502" elapsed="0.089767"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.383613" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.383348" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.383330" elapsed="0.000361"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:02.293347" elapsed="0.090368"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:02.293148" elapsed="0.090601"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:02.290782" elapsed="0.093027"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:02.285694" elapsed="0.098180"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.285252" elapsed="0.098670"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:02.282448" elapsed="0.101532"/>
</kw>
<kw name="Pass Execution If" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.384470" level="INFO">Execution passed with message:
Netconf was detected to be up and running so bug 5014 did not show up.</msg>
<arg>${netconf_is_ready}</arg>
<arg>Netconf was detected to be up and running so bug 5014 did not show up.</arg>
<doc>Conditionally skips rest of the current test, setup, or teardown with PASS status.</doc>
<status status="PASS" start="2026-04-05T00:35:02.384155" elapsed="0.000375">Netconf was detected to be up and running so bug 5014 did not show up.</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>${NETCONFREADY_FALLBACK_WAIT}</arg>
<arg>10s</arg>
<arg>Check_Netconf_Up_And_Running</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.384699" elapsed="0.000022"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${netconf_is_ready}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.384884" elapsed="0.000020"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.386185" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.385800" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.385780" elapsed="0.000492"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:02.386412" elapsed="0.000444"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.392099" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:02.391671" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:02.392389" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:02.392243" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.392224" elapsed="0.000264"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.392634" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.392802" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.392970" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.393134" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.393295" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.393500" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.393663" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:02.391352" elapsed="0.002388"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:02.385582" elapsed="0.008208"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:02.385176" elapsed="0.008655"/>
</kw>
<doc>Bugs such as 7175 may require to wait longer till netconf-connector works.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:35:02.281880" elapsed="0.111993">Netconf was detected to be up and running so bug 5014 did not show up.</status>
</test>
<test id="s1-s1-s1-t4" name="Check_For_Bug_5014" line="114">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:02.398614" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:02.398335" elapsed="0.000544"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.399864" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.399757" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.399738" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.404898" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.404792" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.404774" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.406017" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:02.405612" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.406538" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:02.406204" elapsed="0.000361"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:02.406611" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:02.406768" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:02.405187" elapsed="0.001605"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.412332" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.412224" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.412205" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.413650" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.413544" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.413526" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:02.414223" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:02.413861" elapsed="0.000389"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.414710" level="INFO">${current_connection_index} = 11</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:02.414406" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.459596" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:02.415276" elapsed="0.044495"/>
</kw>
<msg time="2026-04-05T00:35:02.459948" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:02.459993" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.414894" elapsed="0.045136"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.483451" level="INFO">"s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "F "o "r "_ "B "u "g "_ "5 "0 "1 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:02.460622" elapsed="0.023005"/>
</kw>
<msg time="2026-04-05T00:35:02.483799" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:02.483845" level="INFO">${message_wait} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "F "o "r "_ "B "u "g "_ "5 ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.460201" elapsed="0.023681"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.484183" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.483962" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.483941" elapsed="0.000343"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.484834" level="INFO"> "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "F "o "r "_ "B "u "g "_ "5 "0 "1 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:02.484449" elapsed="0.000452"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.485180" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.484968" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.484950" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:02.485313" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:02.488403" elapsed="0.000168"/>
</kw>
<msg time="2026-04-05T00:35:02.488644" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:02.487735" elapsed="0.001007"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.489704" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.490656" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:02.486190" elapsed="0.004584"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:02.485610" elapsed="0.005276"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:02.413190" elapsed="0.077794"/>
</kw>
<msg time="2026-04-05T00:35:02.491074" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:02.491117" level="INFO">${message} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "F "o "r "_ "B "u "g "_ "5 ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.412564" elapsed="0.078591"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:02.491345" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:02.491237" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.491218" elapsed="0.000226"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.491838" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.492168" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.492239" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:02.411884" elapsed="0.080462"/>
</kw>
<msg time="2026-04-05T00:35:02.492492" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:02.492536" level="INFO">${output} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "F "o "r "_ "B "u "g "_ "5 ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.407171" elapsed="0.085403"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.492896" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.492650" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.492632" elapsed="0.000341"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:02.407028" elapsed="0.085969"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:02.406850" elapsed="0.086176"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:02.404430" elapsed="0.088650"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:02.399464" elapsed="0.093671"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.399023" elapsed="0.094156"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:02.395944" elapsed="0.097286"/>
</kw>
<kw name="Pass Execution If" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.493744" level="INFO">Execution passed with message:
Netconf was detected to be up and running so bug 5014 did not show up.</msg>
<arg>${netconf_is_ready}</arg>
<arg>Netconf was detected to be up and running so bug 5014 did not show up.</arg>
<doc>Conditionally skips rest of the current test, setup, or teardown with PASS status.</doc>
<status status="PASS" start="2026-04-05T00:35:02.493396" elapsed="0.000399">Netconf was detected to be up and running so bug 5014 did not show up.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${error}</var>
<arg>Check_Netconf_Usable</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.493960" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${netconf_is_ready}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.494199" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.494050" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:35:02.494033" elapsed="0.000244"/>
</if>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>'${status}'</arg>
<arg>'FAIL'</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.494414" elapsed="0.000037"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.495684" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.495292" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.495275" elapsed="0.000495"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:02.495910" elapsed="0.000310"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.501791" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:02.501117" elapsed="0.000702"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:02.502038" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:02.501895" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.501877" elapsed="0.000249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.502270" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.502453" elapsed="0.000022"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.502623" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.502783" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.502942" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.503101" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.503298" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:02.500810" elapsed="0.002565"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:02.495087" elapsed="0.008352"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:02.494728" elapsed="0.008754"/>
</kw>
<doc>If Netconf appears to be down, it may be due to bug 5014. Check if it is so and fail if yes.
Bug 5014 is about Netconf playing dead on boot until a device
configuration request is sent to it. To uncover this attempt to
configure and then deconfigure a device and then check if Netconf
is now up and running. If that turns out to be true, fail the case
as this signifies the bug 5014 to be present. Skip this testcase
if Netconf is detected to be up and running.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:35:02.394388" elapsed="0.109134">Netconf was detected to be up and running so bug 5014 did not show up.</status>
</test>
<test id="s1-s1-s1-t5" name="Check_Whether_Netconf_Can_Pretty_Print" line="132">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:02.506830" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:02.506570" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.508075" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.507966" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.507947" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.513063" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.512957" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.512939" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.514158" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:02.513772" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.514658" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:02.514341" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:02.514729" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:02.514889" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:02.513350" elapsed="0.001563"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.520542" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.520431" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.520398" elapsed="0.000222"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.521849" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.521743" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.521725" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:02.522407" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:02.522055" elapsed="0.000397"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.522863" level="INFO">${current_connection_index} = 11</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:02.522607" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.560898" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:02.523450" elapsed="0.037633"/>
</kw>
<msg time="2026-04-05T00:35:02.561267" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:02.561312" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.523044" elapsed="0.038305"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.592133" level="INFO">"s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "W "h "e "t "h "e "r "_ "N "e "t "c "o "n "f "_ "C "a "n "_ "P "r "e "t "t "y "_ "P "r "i "n "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:02.562045" elapsed="0.030279"/>
</kw>
<msg time="2026-04-05T00:35:02.592582" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:02.592629" level="INFO">${message_wait} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "W "h "e "t "h "e "r "_ "N ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.561604" elapsed="0.031063"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.592994" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.592756" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.592731" elapsed="0.000367"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.593709" level="INFO"> "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "W "h "e "t "h "e "r "_ "N "e "t "c "o "n "f "_ "C "a "n "_ "P "r "e "t "t "y "_ "P "r "i "n "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:02.593240" elapsed="0.000545"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.594069" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.593854" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.593836" elapsed="0.000333"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:02.594203" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:02.597319" elapsed="0.000180"/>
</kw>
<msg time="2026-04-05T00:35:02.597571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:02.596620" elapsed="0.001081"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.598635" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.599580" elapsed="0.000034"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:02.595095" elapsed="0.004599"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:02.594501" elapsed="0.005307"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:02.521386" elapsed="0.078520"/>
</kw>
<msg time="2026-04-05T00:35:02.600000" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:02.600043" level="INFO">${message} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "W "h "e "t "h "e "r "_ "N ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.520769" elapsed="0.079312"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:02.600266" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:02.600158" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.600139" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.600785" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.601128" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.601199" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:02.520077" elapsed="0.081232"/>
</kw>
<msg time="2026-04-05T00:35:02.601402" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:02.601478" level="INFO">${output} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "C "h "e "c "k "_ "W "h "e "t "h "e "r "_ "N ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.515293" elapsed="0.086223"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.601854" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.601593" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.601575" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:02.515140" elapsed="0.086813"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:02.514965" elapsed="0.087019"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:02.512598" elapsed="0.089442"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:02.507681" elapsed="0.094453"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.507238" elapsed="0.094942"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:02.504301" elapsed="0.097931"/>
</kw>
<if>
<branch type="IF" condition="not ${netconf_is_ready}">
<kw name="Fail" owner="BuiltIn">
<arg>Netconf is not ready so it can't pretty-print now.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.602579" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.602312" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.602294" elapsed="0.000370"/>
</if>
<kw name="Run_Keyword_If_At_Least_Phosphorus" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Check_Netconf_Up_And_Running">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:35:02.636286" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf?odl-pretty-print=true 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf?odl-pretty-print=true 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0zw7hubqg86h1xqnh3pjwld9j1.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:35:02.637670" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf?odl-pretty-print=true 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1883'} 
 body={
  "network-topology:topology": [
    {
      "topology-id": "topology-netconf",
      "topology-types": {
        "netconf-node-topology:topology-netconf": {
          "ssh-transport-topology-parameters": {
            "mac": {
              "mac-alg": [
                "hmac-sha2-256",
                "hmac-sha2-512",
                "hmac-sha1"
              ]
            },
            "host-key": {
              "host-key-alg": [
                "ecdsa-sha2-nistp256",
                "ecdsa-sha2-nistp384",
                "ecdsa-sha2-nistp521",
                "ssh-ed25519",
                "rsa-sha2-512",
                "rsa-sha2-256",
                "ssh-rsa"
              ]
            },
            "key-exchange": {
              "key-exchange-alg": [
                "sntrup761x25519-sha512",
                "mlkem768x25519-sha256",
                "mlkem1024nistp384-sha384",
                "mlkem768nistp256-sha256",
                "curve25519-sha256",
                "curve448-sha512",
                "ecdh-sha2-nistp521",
                "ecdh-sha2-nistp384",
                "ecdh-sha2-nistp256",
                "diffie-hellman-group-exchange-sha256",
                "diffie-hellman-group18-sha512",
                "diffie-hellman-group17-sha512",
                "diffie-hellman-group16-sha512",
                "diffie-hellman-group15-sha512",
                "diffie-hellman-group14-sha256"
              ]
            },
            "encryption": {
              "encryption-alg": [
                "chacha20-poly1305",
                "aes128-ctr",
                "aes192-ctr",
                "aes256-ctr",
                "AEAD_AES_128_GCM",
                "AEAD_AES_256_GCM",
                "aes128-cbc",
                "aes192-cbc",
                "aes256-cbc"
              ]
            }
          }
        }
      }
    }
  ]
} 
 </msg>
<msg time="2026-04-05T00:35:02.637918" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>ses</arg>
<arg>url=${RESTCONF_ROOT}/data/network-topology:network-topology/topology=topology-netconf${netconf_connector}</arg>
<arg>params=${pretty_print}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:35:02.625225" elapsed="0.012736"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.643798" level="INFO">{
  "network-topology:topology": [
    {
      "topology-id": "topology-netconf",
      "topology-types": {
        "netconf-node-topology:topology-netconf": {
          "ssh-transport-topology-parameters": {
            "mac": {
              "mac-alg": [
                "hmac-sha2-256",
                "hmac-sha2-512",
                "hmac-sha1"
              ]
            },
            "host-key": {
              "host-key-alg": [
                "ecdsa-sha2-nistp256",
                "ecdsa-sha2-nistp384",
                "ecdsa-sha2-nistp521",
                "ssh-ed25519",
                "rsa-sha2-512",
                "rsa-sha2-256",
                "ssh-rsa"
              ]
            },
            "key-exchange": {
              "key-exchange-alg": [
                "sntrup761x25519-sha512",
                "mlkem768x25519-sha256",
                "mlkem1024nistp384-sha384",
                "mlkem768nistp256-sha256",
                "curve25519-sha256",
                "curve448-sha512",
                "ecdh-sha2-nistp521",
                "ecdh-sha2-nistp384",
                "ecdh-sha2-nistp256",
                "diffie-hellman-group-exchange-sha256",
                "diffie-hellman-group18-sha512",
                "diffie-hellman-group17-sha512",
                "diffie-hellman-group16-sha512",
                "diffie-hellman-group15-sha512",
                "diffie-hellman-group14-sha256"
              ]
            },
            "encryption": {
              "encryption-alg": [
                "chacha20-poly1305",
                "aes128-ctr",
                "aes192-ctr",
                "aes256-ctr",
                "AEAD_AES_128_GCM",
                "AEAD_AES_256_GCM",
                "aes128-cbc",
                "aes192-cbc",
                "aes256-cbc"
              ]
            }
          }
        }
      }
    }
  ]
}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:02.638210" elapsed="0.005736"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.648753" level="FAIL">'{
  "network-topology:topology": [
    {
      "topology-id": "topology-netconf",
      "topology-types": {
        "netconf-node-topology:topology-netconf": {
          "ssh-transport-topology-parameters": {
            "mac": {
              "mac-alg": [
                "hmac-sha2-256",
                "hmac-sha2-512",
                "hmac-sha1"
              ]
            },
            "host-key": {
              "host-key-alg": [
                "ecdsa-sha2-nistp256",
                "ecdsa-sha2-nistp384",
                "ecdsa-sha2-nistp521",
                "ssh-ed25519",
                "rsa-sha2-512",
                "rsa-sha2-256",
                "ssh-rsa"
              ]
            },
            "key-exchange": {
              "key-exchange-alg": [
                "sntrup761x25519-sha512",
                "mlkem768x25519-sha256",
                "mlkem1024nistp384-sha384",
                "mlkem768nistp256-sha256",
                "curve25519-sha256",
                "curve448-sha512",
                "ecdh-sha2-nistp521",
                "ecdh-sha2-nistp384",
                "ecdh-sha2-nistp256",
                "diffie-hellman-group-exchange-sha256",
                "diffie-hellman-group18-sha512",
                "diffie-hellman-group17-sha512",
                "diffie-hellman-group16-sha512",
                "diffie-hellman-group15-sha512",
                "diffie-hellman-group14-sha256"
              ]
            },
            "encryption": {
              "encryption-alg": [
                "chacha20-poly1305",
                "aes128-ctr",
                "aes192-ctr",
                "aes256-ctr",
                "AEAD_AES_128_GCM",
                "AEAD_AES_256_GCM",
                "aes128-cbc",
                "aes192-cbc",
                "aes256-cbc"
              ]
            }
          }
        }
      }
    }
  ]
}' does not contain 'data model content does not exist'</msg>
<arg>${response.text}</arg>
<arg>data model content does not exist</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-05T00:35:02.645150" elapsed="0.003748">'{
  "network-topology:topology": [
    {
      "topology-id": "topology-netconf",
      "topology-types": {
        "netconf-node-topology:topology-netconf": {
          "ssh-transport-topology-parameters": {
            "mac": {
              "mac-alg": [
                "hmac-sha2-256",
                "hmac-sha2-512",
                "hmac-sha1"
              ]
            },
            "host-key": {
              "host-key-alg": [
                "ecdsa-sha2-nistp256",
                "ecdsa-sha2-nistp384",
                "ecdsa-sha2-nistp521",
                "ssh-ed25519",
    [ Message content over the limit has been removed. ]
            },
            "encryption": {
              "encryption-alg": [
                "chacha20-poly1305",
                "aes128-ctr",
                "aes192-ctr",
                "aes256-ctr",
                "AEAD_AES_128_GCM",
                "AEAD_AES_256_GCM",
                "aes128-cbc",
                "aes192-cbc",
                "aes256-cbc"
              ]
            }
          }
        }
      }
    }
  ]
}' does not contain 'data model content does not exist'</status>
</kw>
<msg time="2026-04-05T00:35:02.649004" level="INFO">${status} = False</msg>
<var>${status}</var>
<arg>BuiltIn.Should_Contain</arg>
<arg>${response.text}</arg>
<arg>data model content does not exist</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:35:02.644343" elapsed="0.004685"/>
</kw>
<if>
<branch type="IF" condition="${status}">
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${netconf_not_ready_cause}</arg>
<arg>5832</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.649294" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.649104" elapsed="0.000247"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.649084" elapsed="0.000291"/>
</if>
<if>
<branch type="IF" condition="${status}">
<kw name="Set_Known_Bug_Id" owner="SetupUtils">
<arg>5832</arg>
<doc>Tell the Teardown keywords that any failure from now on is due to the specified known bug.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.649672" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.649445" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.649414" elapsed="0.000351"/>
</if>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.652218" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:35:02.649900" elapsed="0.002377"/>
</kw>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Make a request to netconf connector's list of mounted devices and check that the request was successful.</doc>
<status status="PASS" start="2026-04-05T00:35:02.624840" elapsed="0.027497"/>
</kw>
<msg time="2026-04-05T00:35:02.652376" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:02.624129" elapsed="0.028310"/>
</kw>
<arg>phosphorus</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${lower_bound} to titanium and in case titanium is at least ${lower_bound},
run Check_Netconf_Up_And_Running [] {'pretty_print': 'odl-pretty-print=true'} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:35:02.623635" elapsed="0.028883"/>
</kw>
<msg time="2026-04-05T00:35:02.652562" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_At_Least</arg>
<arg>phosphorus</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:02.614981" elapsed="0.037623"/>
</kw>
<arg>Check_Netconf_Up_And_Running</arg>
<arg>pretty_print=odl-pretty-print=true</arg>
<doc>Compare phosphorus to titanium and in case titanium is at least phosphorus,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:35:02.614592" elapsed="0.038084"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.653938" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.653531" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.653513" elapsed="0.000513"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:02.654204" elapsed="0.000341"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.659530" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:02.659100" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:02.659776" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:02.659633" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.659615" elapsed="0.000243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.660001" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.660168" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.660334" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.660512" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.660675" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.660900" elapsed="0.000023"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.661068" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:02.658798" elapsed="0.002347"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:02.653305" elapsed="0.007890"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:02.652948" elapsed="0.008288"/>
</kw>
<doc>Make one request to netconf-connector and see if it works.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:35:02.503751" elapsed="0.157526"/>
</test>
<test id="s1-s1-s1-t6" name="Wait_For_MDSAL" line="141">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:02.664855" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:02.664596" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.666117" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.666007" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.665988" elapsed="0.000199"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.671077" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.670971" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.670953" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.672131" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:02.671754" elapsed="0.000403"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.672623" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:02.672311" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:02.672692" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:02.672843" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:02.671367" elapsed="0.001500"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.678325" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.678217" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.678198" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.679647" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.679540" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.679521" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:02.680214" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:02.679856" elapsed="0.000384"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.680659" level="INFO">${current_connection_index} = 11</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:02.680393" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.732811" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:02.681224" elapsed="0.051769"/>
</kw>
<msg time="2026-04-05T00:35:02.733166" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:02.733213" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.680841" elapsed="0.052411"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.765099" level="INFO">"s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "F "o "r "_ "M "D "S "A "L "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:02.733838" elapsed="0.031439"/>
</kw>
<msg time="2026-04-05T00:35:02.765493" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:02.765599" level="INFO">${message_wait} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "F "o "r "_ "M "D "S "A "L "[...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.733438" elapsed="0.032203"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.765991" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.765725" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.765702" elapsed="0.000399"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:02.766676" level="INFO"> "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "F "o "r "_ "M "D "S "A "L "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:02.766244" elapsed="0.000498"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.767031" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.766812" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.766792" elapsed="0.000340"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:02.767167" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:02.770324" elapsed="0.000182"/>
</kw>
<msg time="2026-04-05T00:35:02.770584" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:02.769546" elapsed="0.001140"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.771647" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.772616" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:02.768066" elapsed="0.004668"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:02.767444" elapsed="0.005404"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:02.679195" elapsed="0.093756"/>
</kw>
<msg time="2026-04-05T00:35:02.773043" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:02.773087" level="INFO">${message} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "F "o "r "_ "M "D "S "A "L "[...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.678559" elapsed="0.094565"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:02.773309" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:02.773201" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.773182" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.773816" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.774181" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.774254" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:02.677879" elapsed="0.096485"/>
</kw>
<msg time="2026-04-05T00:35:02.774479" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:02.774528" level="INFO">${output} =  "s ". "t "x "t ". "R "e "a "d "y ". "N "e "t "c "o "n "f "r "e "a "d "y ". "W "a "i "t "_ "F "o "r "_ "M "D "S "A "L "[...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.673236" elapsed="0.101329"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:02.774912" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:02.774642" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.774623" elapsed="0.000368"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:02.673097" elapsed="0.101918"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:02.672921" elapsed="0.102129"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:02.670613" elapsed="0.104491"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:02.665705" elapsed="0.109455"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.665267" elapsed="0.109980"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:02.662169" elapsed="0.113133"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Verify_Feature_Is_Installed" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.780657" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.780547" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.780529" elapsed="0.000197"/>
</if>
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:02.784762" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:02.784654" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:02.784635" elapsed="0.000195"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_port}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:02.784974" elapsed="0.000459"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-05T00:35:02.785905" level="INFO">Logging into '10.30.170.184:8101' as 'karaf'.</msg>
<msg time="2026-04-05T00:35:03.067693" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-05T00:35:02.785602" elapsed="0.282200"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:03.122312" level="INFO">@root&gt;feature:list -i | 0[C 0g[Krep odl-netconf-mdsal</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:03.068002" elapsed="0.054375"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:03.166416" level="INFO">[?1l&gt;[?2004l[31;1modl-netconf-mdsal[0m-common                                        x 9.0.2            x          x Started x odl-netconf-9.0.2                                               x [31;1modl-netconf-mdsal[0m-common
[31;1modl-netconf-mdsal[0m                                               x 9.0.2            x x        x Started x [31;1modl-netconf-mdsal[0m                                               x OpenDaylight :: Netconf :: Mdsal
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-05T00:35:03.166545" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-netconf-mdsal[0m-common                                        x 9.0.2            x          x Started x odl-netconf-9.0.2                                           ...</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:03.122589" elapsed="0.044001"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:03.166750" elapsed="0.000194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:03.167108" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:03.167869" level="INFO">[?1l&gt;[?2004l[31;1modl-netconf-mdsal[0m-common                                        x 9.0.2            x          x Started x odl-netconf-9.0.2                                               x [31;1modl-netconf-mdsal[0m-common
[31;1modl-netconf-mdsal[0m                                               x 9.0.2            x x        x Started x [31;1modl-netconf-mdsal[0m                                               x OpenDaylight :: Netconf :: Mdsal
[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:03.167583" elapsed="0.000348"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:35:03.167978" elapsed="0.000039"/>
</return>
<msg time="2026-04-05T00:35:03.168157" level="INFO">${output} = [?1l&gt;[?2004l[31;1modl-netconf-mdsal[0m-common                                        x 9.0.2            x          x Started x odl-netconf-9.0.2                                           ...</msg>
<var>${output}</var>
<arg>feature:list -i | grep ${feature_name}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.170.184
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-05T00:35:02.784241" elapsed="0.383949"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${output}</arg>
<arg>${feature_name}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:03.168355" elapsed="0.000378"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:35:03.168783" elapsed="0.000030"/>
</return>
<arg>odl-netconf-mdsal</arg>
<doc>Will Succeed if the given ${feature_name} is found in the output of "feature:list -i"</doc>
<status status="PASS" start="2026-04-05T00:35:02.780223" elapsed="0.388692"/>
</kw>
<msg time="2026-04-05T00:35:03.169015" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:03.169063" level="INFO">${message} = [?1l&gt;[?2004l[31;1modl-netconf-mdsal[0m-common                                        x 9.0.2            x          x Started x odl-netconf-9.0.2                                           ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>KarafKeywords.Verify_Feature_Is_Installed</arg>
<arg>odl-netconf-mdsal</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:02.775655" elapsed="0.393438"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'FAIL'">
<kw name="Pass Execution" owner="BuiltIn">
<arg>The 'odl-netconf-mdsal' feature is not installed so no need to wait for it.</arg>
<doc>Skips rest of the current test, setup, or teardown with PASS status.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:03.169510" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:03.169258" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:03.169234" elapsed="0.000359"/>
</if>
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:03.174723" level="INFO">${odl_connection} = 13</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:03.174295" elapsed="0.000455"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:35:03.176916" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:35:03.176995" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:35:03.176647" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:03.177179" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:35:03.178375" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:35:03.777063" 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 Apr  5 00:35:03 UTC 2026

  System load:  0.21               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  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.


Last login: Sun Apr  5 00:29:23 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:35:03.178059" elapsed="0.599101"/>
</kw>
<msg time="2026-04-05T00:35:03.777228" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:03.177699" elapsed="0.599594"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:35:03.176142" elapsed="0.601241"/>
</kw>
<msg time="2026-04-05T00:35:03.777448" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:03.175731" elapsed="0.601765"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:35:03.174938" elapsed="0.602633"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-05T00:35:03.777614" elapsed="0.000036"/>
</return>
<doc>Open a connection to the ODL system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:35:03.173939" elapsed="0.603821"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Netconf_MDSAL_Up_And_Running">
<kw name="Count_Port_Occurences" owner="SSHKeywords">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Check_And_Install_Netstat" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:03.780062" level="INFO">Executing command 'netstat --version'.</msg>
<msg time="2026-04-05T00:35:03.793121" level="INFO">Command exited with return code 127.</msg>
<msg time="2026-04-05T00:35:03.793344" level="INFO">${netstat_installed} = </msg>
<var>${netstat_installed}</var>
<arg>netstat --version</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:03.779959" elapsed="0.013441"/>
</kw>
<if>
<branch type="IF" condition="'${netstat_installed}' is not string and '${netstat_installed}' != '0'">
<kw name="Install_Netstat" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:03.795387" level="INFO">Executing command 'sudo apt-get update'.</msg>
<msg time="2026-04-05T00:35:14.448854" level="INFO">Command exited with return code 0.</msg>
<arg>sudo apt-get update</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:03.795170" elapsed="10.653977"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:14.450019" level="INFO">Executing command 'sudo apt-get install -y net-tools'.</msg>
<msg time="2026-04-05T00:35:19.632515" level="INFO">Command exited with return code 0.</msg>
<arg>sudo apt-get install -y net-tools</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:14.449709" elapsed="5.183050"/>
</kw>
<doc>Install netstat if it is not already installed.</doc>
<status status="PASS" start="2026-04-05T00:35:03.794555" elapsed="15.838382"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:03.793613" elapsed="15.839390"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:03.793562" elapsed="15.839511"/>
</if>
<doc>Check if netstat is installed and install it if not.</doc>
<status status="PASS" start="2026-04-05T00:35:03.779679" elapsed="15.853510"/>
</kw>
<arg>Check_And_Install_Netstat</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:03.779218" elapsed="15.854078"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:19.634324" level="INFO">Executing command 'netstat -punta 2&gt; /dev/null | grep -E ":2830 .+ LISTEN .+java" | wc -l'.</msg>
<msg time="2026-04-05T00:35:19.690960" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:35:19.691293" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>${NETSTAT_COMMAND} 2&gt; /dev/null | grep -E ":${port} .+ ${state} .+${name}" | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:19.633771" elapsed="0.057580"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:35:19.691719" elapsed="0.000098"/>
</return>
<msg time="2026-04-05T00:35:19.692140" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>${ODL_NETCONF_MDSAL_PORT}</arg>
<arg>LISTEN</arg>
<arg>java</arg>
<doc>Run 'netstat' on the remote machine and count occurences of given port in the given state connected to process with the given name.</doc>
<status status="PASS" start="2026-04-05T00:35:03.778850" elapsed="15.913347"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-05T00:35:19.692667" elapsed="0.000819"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:03.778499" elapsed="15.915127"/>
</kw>
<arg>${NETCONFREADY_WAIT_MDSAL}</arg>
<arg>1s</arg>
<arg>Check_Netconf_MDSAL_Up_And_Running</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:35:03.777945" elapsed="15.915771"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:19.694060" elapsed="0.000574"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.697623" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:19.696688" elapsed="0.001077"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:19.696640" elapsed="0.001183"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:19.698147" elapsed="0.000816"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:19.708171" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:19.707421" elapsed="0.000800"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:19.708606" elapsed="0.000210"/>
</return>
<status status="PASS" start="2026-04-05T00:35:19.708357" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:19.708325" elapsed="0.000582"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.709131" elapsed="0.000033"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.709338" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.709535" elapsed="0.000023"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.709703" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.709869" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.710034" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.710199" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:19.706782" elapsed="0.003502"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:19.696151" elapsed="0.014190"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:19.695250" elapsed="0.015138"/>
</kw>
<doc>Wait for the MDSAL feature to become online</doc>
<status status="PASS" start="2026-04-05T00:35:02.661623" elapsed="17.048832"/>
</test>
<kw name="Teardown_Everything" type="TEARDOWN">
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:19.718351" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:19.718206" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:19.718178" elapsed="0.000283"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:19.719591" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:19.719127" elapsed="0.000493"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:19.720086" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:19.719780" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:19.720159" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:35:19.720328" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:19.718760" elapsed="0.001594"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:19.726062" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:19.725936" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:19.725914" elapsed="0.000226"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:19.727258" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:19.727151" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:19.727133" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:19.727830" level="INFO">${karaf_connection_index} = 7</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:19.727496" elapsed="0.000363"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:19.728215" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:19.728039" elapsed="0.000203"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:19.781119" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "E "n "d "i "n "g "[C "N "e "t "c "o "n "f "[C "r "e "a "d "i "n "e "s "s "[C "t "e "s "t "[C "s "[78Cu "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:19.728752" elapsed="0.052596"/>
</kw>
<msg time="2026-04-05T00:35:19.781553" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:19.781601" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "E "n "d "i "n "g "[C "N "e "t "c "o "n "f "[C "r "e "a "d "i "n "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:19.728397" elapsed="0.053242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:19.791983" level="INFO">"t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:19.782326" elapsed="0.009797"/>
</kw>
<msg time="2026-04-05T00:35:19.792297" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:19.792345" level="INFO">${message_wait} =  "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:19.781891" elapsed="0.010485"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.792845" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:19.792516" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:19.792479" elapsed="0.000451"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:19.793457" level="INFO"> "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:19.793075" elapsed="0.000438"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.793797" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:19.793582" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:19.793562" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:19.793914" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:19.795148" elapsed="0.000433"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:19.795745" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:19.796073" elapsed="0.000102"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:19.794804" elapsed="0.001424"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:19.794230" elapsed="0.002045"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:19.726895" elapsed="0.069481"/>
</kw>
<msg time="2026-04-05T00:35:19.796498" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:19.796544" level="INFO">${message} =  "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:19.726301" elapsed="0.070274"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:19.796771" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-05T00:35:19.796659" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:19.796638" elapsed="0.000225"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.797366" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.797849" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:19.797924" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:19.725599" elapsed="0.072437"/>
</kw>
<msg time="2026-04-05T00:35:19.798136" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:19.798181" level="INFO">${output} =  "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:19.720885" elapsed="0.077326"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.798571" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:19.798291" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:19.798273" elapsed="0.000377"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:19.720720" elapsed="0.077955"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:19.720527" elapsed="0.078182"/>
</for>
<arg>Ending Netconf readiness test suite</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:19.715997" elapsed="0.082771"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-05T00:35:19.799009" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-05T00:35:19.798916" elapsed="0.000214"/>
</kw>
<doc>Destroy all sessions in the requests library and log into karaf.log that the netconf readiness wait is over.</doc>
<status status="PASS" start="2026-04-05T00:35:19.711275" elapsed="0.087909"/>
</kw>
<doc>netconf-connector readiness test suite.

Copyright (c) 2015,2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html


Try to detect whether Netconf is up and running and wait for
it for a configurable time if it is not yet up and running.

This is achieved by the test Check_Whether_Netconf_Topology_Is_Ready. This test case
does not use controller-config device. This test case is skipped (Pass Execution) if
the usage of controller-config device is indicated.
Testing itself is done by creating a netconf test device configured
to all odl nodes one by one and check if GET works from mounted
device. GET is done from all the odl nodes and it works for both, 1 or 3 nodes
setup.

The next test cases are basically dedicated to test readiness of the netconf using
controller-config device. This device is created when odl-netconf-connector-ssh|all
feature is installed. Robot variable USE_NETCONF_CONNECTOR should be set to True.
Connector test cases change behavior depending on False. If True,
they check data mounted behind controller-config is readable, if False they only check
topology-netconf is readable.

Some testsuites expect netconf-connector to be ready as soon as possible and will
fail if it is not. We want to see a failure if this is the cause of the failure.


The usage of netconf-connector happens in other suites than netconf,
especially bgpcep to configure odl's bgp peers. Testing the readiness
of the netconf-connector must be invoked by the Robot invocation
argument USE_NETCONF_CONNECTOR. By default it is set to False and
test jobs should be responsible to set it to True if needed. In the
default configuration the affected test cases waits for the netconf
topology to appear only.

If the netconf-connector is not ready upon startup and it's usage is set
to True (as seen by the second test case failing), the next case starts
to repeat the query for a minute to see whether it is going "to fix itself"
within the minute. If yes, then the testcase will pass, which
indicates that the "ODL cooldown" of 1 minute is not long enough
to allow for netconf-connector to initialize properly.
If this fails, one more check with even longer timeout is run.
If the Check_Whether_Netconf_Is_Up_And_Running pass, then the next test
case does nothing.

The other test case then checks whether Netconf can pretty print
data. This sometimes makes problems, most likely due to too
new Robot Requests library with an interface incompatible with
this test suite.</doc>
<status status="FAIL" start="2026-04-05T00:29:20.453722" elapsed="359.345498"/>
</suite>
<status status="FAIL" start="2026-04-05T00:29:20.452452" elapsed="359.347857"/>
</suite>
<suite id="s1-s2" name="Apidocs" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs">
<suite id="s1-s2-s1" name="Apidocs" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/apidocs.robot">
<kw name="Create_Default_Session" owner="TemplatedRequests" type="SETUP">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:35:19.848766" level="INFO">Creating Session using : alias=default, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4cc94cd50&gt;, timeout=30, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:35:19.848309" elapsed="0.000662"/>
</kw>
<arg>timeout=30</arg>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-05T00:35:19.847776" elapsed="0.001283"/>
</kw>
<test id="s1-s2-s1-t1" name="Get Apidoc Apis" line="17">
<kw name="Run_Keyword_If_Less_Than_Titanium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_Less_Than" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &lt; ${Stream_dict}[${lower_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:19.867218" elapsed="0.001061"/>
</kw>
<arg>titanium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${lower_bound} to titanium and in case titanium is less than ${lower_bound},
run Skip_Netty_Test_Case ['Skipping test: Not valid for Netty-based RESTCONF on ODL versions Scandium and earlier.'] {} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:35:19.866043" elapsed="0.002586"/>
</kw>
<msg time="2026-04-05T00:35:19.868744" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_Less_Than</arg>
<arg>titanium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:19.856914" elapsed="0.011953"/>
</kw>
<arg>Skip_Netty_Test_Case</arg>
<arg>Skipping test: Not valid for Netty-based RESTCONF on ODL versions Scandium and earlier.</arg>
<doc>Compare titanium to titanium and in case titanium is less than titanium,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:35:19.856336" elapsed="0.012705"/>
</kw>
<kw name="Set_Variable_If_At_Least_Aluminium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:19.883405" elapsed="0.000443"/>
</kw>
<msg time="2026-04-05T00:35:19.883901" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:19.883077" elapsed="0.000874"/>
</kw>
<arg>aluminium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return openapi_18 if titanium is at least ${lower_bound},
return apis otherwise.</doc>
<status status="PASS" start="2026-04-05T00:35:19.882727" elapsed="0.001300"/>
</kw>
<msg time="2026-04-05T00:35:19.884069" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>aluminium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:19.876260" elapsed="0.007852"/>
</kw>
<msg time="2026-04-05T00:35:19.884218" level="INFO">${path} = openapi_18</msg>
<var>${path}</var>
<arg>openapi_18</arg>
<arg>apis</arg>
<doc>Compare aluminium to titanium and return ${value_if_true} if titanium is at least aluminium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:35:19.875976" elapsed="0.008267"/>
</kw>
<kw name="Set_Variable_If_At_Least_Chlorine" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:19.898049" elapsed="0.000459"/>
</kw>
<msg time="2026-04-05T00:35:19.898559" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:19.897730" elapsed="0.000877"/>
</kw>
<arg>chlorine</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return openapi if titanium is at least ${lower_bound},
return openapi_18 otherwise.</doc>
<status status="PASS" start="2026-04-05T00:35:19.897367" elapsed="0.001314"/>
</kw>
<msg time="2026-04-05T00:35:19.898724" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>chlorine</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:19.890638" elapsed="0.008127"/>
</kw>
<msg time="2026-04-05T00:35:19.898865" level="INFO">${path} = openapi</msg>
<var>${path}</var>
<arg>openapi</arg>
<arg>${path}</arg>
<doc>Compare chlorine to titanium and return ${value_if_true} if titanium is at least chlorine, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:35:19.890318" elapsed="0.008571"/>
</kw>
<kw name="Set_Variable_If_At_Least_Potassium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:19.912679" elapsed="0.000436"/>
</kw>
<msg time="2026-04-05T00:35:19.913167" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:19.912339" elapsed="0.000875"/>
</kw>
<arg>potassium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return openapi_v3 if titanium is at least ${lower_bound},
return openapi otherwise.</doc>
<status status="PASS" start="2026-04-05T00:35:19.911994" elapsed="0.001294"/>
</kw>
<msg time="2026-04-05T00:35:19.913330" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>potassium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:19.905284" elapsed="0.008087"/>
</kw>
<msg time="2026-04-05T00:35:19.913489" level="INFO">${path} = openapi_v3</msg>
<var>${path}</var>
<arg>openapi_v3</arg>
<arg>${path}</arg>
<doc>Compare potassium to titanium and return ${value_if_true} if titanium is at least potassium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:35:19.904969" elapsed="0.008544"/>
</kw>
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:19.949979" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:19.949595" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:35:19.950794" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/apidoc/openapi_v3.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:35:19.950494" elapsed="0.000379">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/apidoc/openapi_v3.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:35:19.950968" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:35:19.950128" elapsed="0.000865"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:19.951517" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:19.951116" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:19.951802" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/apidoc/openapi_v3/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/apidoc/openapi_v3/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:19.951965" level="INFO">${template} = /openapi/api/v3/single
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:19.951665" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:19.952554" level="INFO">/openapi/api/v3/single
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:19.952108" elapsed="0.000492"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:19.953496" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:19.953224" elapsed="0.000318"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:35:19.953928" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:35:19.953663" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.954241" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.954413" elapsed="0.000041"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.954566" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-05T00:35:19.954146" elapsed="0.000476"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-05T00:35:19.954005" elapsed="0.000647"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:35:19.954697" elapsed="0.000051"/>
</return>
<msg time="2026-04-05T00:35:19.954880" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:35:19.952940" elapsed="0.001965"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:19.952677" elapsed="0.002261"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.955071" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:19.954964" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:19.952654" elapsed="0.002493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:19.955705" level="INFO">${final_text} = /openapi/api/v3/single</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:19.955249" elapsed="0.000483"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:35:19.955780" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:35:19.949012" elapsed="0.006892"/>
</kw>
<msg time="2026-04-05T00:35:19.955955" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:19.939338" elapsed="0.016663"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.965304" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.974598" elapsed="0.000026"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.983952" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.984106" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.984247" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.984591" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:19.984484" elapsed="0.000163"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:35:19.984468" elapsed="0.000203"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.984787" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.984915" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.985041" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:35:19.984426" elapsed="0.000667"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:35:19.984323" elapsed="0.000796"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.985223" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:35:19.985297" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:35:19.985408" level="INFO">${uri} = /openapi/api/v3/single</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:35:19.936080" elapsed="0.049369"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:35:19.986579" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/apidoc/openapi_v3/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:35:19.986320" elapsed="0.000323">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/apidoc/openapi_v3/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:35:19.986735" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:35:19.986024" elapsed="0.000735"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.987048" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:19.986828" elapsed="0.000279"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:19.987553" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:19.987245" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:19.987131" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:19.986810" elapsed="0.000824"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:19.989616" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:19.987747" elapsed="0.001895"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:35:19.989698" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:19.989850" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:35:19.985741" elapsed="0.004133"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:35:19.990998" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/apidoc/openapi_v3/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:35:19.990767" elapsed="0.000324">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/apidoc/openapi_v3/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-05T00:35:19.991184" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:35:19.990474" elapsed="0.000734"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:35:19.991410" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-05T00:35:19.991278" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:19.991260" elapsed="0.000251"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.991615" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.991749" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-05T00:35:19.991814" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:35:19.993239" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/apidocs/../../../variables/apidoc/openapi_v3/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:35:19.990177" elapsed="0.003087"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:19.994584" level="INFO">/openapi/api/v3/single</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:19.994318" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:19.994983" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:19.994741" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:19.996664" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:19.995109" elapsed="0.001618"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:35:23.882658" level="INFO">GET Request : url=http://10.30.170.184:8181/openapi/api/v3/single 
 path_url=/openapi/api/v3/single 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:35:23.888444" level="INFO">GET Response : url=http://10.30.170.184:8181/openapi/api/v3/single 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0l2tmb5g5vy8s1ubkijm2bwpg42.node0; Path=/openapi; HttpOnly, rememberMe=deleteMe; Path=/openapi; Max-Age=0; Expires=Sat, 04-Apr-2026 00:35:20 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked'} 
 body={"openapi":"3.0.3","info":{"version":"1.0.0","title":"Controller modules of RESTCONF","description":"We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That's because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."},"servers":[{"url":"http://10.30.170.184:8181/"}],"paths":{"/rests/data":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa - aaa","requestBody":{"description":"authentication","content":{"application/json":{"schema":{"properties":{"authentication":{"$ref":"#/components/schemas/aaa_authentication","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller root"],"parameters":[]},"get":{"description":"Result of this GET contains YANG module monitoring information.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"ietf-yang-library:modules-state":{"type":"object","$ref":"#/components/schemas/ietf-yang-library_modules-state"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-library_modules-state"}}}}},"summary":"GET - Controller - datastore - data","tags":["Controller root"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations":{"get":{"description":"The example demonstrates only top-level container \"ietf-restconf:operations\".\nThe request returns a list of all available operations on the mounted\nhost, showcasing the structure of RPCs that can be executed.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"ietf-restconf:operations":{"type":"object"}}}},"application/xml":{"schema":{"type":"object","xml":{"name":"operations","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf"}}}}}},"summary":"GET - Controller - datastore - operations","tags":["Controller root"]}},"/rests/data/aaa:authentication":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa - authentication","requestBody":{"description":"domains","content":{"application/json":{"schema":{"properties":{"domains":{"$ref":"#/components/schemas/aaa_authentication_domains","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller aaa"],"parameters":[]},"put":{"description":"","summary":"PUT - aaa - Controller - authentication","requestBody":{"description":"authentication","content":{"application/json":{"schema":{"properties":{"aaa:authentication":{"$ref":"#/components/schemas/aaa_authentication","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa - Controller - authentication","requestBody":{"description":"authentication","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:authentication":{"$ref":"#/components/schemas/aaa_authentication","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa - authentication","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa - authentication","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication"}},"application/json":{"schema":{"properties":{"authentication":{"$ref":"#/components/schemas/aaa_authentication","type":"object"}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:authentication/domains":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa - domains","requestBody":{"description":"domains","content":{"application/json":{"schema":{"properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_domains_domains","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains_domains"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller aaa"],"parameters":[]},"put":{"description":"","summary":"PUT - aaa - Controller - domains","requestBody":{"description":"domains","content":{"application/json":{"schema":{"properties":{"aaa:domains":{"$ref":"#/components/schemas/aaa_authentication_domains","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa - Controller - domains","requestBody":{"description":"domains","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:domains":{"$ref":"#/components/schemas/aaa_authentication_domains","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa - domains","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa - domains","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains"}},"application/json":{"schema":{"properties":{"domains":{"$ref":"#/components/schemas/aaa_authentication_domains","type":"object"}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:authentication/domains/domains={domainid}":{"put":{"description":"","summary":"PUT - aaa - Controller - domains","requestBody":{"description":"domains","content":{"application/json":{"schema":{"properties":{"aaa:domains":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_domains_domains","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains_domains"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[{"name":"domainid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name'."}]},"patch":{"description":"","summary":"PATCH - aaa - Controller - domains","requestBody":{"description":"domains","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:domains":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_domains_domains","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains_domains"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[{"name":"domainid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name'."}]},"delete":{"description":"","summary":"DELETE - Controller - aaa - domains","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[{"name":"domainid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name'."}]},"get":{"description":"","summary":"GET - Controller - aaa - domains","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains_domains"}},"application/json":{"schema":{"properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_domains_domains","type":"object"}}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"domainid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name'."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:authentication/users":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa - users","requestBody":{"description":"users","content":{"application/json":{"schema":{"properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_users_users","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/c... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-05T00:35:23.888814" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:35:19.996853" elapsed="3.891991"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:19.996752" elapsed="3.892163"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:19.995091" elapsed="3.893853"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:23.896757" level="INFO">{"openapi":"3.0.3","info":{"version":"1.0.0","title":"Controller modules of RESTCONF","description":"We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That's because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."},"servers":[{"url":"http://10.30.170.184:8181/"}],"paths":{"/rests/data":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa - aaa","requestBody":{"description":"authentication","content":{"application/json":{"schema":{"properties":{"authentication":{"$ref":"#/components/schemas/aaa_authentication","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller root"],"parameters":[]},"get":{"description":"Result of this GET contains YANG module monitoring information.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"ietf-yang-library:modules-state":{"type":"object","$ref":"#/components/schemas/ietf-yang-library_modules-state"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-library_modules-state"}}}}},"summary":"GET - Controller - datastore - data","tags":["Controller root"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations":{"get":{"description":"The example demonstrates only top-level container \"ietf-restconf:operations\".\nThe request returns a list of all available operations on the mounted\nhost, showcasing the structure of RPCs that can be executed.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"ietf-restconf:operations":{"type":"object"}}}},"application/xml":{"schema":{"type":"object","xml":{"name":"operations","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf"}}}}}},"summary":"GET - Controller - datastore - operations","tags":["Controller root"]}},"/rests/data/aaa:authentication":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa - authentication","requestBody":{"description":"domains","content":{"application/json":{"schema":{"properties":{"domains":{"$ref":"#/components/schemas/aaa_authentication_domains","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller aaa"],"parameters":[]},"put":{"description":"","summary":"PUT - aaa - Controller - authentication","requestBody":{"description":"authentication","content":{"application/json":{"schema":{"properties":{"aaa:authentication":{"$ref":"#/components/schemas/aaa_authentication","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa - Controller - authentication","requestBody":{"description":"authentication","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:authentication":{"$ref":"#/components/schemas/aaa_authentication","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa - authentication","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa - authentication","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication"}},"application/json":{"schema":{"properties":{"authentication":{"$ref":"#/components/schemas/aaa_authentication","type":"object"}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:authentication/domains":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa - domains","requestBody":{"description":"domains","content":{"application/json":{"schema":{"properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_domains_domains","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains_domains"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller aaa"],"parameters":[]},"put":{"description":"","summary":"PUT - aaa - Controller - domains","requestBody":{"description":"domains","content":{"application/json":{"schema":{"properties":{"aaa:domains":{"$ref":"#/components/schemas/aaa_authentication_domains","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa - Controller - domains","requestBody":{"description":"domains","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:domains":{"$ref":"#/components/schemas/aaa_authentication_domains","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa - domains","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa - domains","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains"}},"application/json":{"schema":{"properties":{"domains":{"$ref":"#/components/schemas/aaa_authentication_domains","type":"object"}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:authentication/domains/domains={domainid}":{"put":{"description":"","summary":"PUT - aaa - Controller - domains","requestBody":{"description":"domains","content":{"application/json":{"schema":{"properties":{"aaa:domains":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_domains_domains","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains_domains"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[{"name":"domainid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name'."}]},"patch":{"description":"","summary":"PATCH - aaa - Controller - domains","requestBody":{"description":"domains","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:domains":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_domains_domains","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains_domains"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[{"name":"domainid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name'."}]},"delete":{"description":"","summary":"DELETE - Controller - aaa - domains","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[{"name":"domainid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name'."}]},"get":{"description":"","summary":"GET - Controller - aaa - domains","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_domains_domains"}},"application/json":{"schema":{"properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_domains_domains","type":"object"}}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"domainid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name'."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:authentication/users":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa - users","requestBody":{"description":"users","content":{"application/json":{"schema":{"properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_users_users","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_users_users"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller aaa"],"parameters":[]},"put":{"description":"","summary":"PUT - aaa - Controller - users","requestBody":{"description":"users","content":{"application/json":{"schema":{"properties":{"aaa:users":{"$ref":"#/components/schemas/aaa_authentication_users","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_users"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa - Controller - users","requestBody":{"description":"users","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:users":{"$ref":"#/components/schemas/aaa_authentication_users","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_users"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa - users","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa - users","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_users"}},"application/json":{"schema":{"properties":{"users":{"$ref":"#/components/schemas/aaa_authentication_users","type":"object"}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:authentication/users/users={userid}":{"put":{"description":"","summary":"PUT - aaa - Controller - users","requestBody":{"description":"users","content":{"application/json":{"schema":{"properties":{"aaa:users":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_users_users","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_users_users"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[{"name":"userid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name@domain'."}]},"patch":{"description":"","summary":"PATCH - aaa - Controller - users","requestBody":{"description":"users","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:users":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_users_users","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_users_users"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[{"name":"userid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name@domain'."}]},"delete":{"description":"","summary":"DELETE - Controller - aaa - users","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[{"name":"userid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name@domain'."}]},"get":{"description":"","summary":"GET - Controller - aaa - users","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_users_users"}},"application/json":{"schema":{"properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_users_users","type":"object"}}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"userid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name@domain'."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:authentication/roles":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa - roles","requestBody":{"description":"roles","content":{"application/json":{"schema":{"properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_roles_roles","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_roles_roles"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller aaa"],"parameters":[]},"put":{"description":"","summary":"PUT - aaa - Controller - roles","requestBody":{"description":"roles","content":{"application/json":{"schema":{"properties":{"aaa:roles":{"$ref":"#/components/schemas/aaa_authentication_roles","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_roles"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa - Controller - roles","requestBody":{"description":"roles","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:roles":{"$ref":"#/components/schemas/aaa_authentication_roles","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_roles"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa - roles","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa - roles","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_roles"}},"application/json":{"schema":{"properties":{"roles":{"$ref":"#/components/schemas/aaa_authentication_roles","type":"object"}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:authentication/roles/roles={roleid}":{"put":{"description":"","summary":"PUT - aaa - Controller - roles","requestBody":{"description":"roles","content":{"application/json":{"schema":{"properties":{"aaa:roles":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_roles_roles","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_roles_roles"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[{"name":"roleid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name'."}]},"patch":{"description":"","summary":"PATCH - aaa - Controller - roles","requestBody":{"description":"roles","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:roles":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_roles_roles","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_roles_roles"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[{"name":"roleid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name'."}]},"delete":{"description":"","summary":"DELETE - Controller - aaa - roles","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[{"name":"roleid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name'."}]},"get":{"description":"","summary":"GET - Controller - aaa - roles","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_roles_roles"}},"application/json":{"schema":{"properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_roles_roles","type":"object"}}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"roleid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'name'."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:authentication/grants":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa - grants","requestBody":{"description":"grants","content":{"application/json":{"schema":{"properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_grants_grants","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_grants_grants"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller aaa"],"parameters":[]},"put":{"description":"","summary":"PUT - aaa - Controller - grants","requestBody":{"description":"grants","content":{"application/json":{"schema":{"properties":{"aaa:grants":{"$ref":"#/components/schemas/aaa_authentication_grants","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_grants"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa - Controller - grants","requestBody":{"description":"grants","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:grants":{"$ref":"#/components/schemas/aaa_authentication_grants","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_grants"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa - grants","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa - grants","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_grants"}},"application/json":{"schema":{"properties":{"grants":{"$ref":"#/components/schemas/aaa_authentication_grants","type":"object"}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:authentication/grants/grants={grantid}":{"put":{"description":"","summary":"PUT - aaa - Controller - grants","requestBody":{"description":"grants","content":{"application/json":{"schema":{"properties":{"aaa:grants":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_grants_grants","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_grants_grants"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[{"name":"grantid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'userid@roleid@domainid'."}]},"patch":{"description":"","summary":"PATCH - aaa - Controller - grants","requestBody":{"description":"grants","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:grants":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_grants_grants","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_grants_grants"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[{"name":"grantid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'userid@roleid@domainid'."}]},"delete":{"description":"","summary":"DELETE - Controller - aaa - grants","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[{"name":"grantid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'userid@roleid@domainid'."}]},"get":{"description":"","summary":"GET - Controller - aaa - grants","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_authentication_grants_grants"}},"application/json":{"schema":{"properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_grants_grants","type":"object"}}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"grantid","in":"path","required":true,"schema":{"type":"string"},"description":"An internal wiring detail in the form 'userid@roleid@domainid'."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:http-authorization":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa - http-authorization","requestBody":{"description":"policies","content":{"application/json":{"schema":{"properties":{"policies":{"$ref":"#/components/schemas/aaa_http-authorization_policies","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_http-authorization_policies"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller aaa"],"parameters":[]},"put":{"description":"","summary":"PUT - aaa - Controller - http-authorization","requestBody":{"description":"http-authorization","content":{"application/json":{"schema":{"properties":{"aaa:http-authorization":{"$ref":"#/components/schemas/aaa_http-authorization","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_http-authorization"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa - Controller - http-authorization","requestBody":{"description":"http-authorization","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:http-authorization":{"$ref":"#/components/schemas/aaa_http-authorization","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_http-authorization"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa - http-authorization","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa - http-authorization","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_http-authorization"}},"application/json":{"schema":{"properties":{"http-authorization":{"$ref":"#/components/schemas/aaa_http-authorization","type":"object"}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:http-authorization/policies":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa - policies","requestBody":{"description":"policies","content":{"application/json":{"schema":{"properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller aaa"],"parameters":[]},"put":{"description":"","summary":"PUT - aaa - Controller - policies","requestBody":{"description":"policies","content":{"application/json":{"schema":{"properties":{"aaa:policies":{"$ref":"#/components/schemas/aaa_http-authorization_policies","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_http-authorization_policies"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa - Controller - policies","requestBody":{"description":"policies","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:policies":{"$ref":"#/components/schemas/aaa_http-authorization_policies","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_http-authorization_policies"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa - policies","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa - policies","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_http-authorization_policies"}},"application/json":{"schema":{"properties":{"policies":{"$ref":"#/components/schemas/aaa_http-authorization_policies","type":"object"}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:http-authorization/policies/policies={resource}":{"put":{"description":"","summary":"PUT - aaa - Controller - policies","requestBody":{"description":"policies","content":{"application/json":{"schema":{"properties":{"aaa:policies":{"type":"array","items":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[{"name":"resource","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - aaa - Controller - policies","requestBody":{"description":"policies","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:policies":{"type":"array","items":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[{"name":"resource","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - aaa - policies","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[{"name":"resource","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - aaa - policies","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies"}},"application/json":{"schema":{"properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies","type":"object"}}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"resource","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa:http-authorization/policies/policies={resource}/permissions":{"put":{"description":"","summary":"PUT - aaa - Controller - permissions","requestBody":{"description":"permissions","content":{"application/json":{"schema":{"properties":{"aaa:permissions":{"type":"array","items":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies_permissions","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies_permissions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[{"name":"resource","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - aaa - Controller - permissions","requestBody":{"description":"permissions","content":{"application/yang-data+json":{"schema":{"properties":{"aaa:permissions":{"type":"array","items":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies_permissions","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies_permissions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa"],"parameters":[{"name":"resource","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - aaa - permissions","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa"],"parameters":[{"name":"resource","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - aaa - permissions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies_permissions"}},"application/json":{"schema":{"properties":{"permissions":{"type":"array","items":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies_permissions","type":"object"}}}}}}}},"tags":["Controller aaa"],"parameters":[{"name":"resource","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa-app-config:shiro-configuration":{"post":{"description":"AAA shiro related configuration.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa-app-config - shiro-configuration","requestBody":{"description":"main","content":{"application/json":{"schema":{"properties":{"main":{"type":"array","items":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_main","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_main"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller aaa-app-config"],"parameters":[]},"put":{"description":"AAA shiro related configuration.","summary":"PUT - aaa-app-config - Controller - shiro-configuration","requestBody":{"description":"shiro-configuration","content":{"application/json":{"schema":{"properties":{"aaa-app-config:shiro-configuration":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-app-config"],"parameters":[]},"patch":{"description":"AAA shiro related configuration.","summary":"PATCH - aaa-app-config - Controller - shiro-configuration","requestBody":{"description":"shiro-configuration","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-app-config:shiro-configuration":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-app-config"],"parameters":[]},"delete":{"description":"AAA shiro related configuration.","summary":"DELETE - Controller - aaa-app-config - shiro-configuration","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-app-config"],"parameters":[]},"get":{"description":"AAA shiro related configuration.","summary":"GET - Controller - aaa-app-config - shiro-configuration","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration"}},"application/json":{"schema":{"properties":{"shiro-configuration":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration","type":"object"}}}}}}},"tags":["Controller aaa-app-config"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa-app-config:shiro-configuration/main={pair-key}":{"put":{"description":"The main section of shiro.ini.","summary":"PUT - aaa-app-config - Controller - main","requestBody":{"description":"main","content":{"application/json":{"schema":{"properties":{"aaa-app-config:main":{"type":"array","items":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_main","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_main"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-app-config"],"parameters":[{"name":"pair-key","in":"path","required":true,"schema":{"type":"string"},"description":"The key."}]},"patch":{"description":"The main section of shiro.ini.","summary":"PATCH - aaa-app-config - Controller - main","requestBody":{"description":"main","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-app-config:main":{"type":"array","items":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_main","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_main"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-app-config"],"parameters":[{"name":"pair-key","in":"path","required":true,"schema":{"type":"string"},"description":"The key."}]},"delete":{"description":"The main section of shiro.ini.","summary":"DELETE - Controller - aaa-app-config - main","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-app-config"],"parameters":[{"name":"pair-key","in":"path","required":true,"schema":{"type":"string"},"description":"The key."}]},"get":{"description":"The main section of shiro.ini.","summary":"GET - Controller - aaa-app-config - main","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_main"}},"application/json":{"schema":{"properties":{"main":{"type":"array","items":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_main","type":"object"}}}}}}}},"tags":["Controller aaa-app-config"],"parameters":[{"name":"pair-key","in":"path","required":true,"schema":{"type":"string"},"description":"The key."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa-app-config:shiro-configuration/urls={pair-key}":{"put":{"description":"The urls section of shiro.ini.","summary":"PUT - aaa-app-config - Controller - urls","requestBody":{"description":"urls","content":{"application/json":{"schema":{"properties":{"aaa-app-config:urls":{"type":"array","items":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_urls","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_urls"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-app-config"],"parameters":[{"name":"pair-key","in":"path","required":true,"schema":{"type":"string"},"description":"The key."}]},"patch":{"description":"The urls section of shiro.ini.","summary":"PATCH - aaa-app-config - Controller - urls","requestBody":{"description":"urls","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-app-config:urls":{"type":"array","items":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_urls","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_urls"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-app-config"],"parameters":[{"name":"pair-key","in":"path","required":true,"schema":{"type":"string"},"description":"The key."}]},"delete":{"description":"The urls section of shiro.ini.","summary":"DELETE - Controller - aaa-app-config - urls","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-app-config"],"parameters":[{"name":"pair-key","in":"path","required":true,"schema":{"type":"string"},"description":"The key."}]},"get":{"description":"The urls section of shiro.ini.","summary":"GET - Controller - aaa-app-config - urls","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_urls"}},"application/json":{"schema":{"properties":{"urls":{"type":"array","items":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_urls","type":"object"}}}}}}}},"tags":["Controller aaa-app-config"],"parameters":[{"name":"pair-key","in":"path","required":true,"schema":{"type":"string"},"description":"The key."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa-app-config:datastore-config":{"put":{"description":"","summary":"PUT - aaa-app-config - Controller - datastore-config","requestBody":{"description":"datastore-config","content":{"application/json":{"schema":{"properties":{"aaa-app-config:datastore-config":{"$ref":"#/components/schemas/aaa-app-config_datastore-config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-app-config_datastore-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-app-config"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa-app-config - Controller - datastore-config","requestBody":{"description":"datastore-config","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-app-config:datastore-config":{"$ref":"#/components/schemas/aaa-app-config_datastore-config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-app-config_datastore-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-app-config"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa-app-config - datastore-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-app-config"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa-app-config - datastore-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-app-config_datastore-config"}},"application/json":{"schema":{"properties":{"datastore-config":{"$ref":"#/components/schemas/aaa-app-config_datastore-config","type":"object"}}}}}}},"tags":["Controller aaa-app-config"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa-cert:aaa-cert-service-config":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa-cert - aaa-cert-service-config","requestBody":{"description":"ctlKeystore","content":{"application/json":{"schema":{"properties":{"ctlKeystore":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller aaa-cert"],"parameters":[]},"put":{"description":"","summary":"PUT - aaa-cert - Controller - aaa-cert-service-config","requestBody":{"description":"aaa-cert-service-config","content":{"application/json":{"schema":{"properties":{"aaa-cert:aaa-cert-service-config":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa-cert - Controller - aaa-cert-service-config","requestBody":{"description":"aaa-cert-service-config","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-cert:aaa-cert-service-config":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa-cert - aaa-cert-service-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-cert"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa-cert - aaa-cert-service-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config"}},"application/json":{"schema":{"properties":{"aaa-cert-service-config":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config","type":"object"}}}}}}},"tags":["Controller aaa-cert"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa-cert:aaa-cert-service-config/ctlKeystore":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa-cert - ctlKeystore","requestBody":{"description":"cipher-suites","content":{"application/json":{"schema":{"properties":{"cipher-suites":{"type":"array","items":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore_cipher-suites","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore_cipher-suites"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller aaa-cert"],"parameters":[]},"put":{"description":"","summary":"PUT - aaa-cert - Controller - ctlKeystore","requestBody":{"description":"ctlKeystore","content":{"application/json":{"schema":{"properties":{"aaa-cert:ctlKeystore":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa-cert - Controller - ctlKeystore","requestBody":{"description":"ctlKeystore","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-cert:ctlKeystore":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa-cert - ctlKeystore","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-cert"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa-cert - ctlKeystore","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore"}},"application/json":{"schema":{"properties":{"ctlKeystore":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore","type":"object"}}}}}}},"tags":["Controller aaa-cert"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa-cert:aaa-cert-service-config/ctlKeystore/cipher-suites":{"put":{"description":"","summary":"PUT - aaa-cert - Controller - cipher-suites","requestBody":{"description":"cipher-suites","content":{"application/json":{"schema":{"properties":{"aaa-cert:cipher-suites":{"type":"array","items":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore_cipher-suites","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore_cipher-suites"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa-cert - Controller - cipher-suites","requestBody":{"description":"cipher-suites","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-cert:cipher-suites":{"type":"array","items":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore_cipher-suites","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore_cipher-suites"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa-cert - cipher-suites","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-cert"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa-cert - cipher-suites","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore_cipher-suites"}},"application/json":{"schema":{"properties":{"cipher-suites":{"type":"array","items":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore_cipher-suites","type":"object"}}}}}}}},"tags":["Controller aaa-cert"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa-cert:aaa-cert-service-config/trustKeystore":{"put":{"description":"","summary":"PUT - aaa-cert - Controller - trustKeystore","requestBody":{"description":"trustKeystore","content":{"application/json":{"schema":{"properties":{"aaa-cert:trustKeystore":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_trustKeystore","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_trustKeystore"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa-cert - Controller - trustKeystore","requestBody":{"description":"trustKeystore","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-cert:trustKeystore":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_trustKeystore","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_trustKeystore"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa-cert - trustKeystore","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-cert"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa-cert - trustKeystore","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_trustKeystore"}},"application/json":{"schema":{"properties":{"trustKeystore":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_trustKeystore","type":"object"}}}}}}},"tags":["Controller aaa-cert"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa-cert-mdsal:key-stores":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - aaa-cert-mdsal - key-stores","requestBody":{"description":"ssl-data","content":{"application/json":{"schema":{"properties":{"ssl-data":{"type":"array","items":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[]},"put":{"description":"","summary":"PUT - aaa-cert-mdsal - Controller - key-stores","requestBody":{"description":"key-stores","content":{"application/json":{"schema":{"properties":{"aaa-cert-mdsal:key-stores":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa-cert-mdsal - Controller - key-stores","requestBody":{"description":"key-stores","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-cert-mdsal:key-stores":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa-cert-mdsal - key-stores","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa-cert-mdsal - key-stores","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores"}},"application/json":{"schema":{"properties":{"key-stores":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores","type":"object"}}}}}}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa-cert-mdsal:key-stores/ssl-data={bundle-name}":{"put":{"description":"","summary":"PUT - aaa-cert-mdsal - Controller - ssl-data","requestBody":{"description":"ssl-data","content":{"application/json":{"schema":{"properties":{"aaa-cert-mdsal:ssl-data":{"type":"array","items":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"}]},"patch":{"description":"","summary":"PATCH - aaa-cert-mdsal - Controller - ssl-data","requestBody":{"description":"ssl-data","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-cert-mdsal:ssl-data":{"type":"array","items":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"}]},"delete":{"description":"","summary":"DELETE - Controller - aaa-cert-mdsal - ssl-data","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"}]},"get":{"description":"","summary":"GET - Controller - aaa-cert-mdsal - ssl-data","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data"}},"application/json":{"schema":{"properties":{"ssl-data":{"type":"array","items":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data","type":"object"}}}}}}}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa-cert-mdsal:key-stores/ssl-data={bundle-name}/odl-keystore":{"put":{"description":"","summary":"PUT - aaa-cert-mdsal - Controller - odl-keystore","requestBody":{"description":"odl-keystore","content":{"application/json":{"schema":{"properties":{"aaa-cert-mdsal:odl-keystore":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_odl-keystore","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_odl-keystore"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"}]},"patch":{"description":"","summary":"PATCH - aaa-cert-mdsal - Controller - odl-keystore","requestBody":{"description":"odl-keystore","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-cert-mdsal:odl-keystore":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_odl-keystore","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_odl-keystore"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"}]},"delete":{"description":"","summary":"DELETE - Controller - aaa-cert-mdsal - odl-keystore","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"}]},"get":{"description":"","summary":"GET - Controller - aaa-cert-mdsal - odl-keystore","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_odl-keystore"}},"application/json":{"schema":{"properties":{"odl-keystore":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_odl-keystore","type":"object"}}}}}}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa-cert-mdsal:key-stores/ssl-data={bundle-name}/trust-keystore":{"put":{"description":"","summary":"PUT - aaa-cert-mdsal - Controller - trust-keystore","requestBody":{"description":"trust-keystore","content":{"application/json":{"schema":{"properties":{"aaa-cert-mdsal:trust-keystore":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_trust-keystore","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_trust-keystore"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"}]},"patch":{"description":"","summary":"PATCH - aaa-cert-mdsal - Controller - trust-keystore","requestBody":{"description":"trust-keystore","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-cert-mdsal:trust-keystore":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_trust-keystore","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_trust-keystore"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"}]},"delete":{"description":"","summary":"DELETE - Controller - aaa-cert-mdsal - trust-keystore","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"}]},"get":{"description":"","summary":"GET - Controller - aaa-cert-mdsal - trust-keystore","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_trust-keystore"}},"application/json":{"schema":{"properties":{"trust-keystore":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_trust-keystore","type":"object"}}}}}}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa-cert-mdsal:key-stores/ssl-data={bundle-name}/cipher-suites":{"put":{"description":"","summary":"PUT - aaa-cert-mdsal - Controller - cipher-suites","requestBody":{"description":"cipher-suites","content":{"application/json":{"schema":{"properties":{"aaa-cert-mdsal:cipher-suites":{"type":"array","items":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_cipher-suites","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_cipher-suites"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"}]},"patch":{"description":"","summary":"PATCH - aaa-cert-mdsal - Controller - cipher-suites","requestBody":{"description":"cipher-suites","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-cert-mdsal:cipher-suites":{"type":"array","items":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_cipher-suites","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_cipher-suites"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"}]},"delete":{"description":"","summary":"DELETE - Controller - aaa-cert-mdsal - cipher-suites","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"}]},"get":{"description":"","summary":"GET - Controller - aaa-cert-mdsal - cipher-suites","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_cipher-suites"}},"application/json":{"schema":{"properties":{"cipher-suites":{"type":"array","items":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_cipher-suites","type":"object"}}}}}}}},"tags":["Controller aaa-cert-mdsal"],"parameters":[{"name":"bundle-name","in":"path","required":true,"schema":{"type":"string"},"description":"bundle name"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/aaa-cert-rpc:getODLCertificate":{"post":{"description":"Get the ODL keystore certificate","summary":"POST - Controller - aaa-cert-rpc - getODLCertificate","requestBody":{"description":"getODLCertificate_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:yang:aaa:cert:rpc"},"type":"object"}}}},"responses":{"200":{"description":"RPC getODLCertificate success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/aaa-cert-rpc_getODLCertificate_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-rpc_getODLCertificate_output"}}}}},"tags":["Controller aaa-cert-rpc"],"parameters":[]}},"/rests/operations/aaa-cert-rpc:getODLCertificateReq":{"post":{"description":"Generate a certificate request from the ODL keystore to be signed by a CA","summary":"POST - Controller - aaa-cert-rpc - getODLCertificateReq","requestBody":{"description":"getODLCertificateReq_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:yang:aaa:cert:rpc"},"type":"object"}}}},"responses":{"200":{"description":"RPC getODLCertificateReq success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/aaa-cert-rpc_getODLCertificateReq_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-rpc_getODLCertificateReq_output"}}}}},"tags":["Controller aaa-cert-rpc"],"parameters":[]}},"/rests/operations/aaa-cert-rpc:setODLCertificate":{"post":{"description":"The certificate should be generated based on\na certificate request generated from the ctl.jks\nkeystore otherwise the certificate will not be added to ctl keystore","summary":"POST - Controller - aaa-cert-rpc - setODLCertificate","requestBody":{"description":"setODLCertificate_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/aaa-cert-rpc_setODLCertificate_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-rpc_setODLCertificate_input"}}}},"responses":{"204":{"description":"RPC setODLCertificate success"}},"tags":["Controller aaa-cert-rpc"],"parameters":[]}},"/rests/operations/aaa-cert-rpc:setNodeCertificate":{"post":{"description":"Set the certificate of the network node that will communicate with opendaylight through TLS connection","summary":"POST - Controller - aaa-cert-rpc - setNodeCertificate","requestBody":{"description":"setNodeCertificate_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/aaa-cert-rpc_setNodeCertificate_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-rpc_setNodeCertificate_input"}}}},"responses":{"204":{"description":"RPC setNodeCertificate success"}},"tags":["Controller aaa-cert-rpc"],"parameters":[]}},"/rests/operations/aaa-cert-rpc:getNodeCertificate":{"post":{"description":"Get the network node certificate based on node alias","summary":"POST - Controller - aaa-cert-rpc - getNodeCertificate","requestBody":{"description":"getNodeCertificate_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/aaa-cert-rpc_getNodeCertificate_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-rpc_getNodeCertificate_input"}}}},"responses":{"200":{"description":"RPC getNodeCertificate success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/aaa-cert-rpc_getNodeCertificate_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-cert-rpc_getNodeCertificate_output"}}}}},"tags":["Controller aaa-cert-rpc"],"parameters":[]}},"/rests/data/aaa-encrypt-service-config:aaa-encrypt-service-config":{"put":{"description":"","summary":"PUT - aaa-encrypt-service-config - Controller - aaa-encrypt-service-config","requestBody":{"description":"aaa-encrypt-service-config","content":{"application/json":{"schema":{"properties":{"aaa-encrypt-service-config:aaa-encrypt-service-config":{"$ref":"#/components/schemas/aaa-encrypt-service-config_aaa-encrypt-service-config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-encrypt-service-config_aaa-encrypt-service-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-encrypt-service-config"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa-encrypt-service-config - Controller - aaa-encrypt-service-config","requestBody":{"description":"aaa-encrypt-service-config","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-encrypt-service-config:aaa-encrypt-service-config":{"$ref":"#/components/schemas/aaa-encrypt-service-config_aaa-encrypt-service-config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-encrypt-service-config_aaa-encrypt-service-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-encrypt-service-config"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa-encrypt-service-config - aaa-encrypt-service-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-encrypt-service-config"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa-encrypt-service-config - aaa-encrypt-service-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-encrypt-service-config_aaa-encrypt-service-config"}},"application/json":{"schema":{"properties":{"aaa-encrypt-service-config":{"$ref":"#/components/schemas/aaa-encrypt-service-config_aaa-encrypt-service-config","type":"object"}}}}}}},"tags":["Controller aaa-encrypt-service-config"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/aaa-password-service-config:password-service-config":{"put":{"description":"","summary":"PUT - aaa-password-service-config - Controller - password-service-config","requestBody":{"description":"password-service-config","content":{"application/json":{"schema":{"properties":{"aaa-password-service-config:password-service-config":{"$ref":"#/components/schemas/aaa-password-service-config_password-service-config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-password-service-config_password-service-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller aaa-password-service-config"],"parameters":[]},"patch":{"description":"","summary":"PATCH - aaa-password-service-config - Controller - password-service-config","requestBody":{"description":"password-service-config","content":{"application/yang-data+json":{"schema":{"properties":{"aaa-password-service-config:password-service-config":{"$ref":"#/components/schemas/aaa-password-service-config_password-service-config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/aaa-password-service-config_password-service-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller aaa-password-service-config"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - aaa-password-service-config - password-service-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller aaa-password-service-config"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - aaa-password-service-config - password-service-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/aaa-password-service-config_password-service-config"}},"application/json":{"schema":{"properties":{"password-service-config":{"$ref":"#/components/schemas/aaa-password-service-config_password-service-config","type":"object"}}}}}}},"tags":["Controller aaa-password-service-config"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/arbitrator-reconcile:get-active-bundle":{"post":{"description":"Fetches the active available bundle in openflowplugin","summary":"POST - Controller - arbitrator-reconcile - get-active-bundle","requestBody":{"description":"get-active-bundle_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/arbitrator-reconcile_get-active-bundle_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/arbitrator-reconcile_get-active-bundle_input"}}}},"responses":{"200":{"description":"RPC get-active-bundle success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/arbitrator-reconcile_get-active-bundle_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/arbitrator-reconcile_get-active-bundle_output"}}}}},"tags":["Controller arbitrator-reconcile"],"parameters":[]}},"/rests/operations/arbitrator-reconcile:commit-active-bundle":{"post":{"description":"Commits the active available bundle in openflowplugin","summary":"POST - Controller - arbitrator-reconcile - commit-active-bundle","requestBody":{"description":"commit-active-bundle_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/arbitrator-reconcile_commit-active-bundle_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/arbitrator-reconcile_commit-active-bundle_input"}}}},"responses":{"200":{"description":"RPC commit-active-bundle success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/arbitrator-reconcile_commit-active-bundle_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/arbitrator-reconcile_commit-active-bundle_output"}}}}},"tags":["Controller arbitrator-reconcile"],"parameters":[]}},"/rests/operations/basic-rpc-test:basic-global":{"post":{"description":"Invoke a global rpc that should only have one implementation registered on one of the nodes.\nIt has no input/output.","summary":"POST - Controller - basic-rpc-test - basic-global","requestBody":{"description":"basic-global_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:controller:basic-rpc-test"},"type":"object"}}}},"responses":{"204":{"description":"RPC basic-global success"}},"tags":["Controller basic-rpc-test"],"parameters":[]}},"/rests/operations/bgp-peer-rpc:route-refresh-request":{"post":{"description":"","summary":"POST - Controller - bgp-peer-rpc - route-refresh-request","requestBody":{"description":"route-refresh-request_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/bgp-peer-rpc_route-refresh-request_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-peer-rpc_route-refresh-request_input"}}}},"responses":{"204":{"description":"RPC route-refresh-request success"}},"tags":["Controller bgp-peer-rpc"],"parameters":[]}},"/rests/operations/bgp-peer-rpc:reset-session":{"post":{"description":"Resets the peer session","summary":"POST - Controller - bgp-peer-rpc - reset-session","requestBody":{"description":"reset-session_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/bgp-peer-rpc_reset-session_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-peer-rpc_reset-session_input"}}}},"responses":{"204":{"description":"RPC reset-session success"}},"tags":["Controller bgp-peer-rpc"],"parameters":[]}},"/rests/operations/bgp-peer-rpc:restart-gracefully":{"post":{"description":"Perform graceful restart with peer","summary":"POST - Controller - bgp-peer-rpc - restart-gracefully","requestBody":{"description":"restart-gracefully_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/bgp-peer-rpc_restart-gracefully_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-peer-rpc_restart-gracefully_input"}}}},"responses":{"204":{"description":"RPC restart-gracefully success"}},"tags":["Controller bgp-peer-rpc"],"parameters":[]}},"/rests/data/bgp-rib:application-rib={id}":{"put":{"description":"","summary":"PUT - bgp-rib - Controller - application-rib","requestBody":{"description":"application-rib","content":{"application/json":{"schema":{"properties":{"bgp-rib:application-rib":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_application-rib","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_application-rib"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - bgp-rib - Controller - application-rib","requestBody":{"description":"application-rib","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-rib:application-rib":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_application-rib","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_application-rib"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - bgp-rib - application-rib","responses":{"204":{"description":"Deleted"}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - bgp-rib - application-rib","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_application-rib"}},"application/json":{"schema":{"properties":{"application-rib":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_application-rib","type":"object"}}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:application-rib={id}/tables={afi},{safi}":{"put":{"description":"","summary":"PUT - bgp-rib - Controller - tables","requestBody":{"description":"tables","content":{"application/json":{"schema":{"properties":{"bgp-rib:tables":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - bgp-rib - Controller - tables","requestBody":{"description":"tables","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-rib:tables":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - bgp-rib - tables","responses":{"204":{"description":"Deleted"}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - bgp-rib - tables","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables"}},"application/json":{"schema":{"properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables","type":"object"}}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:application-rib={id}/tables={afi},{safi}/attributes":{"put":{"description":"","summary":"PUT - bgp-rib - Controller - attributes","requestBody":{"description":"attributes","content":{"application/json":{"schema":{"properties":{"bgp-rib:attributes":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - bgp-rib - Controller - attributes","requestBody":{"description":"attributes","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-rib:attributes":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - bgp-rib - attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - bgp-rib - attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_attributes"}},"application/json":{"schema":{"properties":{"attributes":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_attributes","type":"object"}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - bgp-rib - bgp-rib","requestBody":{"description":"bgp-rib","content":{"application/json":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib"}},"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller bgp-rib"],"parameters":[]},"put":{"description":"","summary":"PUT - bgp-rib - Controller - bgp-rib","requestBody":{"description":"bgp-rib","content":{"application/json":{"schema":{"properties":{"bgp-rib:bgp-rib":{"$ref":"#/components/schemas/bgp-rib_bgp-rib","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller bgp-rib"],"parameters":[]},"patch":{"description":"","summary":"PATCH - bgp-rib - Controller - bgp-rib","requestBody":{"description":"bgp-rib","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-rib:bgp-rib":{"$ref":"#/components/schemas/bgp-rib_bgp-rib","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller bgp-rib"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - bgp-rib - bgp-rib","responses":{"204":{"description":"Deleted"}},"tags":["Controller bgp-rib"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - bgp-rib - bgp-rib","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib"}},"application/json":{"schema":{"properties":{"bgp-rib":{"$ref":"#/components/schemas/bgp-rib_bgp-rib","type":"object"}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}":{"get":{"description":"","summary":"GET - Controller - bgp-rib - rib","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib"}},"application/json":{"schema":{"properties":{"rib":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib","type":"object"}}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}/peer={peer-id}":{"get":{"description":"","summary":"GET - Controller - bgp-rib - peer","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer"}},"application/json":{"schema":{"properties":{"peer":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer","type":"object"}}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}/peer={peer-id}/supported-tables={afi},{safi}":{"get":{"description":"","summary":"GET - Controller - bgp-rib - supported-tables","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_supported-tables"}},"application/json":{"schema":{"properties":{"supported-tables":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_supported-tables","type":"object"}}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}/peer={peer-id}/adj-rib-in":{"get":{"description":"Routes as we have received them from the peer.","summary":"GET - Controller - bgp-rib - adj-rib-in","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in"}},"application/json":{"schema":{"properties":{"adj-rib-in":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in","type":"object"}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}/peer={peer-id}/adj-rib-in/tables={afi},{safi}":{"get":{"description":"","summary":"GET - Controller - bgp-rib - tables","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables"}},"application/json":{"schema":{"properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables","type":"object"}}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}/peer={peer-id}/adj-rib-in/tables={afi},{safi}/attributes":{"get":{"description":"","summary":"GET - Controller - bgp-rib - attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_attributes"}},"application/json":{"schema":{"properties":{"attributes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_attributes","type":"object"}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}/peer={peer-id}/effective-rib-in":{"get":{"description":"Routes as processed by inbound policy.","summary":"GET - Controller - bgp-rib - effective-rib-in","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in"}},"application/json":{"schema":{"properties":{"effective-rib-in":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in","type":"object"}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}/peer={peer-id}/effective-rib-in/tables={afi},{safi}":{"get":{"description":"","summary":"GET - Controller - bgp-rib - tables","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables"}},"application/json":{"schema":{"properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables","type":"object"}}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}/peer={peer-id}/effective-rib-in/tables={afi},{safi}/attributes":{"get":{"description":"","summary":"GET - Controller - bgp-rib - attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_attributes"}},"application/json":{"schema":{"properties":{"attributes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_attributes","type":"object"}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}/peer={peer-id}/adj-rib-out":{"get":{"description":"","summary":"GET - Controller - bgp-rib - adj-rib-out","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out"}},"application/json":{"schema":{"properties":{"adj-rib-out":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out","type":"object"}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}/peer={peer-id}/adj-rib-out/tables={afi},{safi}":{"get":{"description":"","summary":"GET - Controller - bgp-rib - tables","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables"}},"application/json":{"schema":{"properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables","type":"object"}}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}/peer={peer-id}/adj-rib-out/tables={afi},{safi}/attributes":{"get":{"description":"","summary":"GET - Controller - bgp-rib - attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_attributes"}},"application/json":{"schema":{"properties":{"attributes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_attributes","type":"object"}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}/loc-rib":{"get":{"description":"","summary":"GET - Controller - bgp-rib - loc-rib","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib"}},"application/json":{"schema":{"properties":{"loc-rib":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib","type":"object"}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}/loc-rib/tables={afi},{safi}":{"get":{"description":"","summary":"GET - Controller - bgp-rib - tables","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables"}},"application/json":{"schema":{"properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables","type":"object"}}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bgp-rib:bgp-rib/rib={id}/loc-rib/tables={afi},{safi}/attributes":{"get":{"description":"","summary":"GET - Controller - bgp-rib - attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_attributes"}},"application/json":{"schema":{"properties":{"attributes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_attributes","type":"object"}}}}}}},"tags":["Controller bgp-rib"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - bmp-monitor - bmp-monitor","requestBody":{"description":"bmp-monitor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor"}},"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller bmp-monitor"],"parameters":[]},"put":{"description":"","summary":"PUT - bmp-monitor - Controller - bmp-monitor","requestBody":{"description":"bmp-monitor","content":{"application/json":{"schema":{"properties":{"bmp-monitor:bmp-monitor":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller bmp-monitor"],"parameters":[]},"patch":{"description":"","summary":"PATCH - bmp-monitor - Controller - bmp-monitor","requestBody":{"description":"bmp-monitor","content":{"application/yang-data+json":{"schema":{"properties":{"bmp-monitor:bmp-monitor":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller bmp-monitor"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - bmp-monitor - bmp-monitor","responses":{"204":{"description":"Deleted"}},"tags":["Controller bmp-monitor"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - bmp-monitor - bmp-monitor","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor"}},"application/json":{"schema":{"properties":{"bmp-monitor":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - monitor","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor"}},"application/json":{"schema":{"properties":{"monitor":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - router","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router"}},"application/json":{"schema":{"properties":{"router":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - peer","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer"}},"application/json":{"schema":{"properties":{"peer":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - peer-session","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session"}},"application/json":{"schema":{"properties":{"peer-session":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/sent-open":{"get":{"description":"The full OPEN message transmitted by the\nmonitored router to its peer.","summary":"GET - Controller - bmp-monitor - sent-open","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open"}},"application/json":{"schema":{"properties":{"sent-open":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/sent-open/bgp-parameters":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - bgp-parameters","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters"}},"application/json":{"schema":{"properties":{"bgp-parameters":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/sent-open/bgp-parameters/optional-capabilities":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - optional-capabilities","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities"}},"application/json":{"schema":{"properties":{"optional-capabilities":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/sent-open/bgp-parameters/optional-capabilities/c-parameters":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - c-parameters","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters"}},"application/json":{"schema":{"properties":{"c-parameters":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/sent-open/bgp-parameters/optional-capabilities/c-parameters/as4-bytes-capability":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - as4-bytes-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_as4-bytes-capability"}},"application/json":{"schema":{"properties":{"as4-bytes-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_as4-bytes-capability","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/sent-open/bgp-parameters/optional-capabilities/c-parameters/bgp-extended-message-capability":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - bgp-extended-message-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_bgp-extended-message-capability"}},"application/json":{"schema":{"properties":{"bgp-extended-message-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_bgp-extended-message-capability","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/sent-open/bgp-parameters/optional-capabilities/c-parameters/multiprotocol-capability":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - multiprotocol-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_multiprotocol-capability"}},"application/json":{"schema":{"properties":{"multiprotocol-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_multiprotocol-capability","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/sent-open/bgp-parameters/optional-capabilities/c-parameters/graceful-restart-capability":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - graceful-restart-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability"}},"application/json":{"schema":{"properties":{"graceful-restart-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/sent-open/bgp-parameters/optional-capabilities/c-parameters/graceful-restart-capability/tables={afi},{safi}":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - tables","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability_tables"}},"application/json":{"schema":{"properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability_tables","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/sent-open/bgp-parameters/optional-capabilities/c-parameters/ll-graceful-restart-capability":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - ll-graceful-restart-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability"}},"application/json":{"schema":{"properties":{"ll-graceful-restart-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/sent-open/bgp-parameters/optional-capabilities/c-parameters/ll-graceful-restart-capability/tables={afi},{safi}":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - tables","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability_tables"}},"application/json":{"schema":{"properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability_tables","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/sent-open/bgp-parameters/optional-capabilities/c-parameters/add-path-capability":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - add-path-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability"}},"application/json":{"schema":{"properties":{"add-path-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/sent-open/bgp-parameters/optional-capabilities/c-parameters/add-path-capability/address-families":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - address-families","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability_address-families"}},"application/json":{"schema":{"properties":{"address-families":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability_address-families","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/sent-open/bgp-parameters/optional-capabilities/c-parameters/route-refresh-capability":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - route-refresh-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_route-refresh-capability"}},"application/json":{"schema":{"properties":{"route-refresh-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_route-refresh-capability","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/received-open":{"get":{"description":"The full OPEN message received by the\nmonitored router from its peer.","summary":"GET - Controller - bmp-monitor - received-open","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open"}},"application/json":{"schema":{"properties":{"received-open":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/received-open/bgp-parameters":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - bgp-parameters","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters"}},"application/json":{"schema":{"properties":{"bgp-parameters":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/received-open/bgp-parameters/optional-capabilities":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - optional-capabilities","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities"}},"application/json":{"schema":{"properties":{"optional-capabilities":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/received-open/bgp-parameters/optional-capabilities/c-parameters":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - c-parameters","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters"}},"application/json":{"schema":{"properties":{"c-parameters":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/received-open/bgp-parameters/optional-capabilities/c-parameters/as4-bytes-capability":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - as4-bytes-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_as4-bytes-capability"}},"application/json":{"schema":{"properties":{"as4-bytes-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_as4-bytes-capability","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/received-open/bgp-parameters/optional-capabilities/c-parameters/bgp-extended-message-capability":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - bgp-extended-message-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_bgp-extended-message-capability"}},"application/json":{"schema":{"properties":{"bgp-extended-message-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_bgp-extended-message-capability","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/received-open/bgp-parameters/optional-capabilities/c-parameters/multiprotocol-capability":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - multiprotocol-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_multiprotocol-capability"}},"application/json":{"schema":{"properties":{"multiprotocol-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_multiprotocol-capability","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/received-open/bgp-parameters/optional-capabilities/c-parameters/graceful-restart-capability":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - graceful-restart-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability"}},"application/json":{"schema":{"properties":{"graceful-restart-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/received-open/bgp-parameters/optional-capabilities/c-parameters/graceful-restart-capability/tables={afi},{safi}":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - tables","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability_tables"}},"application/json":{"schema":{"properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability_tables","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/received-open/bgp-parameters/optional-capabilities/c-parameters/ll-graceful-restart-capability":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - ll-graceful-restart-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability"}},"application/json":{"schema":{"properties":{"ll-graceful-restart-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/received-open/bgp-parameters/optional-capabilities/c-parameters/ll-graceful-restart-capability/tables={afi},{safi}":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - tables","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability_tables"}},"application/json":{"schema":{"properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability_tables","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/received-open/bgp-parameters/optional-capabilities/c-parameters/add-path-capability":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - add-path-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability"}},"application/json":{"schema":{"properties":{"add-path-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/received-open/bgp-parameters/optional-capabilities/c-parameters/add-path-capability/address-families":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - address-families","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability_address-families"}},"application/json":{"schema":{"properties":{"address-families":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability_address-families","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/received-open/bgp-parameters/optional-capabilities/c-parameters/route-refresh-capability":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - route-refresh-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_route-refresh-capability"}},"application/json":{"schema":{"properties":{"route-refresh-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_route-refresh-capability","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/information":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - information","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information"}},"application/json":{"schema":{"properties":{"information":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/information/string-information":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - string-information","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information_string-information"}},"application/json":{"schema":{"properties":{"string-information":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information_string-information","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/peer-session/information/string-information/string-tlv":{"get":{"description":"Type = 0: String. The Information field contains a free-form\nUTF-8 string whose length is given by the Information Length\nfield. Inclusion of this TLV is optional.\nMultiple String TLVs MAY be included in the message.","summary":"GET - Controller - bmp-monitor - string-tlv","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information_string-information_string-tlv"}},"application/json":{"schema":{"properties":{"string-tlv":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information_string-information_string-tlv","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/stats":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - stats","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats"}},"application/json":{"schema":{"properties":{"stats":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/stats/per-afi-safi-adj-rib-in-routes":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - per-afi-safi-adj-rib-in-routes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-adj-rib-in-routes"}},"application/json":{"schema":{"properties":{"per-afi-safi-adj-rib-in-routes":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-adj-rib-in-routes","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/stats/per-afi-safi-adj-rib-in-routes/afi-safi={afi},{safi}":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - afi-safi","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-adj-rib-in-routes_afi-safi"}},"application/json":{"schema":{"properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-adj-rib-in-routes_afi-safi","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/stats/per-afi-safi-loc-rib-routes":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - per-afi-safi-loc-rib-routes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-loc-rib-routes"}},"application/json":{"schema":{"properties":{"per-afi-safi-loc-rib-routes":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-loc-rib-routes","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/stats/per-afi-safi-loc-rib-routes/afi-safi={afi},{safi}":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - afi-safi","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-loc-rib-routes_afi-safi"}},"application/json":{"schema":{"properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-loc-rib-routes_afi-safi","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/pre-policy-rib":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - pre-policy-rib","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib"}},"application/json":{"schema":{"properties":{"pre-policy-rib":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/pre-policy-rib/tables={afi},{safi}":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - tables","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables"}},"application/json":{"schema":{"properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/pre-policy-rib/tables={afi},{safi}/attributes":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_attributes"}},"application/json":{"schema":{"properties":{"attributes":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_attributes","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/post-policy-rib":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - post-policy-rib","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib"}},"application/json":{"schema":{"properties":{"post-policy-rib":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/post-policy-rib/tables={afi},{safi}":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - tables","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables"}},"application/json":{"schema":{"properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables","type":"object"}}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/post-policy-rib/tables={afi},{safi}/attributes":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_attributes"}},"application/json":{"schema":{"properties":{"attributes":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_attributes","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"afi","in":"path","required":true,"schema":{"type":"string"}},{"name":"safi","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/bmp-monitor:bmp-monitor/monitor={monitor-id}/router={router-id}/peer={peer-id}/mirrors":{"get":{"description":"","summary":"GET - Controller - bmp-monitor - mirrors","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_mirrors"}},"application/json":{"schema":{"properties":{"mirrors":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_mirrors","type":"object"}}}}}}},"tags":["Controller bmp-monitor"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"router-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"peer-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/car:stress-test":{"post":{"description":"","summary":"POST - Controller - car - stress-test","requestBody":{"description":"stress-test_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/car_stress-test_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/car_stress-test_input"}}}},"responses":{"204":{"description":"RPC stress-test success"}},"tags":["Controller car"],"parameters":[]}},"/rests/operations/car:stop-stress-test":{"post":{"description":"","summary":"POST - Controller - car - stop-stress-test","requestBody":{"description":"stop-stress-test_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"},"type":"object"}}}},"responses":{"200":{"description":"RPC stop-stress-test success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/car_stop-stress-test_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/car_stop-stress-test_output"}}}}},"tags":["Controller car"],"parameters":[]}},"/rests/operations/car:register-ownership":{"post":{"description":"","summary":"POST - Controller - car - register-ownership","requestBody":{"description":"register-ownership_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/car_register-ownership_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/car_register-ownership_input"}}}},"responses":{"204":{"description":"RPC register-ownership success"}},"tags":["Controller car"],"parameters":[]}},"/rests/operations/car:unregister-ownership":{"post":{"description":"","summary":"POST - Controller - car - unregister-ownership","requestBody":{"description":"unregister-ownership_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/car_unregister-ownership_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/car_unregister-ownership_input"}}}},"responses":{"204":{"description":"RPC unregister-ownership success"}},"tags":["Controller car"],"parameters":[]}},"/rests/operations/car:register-logging-dtcl":{"post":{"description":"Registers a basic logging DTCL on the cars container.  This is useful\n       for analyzing the effects of DTCL on a long, flat list.","summary":"POST - Controller - car - register-logging-dtcl","requestBody":{"description":"register-logging-dtcl_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"},"type":"object"}}}},"responses":{"204":{"description":"RPC register-logging-dtcl success"}},"tags":["Controller car"],"parameters":[]}},"/rests/operations/car:unregister-logging-dtcls":{"post":{"description":"Unregisters the logging DTCL(s) for the cars container.","summary":"POST - Controller - car - unregister-logging-dtcls","requestBody":{"description":"unregister-logging-dtcls_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"},"type":"object"}}}},"responses":{"204":{"description":"RPC unregister-logging-dtcls success"}},"tags":["Controller car"],"parameters":[]}},"/rests/operations/car:register-commit-cohort":{"post":{"description":"Registers a sample commit cohort that validates car entry input.","summary":"POST - Controller - car - register-commit-cohort","requestBody":{"description":"register-commit-cohort_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"},"type":"object"}}}},"responses":{"204":{"description":"RPC register-commit-cohort success"}},"tags":["Controller car"],"parameters":[]}},"/rests/operations/car:unregister-commit-cohort":{"post":{"description":"Unregisters the sample commit cohort.","summary":"POST - Controller - car - unregister-commit-cohort","requestBody":{"description":"unregister-commit-cohort_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"},"type":"object"}}}},"responses":{"204":{"description":"RPC unregister-commit-cohort success"}},"tags":["Controller car"],"parameters":[]}},"/rests/data/car:cars":{"post":{"description":"Top-level container for all car objects.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - car - cars","requestBody":{"description":"car-entry","content":{"application/json":{"schema":{"properties":{"car-entry":{"type":"array","items":{"$ref":"#/components/schemas/car_cars_car-entry","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/car_cars_car-entry"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller car"],"parameters":[]},"put":{"description":"Top-level container for all car objects.","summary":"PUT - car - Controller - cars","requestBody":{"description":"cars","content":{"application/json":{"schema":{"properties":{"car:cars":{"$ref":"#/components/schemas/car_cars","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/car_cars"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller car"],"parameters":[]},"patch":{"description":"Top-level container for all car objects.","summary":"PATCH - car - Controller - cars","requestBody":{"description":"cars","content":{"application/yang-data+json":{"schema":{"properties":{"car:cars":{"$ref":"#/components/schemas/car_cars","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/car_cars"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller car"],"parameters":[]},"delete":{"description":"Top-level container for all car objects.","summary":"DELETE - Controller - car - cars","responses":{"204":{"description":"Deleted"}},"tags":["Controller car"],"parameters":[]},"get":{"description":"Top-level container for all car objects.","summary":"GET - Controller - car - cars","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/car_cars"}},"application/json":{"schema":{"properties":{"cars":{"$ref":"#/components/schemas/car_cars","type":"object"}}}}}}},"tags":["Controller car"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/car:cars/car-entry={id}":{"put":{"description":"A list of cars (as defined by the 'grouping car-entry').","summary":"PUT - car - Controller - car-entry","requestBody":{"description":"car-entry","content":{"application/json":{"schema":{"properties":{"car:car-entry":{"type":"array","items":{"$ref":"#/components/schemas/car_cars_car-entry","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/car_cars_car-entry"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller car"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"identifier of single list of entries."}]},"patch":{"description":"A list of cars (as defined by the 'grouping car-entry').","summary":"PATCH - car - Controller - car-entry","requestBody":{"description":"car-entry","content":{"application/yang-data+json":{"schema":{"properties":{"car:car-entry":{"type":"array","items":{"$ref":"#/components/schemas/car_cars_car-entry","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/car_cars_car-entry"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller car"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"identifier of single list of entries."}]},"delete":{"description":"A list of cars (as defined by the 'grouping car-entry').","summary":"DELETE - Controller - car - car-entry","responses":{"204":{"description":"Deleted"}},"tags":["Controller car"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"identifier of single list of entries."}]},"get":{"description":"A list of cars (as defined by the 'grouping car-entry').","summary":"GET - Controller - car - car-entry","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/car_cars_car-entry"}},"application/json":{"schema":{"properties":{"car-entry":{"type":"array","items":{"$ref":"#/components/schemas/car_cars_car-entry","type":"object"}}}}}}}},"tags":["Controller car"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"identifier of single list of entries."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/car-people:car-people":{"post":{"description":"Top-level container for all people car map\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - car-people - car-people","requestBody":{"description":"car-person","content":{"application/json":{"schema":{"properties":{"car-person":{"type":"array","items":{"$ref":"#/components/schemas/car-people_car-people_car-person","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/car-people_car-people_car-person"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller car-people"],"parameters":[]},"put":{"description":"Top-level container for all people car map","summary":"PUT - car-people - Controller - car-people","requestBody":{"description":"car-people","content":{"application/json":{"schema":{"properties":{"car-people:car-people":{"$ref":"#/components/schemas/car-people_car-people","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/car-people_car-people"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller car-people"],"parameters":[]},"patch":{"description":"Top-level container for all people car map","summary":"PATCH - car-people - Controller - car-people","requestBody":{"description":"car-people","content":{"application/yang-data+json":{"schema":{"properties":{"car-people:car-people":{"$ref":"#/components/schemas/car-people_car-people","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/car-people_car-people"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller car-people"],"parameters":[]},"delete":{"description":"Top-level container for all people car map","summary":"DELETE - Controller - car-people - car-people","responses":{"204":{"description":"Deleted"}},"tags":["Controller car-people"],"parameters":[]},"get":{"description":"Top-level container for all people car map","summary":"GET - Controller - car-people - car-people","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/car-people_car-people"}},"application/json":{"schema":{"properties":{"car-people":{"$ref":"#/components/schemas/car-people_car-people","type":"object"}}}}}}},"tags":["Controller car-people"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/car-people:car-people/car-person={car-id},{person-id}":{"put":{"description":"A mapping of cars and people.","summary":"PUT - car-people - Controller - car-person","requestBody":{"description":"car-person","content":{"application/json":{"schema":{"properties":{"car-people:car-person":{"type":"array","items":{"$ref":"#/components/schemas/car-people_car-people_car-person","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/car-people_car-people_car-person"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller car-people"],"parameters":[{"name":"car-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"person-id","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"A mapping of cars and people.","summary":"PATCH - car-people - Controller - car-person","requestBody":{"description":"car-person","content":{"application/yang-data+json":{"schema":{"properties":{"car-people:car-person":{"type":"array","items":{"$ref":"#/components/schemas/car-people_car-people_car-person","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/car-people_car-people_car-person"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller car-people"],"parameters":[{"name":"car-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"person-id","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"A mapping of cars and people.","summary":"DELETE - Controller - car-people - car-person","responses":{"204":{"description":"Deleted"}},"tags":["Controller car-people"],"parameters":[{"name":"car-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"person-id","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"A mapping of cars and people.","summary":"GET - Controller - car-people - car-person","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/car-people_car-people_car-person"}},"application/json":{"schema":{"properties":{"car-person":{"type":"array","items":{"$ref":"#/components/schemas/car-people_car-people_car-person","type":"object"}}}}}}}},"tags":["Controller car-people"],"parameters":[{"name":"car-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"person-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/car-purchase:buy-car":{"post":{"description":"buy a new car","summary":"POST - Controller - car-purchase - buy-car","requestBody":{"description":"buy-car_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/car-purchase_buy-car_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/car-purchase_buy-car_input"}}}},"responses":{"204":{"description":"RPC buy-car success"}},"tags":["Controller car-purchase"],"parameters":[]}},"/rests/operations/cluster-admin:add-shard-replica":{"post":{"description":"Adds a replica of a shard to this node and joins it to an existing cluster. The shard must\nalready have a module configuration defined for it and there must already be a shard existing on\nanother node with a leader. This RPC first contacts peer member seed nodes searching for a shard.\nWhen found, an AddServer message is sent to the shard leader and applied as described in the Raft\npaper.","summary":"POST - Controller - cluster-admin - add-shard-replica","requestBody":{"description":"add-shard-replica_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/cluster-admin_add-shard-replica_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_add-shard-replica_input"}}}},"responses":{"204":{"description":"RPC add-shard-replica success"}},"tags":["Controller cluster-admin"],"parameters":[]}},"/rests/operations/cluster-admin:remove-shard-replica":{"post":{"description":"Removes an existing replica of a shard from this node via the RemoveServer mechanism as\ndescribed in the Raft paper.","summary":"POST - Controller - cluster-admin - remove-shard-replica","requestBody":{"description":"remove-shard-replica_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/cluster-admin_remove-shard-replica_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_remove-shard-replica_input"}}}},"responses":{"204":{"description":"RPC remove-shard-replica success"}},"tags":["Controller cluster-admin"],"parameters":[]}},"/rests/operations/cluster-admin:make-leader-local":{"post":{"description":"Attempts to move the shard leader of the given module based shard to the local node.\nThe rpc returns a response after handling of the underlying MakeLeaderLocal message completes.\nThis operation fails if there is no current shard leader due to lack of network connectivity or\na cluster majority. In addition, if the local node is not up to date with the current leader,\nan attempt is made to first sync the local node with the leader. If this cannot be achieved\nwithin two election timeout periods the operation fails.","summary":"POST - Controller - cluster-admin - make-leader-local","requestBody":{"description":"make-leader-local_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/cluster-admin_make-leader-local_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_make-leader-local_input"}}}},"responses":{"204":{"description":"RPC make-leader-local success"}},"tags":["Controller cluster-admin"],"parameters":[]}},"/rests/operations/cluster-admin:add-replicas-for-all-shards":{"post":{"description":"Adds replicas on this node for all currently defined shards. This is equivalent to issuing\nan add-shard-replica RPC for all shards.","summary":"POST - Controller - cluster-admin - add-replicas-for-all-shards","requestBody":{"description":"add-replicas-for-all-shards_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},"type":"object"}}}},"responses":{"200":{"description":"RPC add-replicas-for-all-shards success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/cluster-admin_add-replicas-for-all-shards_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_add-replicas-for-all-shards_output"}}}}},"tags":["Controller cluster-admin"],"parameters":[]}},"/rests/operations/cluster-admin:remove-all-shard-replicas":{"post":{"description":"Removes replicas for all shards on this node. This is equivalent to issuing\na remove-shard-replica for all shards and essentially removes this node from a cluster.","summary":"POST - Controller - cluster-admin - remove-all-shard-replicas","requestBody":{"description":"remove-all-shard-replicas_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/cluster-admin_remove-all-shard-replicas_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_remove-all-shard-replicas_input"}}}},"responses":{"200":{"description":"RPC remove-all-shard-replicas success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/cluster-admin_remove-all-shard-replicas_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_remove-all-shard-replicas_output"}}}}},"tags":["Controller cluster-admin"],"parameters":[]}},"/rests/operations/cluster-admin:change-member-voting-states-for-shard":{"post":{"description":"Changes the voting states, either voting or non-voting, of cluster members for a shard.\nNon-voting members will no longer participate in leader elections and consensus but will be\nreplicated. This is useful for having a set of members serve as a backup cluster in case the\nprimary voting cluster suffers catastrophic failure. This RPC can be issued to any cluster member\nand will be forwarded to the leader.","summary":"POST - Controller - cluster-admin - change-member-voting-states-for-shard","requestBody":{"description":"change-member-voting-states-for-shard_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/cluster-admin_change-member-voting-states-for-shard_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_change-member-voting-states-for-shard_input"}}}},"responses":{"204":{"description":"RPC change-member-voting-states-for-shard success"}},"tags":["Controller cluster-admin"],"parameters":[]}},"/rests/operations/cluster-admin:change-member-voting-states-for-all-shards":{"post":{"description":"Changes the voting states, either voting or non-voting, of cluster members for all shards.\nNon-voting members will no longer participate in leader elections and consensus but will be\nreplicated. This is useful for having a set of members serve as a backup cluster in case the\nprimary voting cluster suffers catastrophic failure. This RPC can be issued to any cluster member\nand will be forwarded to the leader.","summary":"POST - Controller - cluster-admin - change-member-voting-states-for-all-shards","requestBody":{"description":"change-member-voting-states-for-all-shards_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/cluster-admin_change-member-voting-states-for-all-shards_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_change-member-voting-states-for-all-shards_input"}}}},"responses":{"200":{"description":"RPC change-member-voting-states-for-all-shards success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/cluster-admin_change-member-voting-states-for-all-shards_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_change-member-voting-states-for-all-shards_output"}}}}},"tags":["Controller cluster-admin"],"parameters":[]}},"/rests/operations/cluster-admin:flip-member-voting-states-for-all-shards":{"post":{"description":"Flips the voting states of all cluster members for all shards, such that if a member\nwas voting it becomes non-voting and vice versa.","summary":"POST - Controller - cluster-admin - flip-member-voting-states-for-all-shards","requestBody":{"description":"flip-member-voting-states-for-all-shards_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},"type":"object"}}}},"responses":{"200":{"description":"RPC flip-member-voting-states-for-all-shards success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/cluster-admin_flip-member-voting-states-for-all-shards_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_flip-member-voting-states-for-all-shards_output"}}}}},"tags":["Controller cluster-admin"],"parameters":[]}},"/rests/operations/cluster-admin:backup-datastore":{"post":{"description":"Creates a backup file of the datastore state","summary":"POST - Controller - cluster-admin - backup-datastore","requestBody":{"description":"backup-datastore_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/cluster-admin_backup-datastore_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_backup-datastore_input"}}}},"responses":{"204":{"description":"RPC backup-datastore success"}},"tags":["Controller cluster-admin"],"parameters":[]}},"/rests/operations/cluster-admin:get-shard-role":{"post":{"description":"Returns the current role for the requested module shard.","summary":"POST - Controller - cluster-admin - get-shard-role","requestBody":{"description":"get-shard-role_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/cluster-admin_get-shard-role_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_get-shard-role_input"}}}},"responses":{"200":{"description":"RPC get-shard-role success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/cluster-admin_get-shard-role_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_get-shard-role_output"}}}}},"tags":["Controller cluster-admin"],"parameters":[]}},"/rests/operations/cluster-admin:locate-shard":{"post":{"description":"Return the transport-level information about where a shard has a home.","summary":"POST - Controller - cluster-admin - locate-shard","requestBody":{"description":"locate-shard_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/cluster-admin_locate-shard_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_locate-shard_input"}}}},"responses":{"200":{"description":"RPC locate-shard success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/cluster-admin_locate-shard_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_locate-shard_output"}}}}},"tags":["Controller cluster-admin"],"parameters":[]}},"/rests/operations/cluster-admin:get-known-clients-for-all-shards":{"post":{"description":"Request all shards to report their known frontend clients. This is useful for determining what\ngeneration should a resurrected member node should use.","summary":"POST - Controller - cluster-admin - get-known-clients-for-all-shards","requestBody":{"description":"get-known-clients-for-all-shards_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},"type":"object"}}}},"responses":{"200":{"description":"RPC get-known-clients-for-all-shards success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/cluster-admin_get-known-clients-for-all-shards_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/cluster-admin_get-known-clients-for-all-shards_output"}}}}},"tags":["Controller cluster-admin"],"parameters":[]}},"/rests/operations/cluster-admin:activate-eos-datacenter":{"post":{"description":"Activates the datacenter that the node this rpc is called on belongs to. The caller must maintain\nonly a single active datacenter at a time as the singleton components will interfere with each\nother otherwise. This only needs to be used if configuring multiple datacenters or if not using\ndefault datacenter.","summary":"POST - Controller - cluster-admin - activate-eos-datacenter","requestBody":{"description":"activate-eos-datacenter_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},"type":"object"}}}},"responses":{"204":{"description":"RPC activate-eos-datacenter success"}},"tags":["Controller cluster-admin"],"parameters":[]}},"/rests/operations/cluster-admin:deactivate-eos-datacenter":{"post":{"description":"Deactivates the datacenter that the node this rpc is called on belongs to. The caller must maintain\nonly a single active datacenter at a time as the singleton components will interfere with each\nother otherwise. This only needs to be used if configuring multiple datacenters or if not using\ndefault datacenter.","summary":"POST - Controller - cluster-admin - deactivate-eos-datacenter","requestBody":{"description":"deactivate-eos-datacenter_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"},"type":"object"}}}},"responses":{"204":{"description":"RPC deactivate-eos-datacenter success"}},"tags":["Controller cluster-admin"],"parameters":[]}},"/rests/operations/data-export-import:schedule-export":{"post":{"description":"A request to export the system at a specific time in the future.\nThe `run-at` time may be specified as either an absolute UTC\ntime or a relative offset from the server clock. Attempts to\nschedule an export in the past will be rejected.\n\nBoth `inclusions` and/or `exclusions` may be specified.\nIf only `inclusions` are specified, then only those explicitly\n'whitelisted' module/store pairs are exported, and no other ones.\nIf only `exclusions` are specified, then all modules are exported\nexcept the 'blacklisted' module/store pairs.\nIf both `inclusions` and `exclusions` are specified, then a module\nis only exported if it is included (whilelisted) but not also excluded (blacklisted).\n\nEach file that is written will contain a JSON-encoded object that\ncontains module data from the corresponding data store: module data\nis not included in the object for any module identified in the\nexclusion list. (Each file that is written will contain at least an\nempty JSON object.)","summary":"POST - Controller - data-export-import - schedule-export","requestBody":{"description":"schedule-export_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/data-export-import_schedule-export_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/data-export-import_schedule-export_input"}}}},"responses":{"200":{"description":"RPC schedule-export success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/data-export-import_schedule-export_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/data-export-import_schedule-export_output"}}}}},"tags":["Controller data-export-import"],"parameters":[]}},"/rests/operations/data-export-import:status-export":{"post":{"description":"A request to check export status.\n\nIf `status` has the value 'initial' then an export has not been\nscheduled.\n\nIf `status` has the value 'scheduled' then `run-at` indicates\nthe time at which the next export will run.\n\nIf `status` has the value `in-progress` then: `run-at` indicates\nthe time at which the running export was scheduled to start; and,\n`tasks` indicates activities that have been undertaken, that are\ncurrently being executed and that will be performed. As such,\n`tasks` serves as an indicator of activity progress and success.\n\nIf `status` has any other value then: `run-at` indicates the\ntime at which the last export was scheduled to start; and, `tasks`\nindicates the activities that were undertaken.\n\nIf the `status` for any node in `nodes` is 'failed', then the\ncorresponding `reason` may be used to communicate any identified\ncause.","summary":"POST - Controller - data-export-import - status-export","requestBody":{"description":"status-export_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:daexim"},"type":"object"}}}},"responses":{"200":{"description":"RPC status-export success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/data-export-import_status-export_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/data-export-import_status-export_output"}}}}},"tags":["Controller data-export-import"],"parameters":[]}},"/rests/operations/data-export-import:cancel-export":{"post":{"description":"A request to cancel export.\n\nTo cancel the export the server stops any running tasks (where\npossible, immediately), clears any scheduled export time value and\nreleases associated resources.\n\nThis RPC may be called at any time, whether there is an export in\nprogress, scheduled or not yet scheduled. The returned result is\ntrue when the server has successfully cleared tasks, state and\nresources: false on failure to do so. (Note that if there is no\nexport scheduled or running, then there is nothing for the server\nto clear. Therefore the return result is true as the server cannot\nfail.)","summary":"POST - Controller - data-export-import - cancel-export","requestBody":{"description":"cancel-export_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:daexim"},"type":"object"}}}},"responses":{"200":{"description":"RPC cancel-export success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/data-export-import_cancel-export_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/data-export-import_cancel-export_output"}}}}},"tags":["Controller data-export-import"],"parameters":[]}},"/rests/operations/data-export-import:immediate-import":{"post":{"description":"A request to import data from files already present in the file\nsystem.","summary":"POST - Controller - data-export-import - immediate-import","requestBody":{"description":"immediate-import_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/data-export-import_immediate-import_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/data-export-import_immediate-import_input"}}}},"responses":{"200":{"description":"RPC immediate-import success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/data-export-import_immediate-import_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/data-export-import_immediate-import_output"}}}}},"tags":["Controller data-export-import"],"parameters":[]}},"/rests/operations/data-export-import:status-import":{"post":{"description":"A request to check last import status.\n\nIf `status` has the value 'initial' then a import has not taken\nplace.\n\nFor all other values of status `imported-at` indicates\nthe time at which the restore has taken place.\n\nList `nodes` holds status about restore operation on per-node basis.\n","summary":"POST - Controller - data-export-import - status-import","requestBody":{"description":"status-import_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:daexim"},"type":"object"}}}},"responses":{"200":{"description":"RPC status-import success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/data-export-import_status-import_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/data-export-import_status-import_output"}}}}},"tags":["Controller data-export-import"],"parameters":[]}},"/rests/data/data-export-import-internal:import-operation-result":{"get":{"description":"The result of the last attempted import operation, with associated\nfailure reason.","summary":"GET - Controller - data-export-import-internal - import-operation-result","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/data-export-import-internal_import-operation-result"}},"application/json":{"schema":{"properties":{"import-operation-result":{"$ref":"#/components/schemas/data-export-import-internal_import-operation-result","type":"object"}}}}}}},"tags":["Controller data-export-import-internal"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/data-export-import-internal:daexim":{"get":{"description":"","summary":"GET - Controller - data-export-import-internal - daexim","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/data-export-import-internal_daexim"}},"application/json":{"schema":{"properties":{"daexim":{"$ref":"#/components/schemas/data-export-import-internal_daexim","type":"object"}}}}}}},"tags":["Controller data-export-import-internal"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/data-export-import-internal:daexim/daexim-control":{"get":{"description":"Export control, used to dispatch IPC to all node instances.\n\nWhen `task-type` is `schedule` then `run-at` must be specified\nand `inclusions` and/or `exclusions` may be specified.  If\nboth `inclusions` and `exclusions` are specified, then a module\nis only exported if it is included and not also excluded.\n\nWhen `task-type` is `cancel` then `run-at`, `inclusions` and `exclusions`\nare ignored. If there is an export running or scheduled then\n`cancel` cancels it and resets status to its initial state.","summary":"GET - Controller - data-export-import-internal - daexim-control","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-control"}},"application/json":{"schema":{"properties":{"daexim-control":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-control","type":"object"}}}}}}},"tags":["Controller data-export-import-internal"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/data-export-import-internal:daexim/daexim-control/included-modules={module-name},{data-store}":{"get":{"description":"A list of module name, data store pairs to be included in an\nexport.","summary":"GET - Controller - data-export-import-internal - included-modules","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-control_included-modules"}},"application/json":{"schema":{"properties":{"included-modules":{"type":"array","items":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-control_included-modules","type":"object"}}}}}}}},"tags":["Controller data-export-import-internal"],"parameters":[{"name":"module-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the module to be included."},{"name":"data-store","in":"path","required":true,"schema":{"type":"string"},"description":"The data store to include for the corresponding module name."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/data-export-import-internal:daexim/daexim-control/excluded-modules={module-name},{data-store}":{"get":{"description":"A list of module name, data store pairs to be excluded from an\nexport.\n\nIf any module name is specified using the wildcard string value,\nthen all modules are excluded for that data store.\n\nTo exclude all data stores for a specific module, specify a\nseparate list item for each data store, with each item using the\nsame module name.","summary":"GET - Controller - data-export-import-internal - excluded-modules","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-control_excluded-modules"}},"application/json":{"schema":{"properties":{"excluded-modules":{"type":"array","items":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-control_excluded-modules","type":"object"}}}}}}}},"tags":["Controller data-export-import-internal"],"parameters":[{"name":"module-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the module to exclude, or the wildcard string\nvalue when excluding all modules."},{"name":"data-store","in":"path","required":true,"schema":{"type":"string"},"description":"The data store to exclude for the corresponding module name."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/data-export-import-internal:daexim/daexim-status":{"get":{"description":"Data export/import, used to communicate task status.","summary":"GET - Controller - data-export-import-internal - daexim-status","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-status"}},"application/json":{"schema":{"properties":{"daexim-status":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-status","type":"object"}}}}}}},"tags":["Controller data-export-import-internal"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/data-export-import-internal:daexim/daexim-status/node-status={node-name}":{"get":{"description":"The nodes where the export is to be executed.","summary":"GET - Controller - data-export-import-internal - node-status","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-status_node-status"}},"application/json":{"schema":{"properties":{"node-status":{"type":"array","items":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-status_node-status","type":"object"}}}}}}}},"tags":["Controller data-export-import-internal"],"parameters":[{"name":"node-name","in":"path","required":true,"schema":{"type":"string"},"description":"Node name as used in cluster configuration"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/distributed-datastore-provider:data-store-properties-container":{"put":{"description":"","summary":"PUT - distributed-datastore-provider - Controller - data-store-properties-container","requestBody":{"description":"data-store-properties-container","content":{"application/json":{"schema":{"properties":{"distributed-datastore-provider:data-store-properties-container":{"$ref":"#/components/schemas/distributed-datastore-provider_data-store-properties-container","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/distributed-datastore-provider_data-store-properties-container"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller distributed-datastore-provider"],"parameters":[]},"patch":{"description":"","summary":"PATCH - distributed-datastore-provider - Controller - data-store-properties-container","requestBody":{"description":"data-store-properties-container","content":{"application/yang-data+json":{"schema":{"properties":{"distributed-datastore-provider:data-store-properties-container":{"$ref":"#/components/schemas/distributed-datastore-provider_data-store-properties-container","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/distributed-datastore-provider_data-store-properties-container"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller distributed-datastore-provider"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - distributed-datastore-provider - data-store-properties-container","responses":{"204":{"description":"Deleted"}},"tags":["Controller distributed-datastore-provider"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - distributed-datastore-provider - data-store-properties-container","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/distributed-datastore-provider_data-store-properties-container"}},"application/json":{"schema":{"properties":{"data-store-properties-container":{"$ref":"#/components/schemas/distributed-datastore-provider_data-store-properties-container","type":"object"}}}}}}},"tags":["Controller distributed-datastore-provider"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/flow-capable-transaction:send-barrier":{"post":{"description":"barrier request","summary":"POST - Controller - flow-capable-transaction - send-barrier","requestBody":{"description":"send-barrier_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/flow-capable-transaction_send-barrier_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/flow-capable-transaction_send-barrier_input"}}}},"responses":{"204":{"description":"RPC send-barrier success"}},"tags":["Controller flow-capable-transaction"],"parameters":[]}},"/rests/operations/flow-topology-discovery:solicit-refresh":{"post":{"description":"","summary":"POST - Controller - flow-topology-discovery - solicit-refresh","requestBody":{"description":"solicit-refresh_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:flow:topology:discovery"},"type":"object"}}}},"responses":{"204":{"description":"RPC solicit-refresh success"}},"tags":["Controller flow-topology-discovery"],"parameters":[]}},"/rests/data/forwarding-rules-manager-config:forwarding-rules-manager-config":{"put":{"description":"","summary":"PUT - forwarding-rules-manager-config - Controller - forwarding-rules-manager-config","requestBody":{"description":"forwarding-rules-manager-config","content":{"application/json":{"schema":{"properties":{"forwarding-rules-manager-config:forwarding-rules-manager-config":{"$ref":"#/components/schemas/forwarding-rules-manager-config_forwarding-rules-manager-config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/forwarding-rules-manager-config_forwarding-rules-manager-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller forwarding-rules-manager-config"],"parameters":[]},"patch":{"description":"","summary":"PATCH - forwarding-rules-manager-config - Controller - forwarding-rules-manager-config","requestBody":{"description":"forwarding-rules-manager-config","content":{"application/yang-data+json":{"schema":{"properties":{"forwarding-rules-manager-config:forwarding-rules-manager-config":{"$ref":"#/components/schemas/forwarding-rules-manager-config_forwarding-rules-manager-config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/forwarding-rules-manager-config_forwarding-rules-manager-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller forwarding-rules-manager-config"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - forwarding-rules-manager-config - forwarding-rules-manager-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller forwarding-rules-manager-config"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - forwarding-rules-manager-config - forwarding-rules-manager-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/forwarding-rules-manager-config_forwarding-rules-manager-config"}},"application/json":{"schema":{"properties":{"forwarding-rules-manager-config":{"$ref":"#/components/schemas/forwarding-rules-manager-config_forwarding-rules-manager-config","type":"object"}}}}}}},"tags":["Controller forwarding-rules-manager-config"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/frm-reconciliation:reconcile-node":{"post":{"description":"Executes reconciliation between the controller and node","summary":"POST - Controller - frm-reconciliation - reconcile-node","requestBody":{"description":"reconcile-node_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/frm-reconciliation_reconcile-node_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/frm-reconciliation_reconcile-node_input"}}}},"responses":{"200":{"description":"RPC reconcile-node success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/frm-reconciliation_reconcile-node_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/frm-reconciliation_reconcile-node_output"}}}}},"tags":["Controller frm-reconciliation"],"parameters":[]}},"/rests/data/graph:graph-topology":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - graph - graph-topology","requestBody":{"description":"graph","content":{"application/json":{"schema":{"properties":{"graph":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller graph"],"parameters":[]},"put":{"description":"","summary":"PUT - graph - Controller - graph-topology","requestBody":{"description":"graph-topology","content":{"application/json":{"schema":{"properties":{"graph:graph-topology":{"$ref":"#/components/schemas/graph_graph-topology","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[]},"patch":{"description":"","summary":"PATCH - graph - Controller - graph-topology","requestBody":{"description":"graph-topology","content":{"application/yang-data+json":{"schema":{"properties":{"graph:graph-topology":{"$ref":"#/components/schemas/graph_graph-topology","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - graph - graph-topology","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - graph - graph-topology","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology"}},"application/json":{"schema":{"properties":{"graph-topology":{"$ref":"#/components/schemas/graph_graph-topology","type":"object"}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}":{"put":{"description":"Graph representation of the Network Topology","summary":"PUT - graph - Controller - graph","requestBody":{"description":"graph","content":{"application/json":{"schema":{"properties":{"graph:graph":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Graph representation of the Network Topology","summary":"PATCH - graph - Controller - graph","requestBody":{"description":"graph","content":{"application/yang-data+json":{"schema":{"properties":{"graph:graph":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Graph representation of the Network Topology","summary":"DELETE - Controller - graph - graph","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Graph representation of the Network Topology","summary":"GET - Controller - graph - graph","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph"}},"application/json":{"schema":{"properties":{"graph":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph","type":"object"}}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/vertex={vertex-id}":{"put":{"description":"The list of Vertices defined for the Graph.","summary":"PUT - graph - Controller - vertex","requestBody":{"description":"vertex","content":{"application/json":{"schema":{"properties":{"graph:vertex":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"patch":{"description":"The list of Vertices defined for the Graph.","summary":"PATCH - graph - Controller - vertex","requestBody":{"description":"vertex","content":{"application/yang-data+json":{"schema":{"properties":{"graph:vertex":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"delete":{"description":"The list of Vertices defined for the Graph.","summary":"DELETE - Controller - graph - vertex","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"get":{"description":"The list of Vertices defined for the Graph.","summary":"GET - Controller - graph - vertex","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex"}},"application/json":{"schema":{"properties":{"vertex":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex","type":"object"}}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/vertex={vertex-id}/sr-node-attributes":{"post":{"description":"Vertex Segment Routing information\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - graph - sr-node-attributes","requestBody":{"description":"srgb","content":{"application/json":{"schema":{"properties":{"srgb":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srgb","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srgb"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"put":{"description":"Vertex Segment Routing information","summary":"PUT - graph - Controller - sr-node-attributes","requestBody":{"description":"sr-node-attributes","content":{"application/json":{"schema":{"properties":{"graph:sr-node-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"patch":{"description":"Vertex Segment Routing information","summary":"PATCH - graph - Controller - sr-node-attributes","requestBody":{"description":"sr-node-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"graph:sr-node-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"delete":{"description":"Vertex Segment Routing information","summary":"DELETE - Controller - graph - sr-node-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"get":{"description":"Vertex Segment Routing information","summary":"GET - Controller - graph - sr-node-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes"}},"application/json":{"schema":{"properties":{"sr-node-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes","type":"object"}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/vertex={vertex-id}/sr-node-attributes/srgb":{"put":{"description":"List of Segment Routing Global Block: lower-bound + range-size","summary":"PUT - graph - Controller - srgb","requestBody":{"description":"srgb","content":{"application/json":{"schema":{"properties":{"graph:srgb":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srgb","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srgb"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"patch":{"description":"List of Segment Routing Global Block: lower-bound + range-size","summary":"PATCH - graph - Controller - srgb","requestBody":{"description":"srgb","content":{"application/yang-data+json":{"schema":{"properties":{"graph:srgb":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srgb","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srgb"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"delete":{"description":"List of Segment Routing Global Block: lower-bound + range-size","summary":"DELETE - Controller - graph - srgb","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"get":{"description":"List of Segment Routing Global Block: lower-bound + range-size","summary":"GET - Controller - graph - srgb","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srgb"}},"application/json":{"schema":{"properties":{"srgb":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srgb","type":"object"}}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/vertex={vertex-id}/sr-node-attributes/srlb":{"put":{"description":"List of Segment Routing Local Block: lower-bound + range-size","summary":"PUT - graph - Controller - srlb","requestBody":{"description":"srlb","content":{"application/json":{"schema":{"properties":{"graph:srlb":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srlb","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srlb"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"patch":{"description":"List of Segment Routing Local Block: lower-bound + range-size","summary":"PATCH - graph - Controller - srlb","requestBody":{"description":"srlb","content":{"application/yang-data+json":{"schema":{"properties":{"graph:srlb":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srlb","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srlb"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"delete":{"description":"List of Segment Routing Local Block: lower-bound + range-size","summary":"DELETE - Controller - graph - srlb","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"get":{"description":"List of Segment Routing Local Block: lower-bound + range-size","summary":"GET - Controller - graph - srlb","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srlb"}},"application/json":{"schema":{"properties":{"srlb":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srlb","type":"object"}}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/vertex={vertex-id}/sr-node-attributes/node-msd":{"put":{"description":"","summary":"PUT - graph - Controller - node-msd","requestBody":{"description":"node-msd","content":{"application/json":{"schema":{"properties":{"graph:node-msd":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_node-msd","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_node-msd"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"patch":{"description":"","summary":"PATCH - graph - Controller - node-msd","requestBody":{"description":"node-msd","content":{"application/yang-data+json":{"schema":{"properties":{"graph:node-msd":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_node-msd","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_node-msd"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"delete":{"description":"","summary":"DELETE - Controller - graph - node-msd","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"get":{"description":"","summary":"GET - Controller - graph - node-msd","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_node-msd"}},"application/json":{"schema":{"properties":{"node-msd":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_node-msd","type":"object"}}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/vertex={vertex-id}/sr-node-attributes/flex-algo":{"put":{"description":"Supported Flex Algorithms","summary":"PUT - graph - Controller - flex-algo","requestBody":{"description":"flex-algo","content":{"application/json":{"schema":{"properties":{"graph:flex-algo":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_flex-algo","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_flex-algo"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"patch":{"description":"Supported Flex Algorithms","summary":"PATCH - graph - Controller - flex-algo","requestBody":{"description":"flex-algo","content":{"application/yang-data+json":{"schema":{"properties":{"graph:flex-algo":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_flex-algo","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_flex-algo"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"delete":{"description":"Supported Flex Algorithms","summary":"DELETE - Controller - graph - flex-algo","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"}]},"get":{"description":"Supported Flex Algorithms","summary":"GET - Controller - graph - flex-algo","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_flex-algo"}},"application/json":{"schema":{"properties":{"flex-algo":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_flex-algo","type":"object"}}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"vertex-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of the Vertex"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/edge={edge-id}":{"put":{"description":"The list of Edges defined for the Graph.","summary":"PUT - graph - Controller - edge","requestBody":{"description":"edge","content":{"application/json":{"schema":{"properties":{"graph:edge":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"The list of Edges defined for the Graph.","summary":"PATCH - graph - Controller - edge","requestBody":{"description":"edge","content":{"application/yang-data+json":{"schema":{"properties":{"graph:edge":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"The list of Edges defined for the Graph.","summary":"DELETE - Controller - graph - edge","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"The list of Edges defined for the Graph.","summary":"GET - Controller - graph - edge","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge"}},"application/json":{"schema":{"properties":{"edge":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge","type":"object"}}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/edge={edge-id}/edge-attributes":{"post":{"description":"All attributes associated to the Edge\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - graph - edge-attributes","requestBody":{"description":"te-metric","content":{"application/json":{"schema":{"properties":{"te-metric":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"put":{"description":"All attributes associated to the Edge","summary":"PUT - graph - Controller - edge-attributes","requestBody":{"description":"edge-attributes","content":{"application/json":{"schema":{"properties":{"graph:edge-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"All attributes associated to the Edge","summary":"PATCH - graph - Controller - edge-attributes","requestBody":{"description":"edge-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"graph:edge-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"All attributes associated to the Edge","summary":"DELETE - Controller - graph - edge-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"All attributes associated to the Edge","summary":"GET - Controller - graph - edge-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes"}},"application/json":{"schema":{"properties":{"edge-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes","type":"object"}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/edge={edge-id}/edge-attributes/te-metric":{"post":{"description":"Standard Traffic Engineering Metrics\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - graph - te-metric","requestBody":{"description":"unreserved-bandwidth","content":{"application/json":{"schema":{"properties":{"unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric_unreserved-bandwidth","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric_unreserved-bandwidth"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"put":{"description":"Standard Traffic Engineering Metrics","summary":"PUT - graph - Controller - te-metric","requestBody":{"description":"te-metric","content":{"application/json":{"schema":{"properties":{"graph:te-metric":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"Standard Traffic Engineering Metrics","summary":"PATCH - graph - Controller - te-metric","requestBody":{"description":"te-metric","content":{"application/yang-data+json":{"schema":{"properties":{"graph:te-metric":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"Standard Traffic Engineering Metrics","summary":"DELETE - Controller - graph - te-metric","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"Standard Traffic Engineering Metrics","summary":"GET - Controller - graph - te-metric","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric"}},"application/json":{"schema":{"properties":{"te-metric":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric","type":"object"}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/edge={edge-id}/edge-attributes/te-metric/unreserved-bandwidth={class-type}":{"put":{"description":"Unreserved bandwidth for 0-7 class type","summary":"PUT - graph - Controller - unreserved-bandwidth","requestBody":{"description":"unreserved-bandwidth","content":{"application/json":{"schema":{"properties":{"graph:unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric_unreserved-bandwidth","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric_unreserved-bandwidth"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"class-type","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"Unreserved bandwidth for 0-7 class type","summary":"PATCH - graph - Controller - unreserved-bandwidth","requestBody":{"description":"unreserved-bandwidth","content":{"application/yang-data+json":{"schema":{"properties":{"graph:unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric_unreserved-bandwidth","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric_unreserved-bandwidth"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"class-type","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"Unreserved bandwidth for 0-7 class type","summary":"DELETE - Controller - graph - unreserved-bandwidth","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"class-type","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"Unreserved bandwidth for 0-7 class type","summary":"GET - Controller - graph - unreserved-bandwidth","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric_unreserved-bandwidth"}},"application/json":{"schema":{"properties":{"unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric_unreserved-bandwidth","type":"object"}}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"class-type","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/edge={edge-id}/edge-attributes/extended-metric":{"post":{"description":"Performance (Extended) Metrics\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - graph - extended-metric","requestBody":{"description":"min-max-delay","content":{"application/json":{"schema":{"properties":{"min-max-delay":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric_min-max-delay","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric_min-max-delay"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"put":{"description":"Performance (Extended) Metrics","summary":"PUT - graph - Controller - extended-metric","requestBody":{"description":"extended-metric","content":{"application/json":{"schema":{"properties":{"graph:extended-metric":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"Performance (Extended) Metrics","summary":"PATCH - graph - Controller - extended-metric","requestBody":{"description":"extended-metric","content":{"application/yang-data+json":{"schema":{"properties":{"graph:extended-metric":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"Performance (Extended) Metrics","summary":"DELETE - Controller - graph - extended-metric","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"Performance (Extended) Metrics","summary":"GET - Controller - graph - extended-metric","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric"}},"application/json":{"schema":{"properties":{"extended-metric":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric","type":"object"}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/edge={edge-id}/edge-attributes/extended-metric/min-max-delay":{"put":{"description":"Min/Max Unidirectional Delay","summary":"PUT - graph - Controller - min-max-delay","requestBody":{"description":"min-max-delay","content":{"application/json":{"schema":{"properties":{"graph:min-max-delay":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric_min-max-delay","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric_min-max-delay"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"Min/Max Unidirectional Delay","summary":"PATCH - graph - Controller - min-max-delay","requestBody":{"description":"min-max-delay","content":{"application/yang-data+json":{"schema":{"properties":{"graph:min-max-delay":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric_min-max-delay","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric_min-max-delay"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"Min/Max Unidirectional Delay","summary":"DELETE - Controller - graph - min-max-delay","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"Min/Max Unidirectional Delay","summary":"GET - Controller - graph - min-max-delay","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric_min-max-delay"}},"application/json":{"schema":{"properties":{"min-max-delay":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric_min-max-delay","type":"object"}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/edge={edge-id}/edge-attributes/sr-link-attributes":{"post":{"description":"Segment Routing information of the Link\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - graph - sr-link-attributes","requestBody":{"description":"link-msd","content":{"application/json":{"schema":{"properties":{"link-msd":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes_link-msd","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes_link-msd"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"put":{"description":"Segment Routing information of the Link","summary":"PUT - graph - Controller - sr-link-attributes","requestBody":{"description":"sr-link-attributes","content":{"application/json":{"schema":{"properties":{"graph:sr-link-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"Segment Routing information of the Link","summary":"PATCH - graph - Controller - sr-link-attributes","requestBody":{"description":"sr-link-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"graph:sr-link-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"Segment Routing information of the Link","summary":"DELETE - Controller - graph - sr-link-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"Segment Routing information of the Link","summary":"GET - Controller - graph - sr-link-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes"}},"application/json":{"schema":{"properties":{"sr-link-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes","type":"object"}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/edge={edge-id}/edge-attributes/sr-link-attributes/link-msd":{"put":{"description":"","summary":"PUT - graph - Controller - link-msd","requestBody":{"description":"link-msd","content":{"application/json":{"schema":{"properties":{"graph:link-msd":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes_link-msd","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes_link-msd"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - graph - Controller - link-msd","requestBody":{"description":"link-msd","content":{"application/yang-data+json":{"schema":{"properties":{"graph:link-msd":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes_link-msd","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes_link-msd"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - graph - link-msd","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - graph - link-msd","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes_link-msd"}},"application/json":{"schema":{"properties":{"link-msd":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes_link-msd","type":"object"}}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/edge={edge-id}/edge-attributes/egress-peer-engineering":{"put":{"description":"Egress Peer Engineering (EPE) SID","summary":"PUT - graph - Controller - egress-peer-engineering","requestBody":{"description":"egress-peer-engineering","content":{"application/json":{"schema":{"properties":{"graph:egress-peer-engineering":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_egress-peer-engineering","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_egress-peer-engineering"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"Egress Peer Engineering (EPE) SID","summary":"PATCH - graph - Controller - egress-peer-engineering","requestBody":{"description":"egress-peer-engineering","content":{"application/yang-data+json":{"schema":{"properties":{"graph:egress-peer-engineering":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_egress-peer-engineering","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_egress-peer-engineering"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"Egress Peer Engineering (EPE) SID","summary":"DELETE - Controller - graph - egress-peer-engineering","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"Egress Peer Engineering (EPE) SID","summary":"GET - Controller - graph - egress-peer-engineering","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_egress-peer-engineering"}},"application/json":{"schema":{"properties":{"egress-peer-engineering":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_egress-peer-engineering","type":"object"}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/edge={edge-id}/edge-attributes/asla-metric":{"post":{"description":"Application Specific Link Attributes\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - graph - asla-metric","requestBody":{"description":"applications","content":{"application/json":{"schema":{"properties":{"applications":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_applications","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_applications"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"put":{"description":"Application Specific Link Attributes","summary":"PUT - graph - Controller - asla-metric","requestBody":{"description":"asla-metric","content":{"application/json":{"schema":{"properties":{"graph:asla-metric":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"Application Specific Link Attributes","summary":"PATCH - graph - Controller - asla-metric","requestBody":{"description":"asla-metric","content":{"application/yang-data+json":{"schema":{"properties":{"graph:asla-metric":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"Application Specific Link Attributes","summary":"DELETE - Controller - graph - asla-metric","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"Application Specific Link Attributes","summary":"GET - Controller - graph - asla-metric","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric"}},"application/json":{"schema":{"properties":{"asla-metric":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric","type":"object"}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/edge={edge-id}/edge-attributes/asla-metric/applications":{"put":{"description":"","summary":"PUT - graph - Controller - applications","requestBody":{"description":"applications","content":{"application/json":{"schema":{"properties":{"graph:applications":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_applications","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_applications"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - graph - Controller - applications","requestBody":{"description":"applications","content":{"application/yang-data+json":{"schema":{"properties":{"graph:applications":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_applications","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_applications"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - graph - applications","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - graph - applications","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_applications"}},"application/json":{"schema":{"properties":{"applications":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_applications","type":"object"}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/edge={edge-id}/edge-attributes/asla-metric/min-max-delay":{"put":{"description":"Min/Max Unidirectional Delay","summary":"PUT - graph - Controller - min-max-delay","requestBody":{"description":"min-max-delay","content":{"application/json":{"schema":{"properties":{"graph:min-max-delay":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_min-max-delay","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_min-max-delay"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"Min/Max Unidirectional Delay","summary":"PATCH - graph - Controller - min-max-delay","requestBody":{"description":"min-max-delay","content":{"application/yang-data+json":{"schema":{"properties":{"graph:min-max-delay":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_min-max-delay","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_min-max-delay"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"Min/Max Unidirectional Delay","summary":"DELETE - Controller - graph - min-max-delay","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"Min/Max Unidirectional Delay","summary":"GET - Controller - graph - min-max-delay","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_min-max-delay"}},"application/json":{"schema":{"properties":{"min-max-delay":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_min-max-delay","type":"object"}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"edge-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/prefix={prefix}":{"put":{"description":"The list of prefixes for the Graph.","summary":"PUT - graph - Controller - prefix","requestBody":{"description":"prefix","content":{"application/json":{"schema":{"properties":{"graph:prefix":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."}]},"patch":{"description":"The list of prefixes for the Graph.","summary":"PATCH - graph - Controller - prefix","requestBody":{"description":"prefix","content":{"application/yang-data+json":{"schema":{"properties":{"graph:prefix":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."}]},"delete":{"description":"The list of prefixes for the Graph.","summary":"DELETE - Controller - graph - prefix","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."}]},"get":{"description":"The list of prefixes for the Graph.","summary":"GET - Controller - graph - prefix","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix"}},"application/json":{"schema":{"properties":{"prefix":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix","type":"object"}}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/prefix={prefix}/sr-prefix-attributes":{"post":{"description":"Prefix Segment Routing information\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - graph - sr-prefix-attributes","requestBody":{"description":"prefix-sr-flags","content":{"application/json":{"schema":{"properties":{"prefix-sr-flags":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-sr-flags","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-sr-flags"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."}]},"put":{"description":"Prefix Segment Routing information","summary":"PUT - graph - Controller - sr-prefix-attributes","requestBody":{"description":"sr-prefix-attributes","content":{"application/json":{"schema":{"properties":{"graph:sr-prefix-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."}]},"patch":{"description":"Prefix Segment Routing information","summary":"PATCH - graph - Controller - sr-prefix-attributes","requestBody":{"description":"sr-prefix-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"graph:sr-prefix-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."}]},"delete":{"description":"Prefix Segment Routing information","summary":"DELETE - Controller - graph - sr-prefix-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."}]},"get":{"description":"Prefix Segment Routing information","summary":"GET - Controller - graph - sr-prefix-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes"}},"application/json":{"schema":{"properties":{"sr-prefix-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes","type":"object"}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/prefix={prefix}/sr-prefix-attributes/prefix-sr-flags":{"put":{"description":"","summary":"PUT - graph - Controller - prefix-sr-flags","requestBody":{"description":"prefix-sr-flags","content":{"application/json":{"schema":{"properties":{"graph:prefix-sr-flags":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-sr-flags","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-sr-flags"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."}]},"patch":{"description":"","summary":"PATCH - graph - Controller - prefix-sr-flags","requestBody":{"description":"prefix-sr-flags","content":{"application/yang-data+json":{"schema":{"properties":{"graph:prefix-sr-flags":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-sr-flags","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-sr-flags"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."}]},"delete":{"description":"","summary":"DELETE - Controller - graph - prefix-sr-flags","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."}]},"get":{"description":"","summary":"GET - Controller - graph - prefix-sr-flags","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-sr-flags"}},"application/json":{"schema":{"properties":{"prefix-sr-flags":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-sr-flags","type":"object"}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/graph:graph-topology/graph={name}/prefix={prefix}/sr-prefix-attributes/prefix-flex-algo":{"put":{"description":"Flexible Algorithm","summary":"PUT - graph - Controller - prefix-flex-algo","requestBody":{"description":"prefix-flex-algo","content":{"application/json":{"schema":{"properties":{"graph:prefix-flex-algo":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-flex-algo","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-flex-algo"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."}]},"patch":{"description":"Flexible Algorithm","summary":"PATCH - graph - Controller - prefix-flex-algo","requestBody":{"description":"prefix-flex-algo","content":{"application/yang-data+json":{"schema":{"properties":{"graph:prefix-flex-algo":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-flex-algo","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-flex-algo"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."}]},"delete":{"description":"Flexible Algorithm","summary":"DELETE - Controller - graph - prefix-flex-algo","responses":{"204":{"description":"Deleted"}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."}]},"get":{"description":"Flexible Algorithm","summary":"GET - Controller - graph - prefix-flex-algo","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-flex-algo"}},"application/json":{"schema":{"properties":{"prefix-flex-algo":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-flex-algo","type":"object"}}}}}}},"tags":["Controller graph"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"IP (v4 or v6) Prefix."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces":{"post":{"description":"Interface parameters.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-interfaces - interfaces","requestBody":{"description":"interface","content":{"application/json":{"schema":{"properties":{"interface":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-interfaces"],"parameters":[]},"put":{"description":"Interface parameters.","summary":"PUT - ietf-interfaces - Controller - interfaces","requestBody":{"description":"interfaces","content":{"application/json":{"schema":{"properties":{"ietf-interfaces:interfaces":{"$ref":"#/components/schemas/ietf-interfaces_interfaces","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[]},"patch":{"description":"Interface parameters.","summary":"PATCH - ietf-interfaces - Controller - interfaces","requestBody":{"description":"interfaces","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-interfaces:interfaces":{"$ref":"#/components/schemas/ietf-interfaces_interfaces","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[]},"delete":{"description":"Interface parameters.","summary":"DELETE - Controller - ietf-interfaces - interfaces","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-interfaces"],"parameters":[]},"get":{"description":"Interface parameters.","summary":"GET - Controller - ietf-interfaces - interfaces","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces"}},"application/json":{"schema":{"properties":{"interfaces":{"$ref":"#/components/schemas/ietf-interfaces_interfaces","type":"object"}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces/interface={name}":{"put":{"description":"The list of interfaces on the device.\n\nThe status of an interface is available in this list in the\noperational state.  If the configuration of a\nsystem-controlled interface cannot be used by the system\n(e.g., the interface hardware present does not match the\ninterface type), then the configuration is not applied to\nthe system-controlled interface shown in the operational\nstate.  If the configuration of a user-controlled interface\ncannot be used by the system, the configured interface is\nnot instantiated in the operational state.\n\nSystem-controlled interfaces created by the system are\nalways present in this list in the operational state,\nwhether or not they are configured.","summary":"PUT - ietf-interfaces - Controller - interface","requestBody":{"description":"interface","content":{"application/json":{"schema":{"properties":{"ietf-interfaces:interface":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."}]},"patch":{"description":"The list of interfaces on the device.\n\nThe status of an interface is available in this list in the\noperational state.  If the configuration of a\nsystem-controlled interface cannot be used by the system\n(e.g., the interface hardware present does not match the\ninterface type), then the configuration is not applied to\nthe system-controlled interface shown in the operational\nstate.  If the configuration of a user-controlled interface\ncannot be used by the system, the configured interface is\nnot instantiated in the operational state.\n\nSystem-controlled interfaces created by the system are\nalways present in this list in the operational state,\nwhether or not they are configured.","summary":"PATCH - ietf-interfaces - Controller - interface","requestBody":{"description":"interface","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-interfaces:interface":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."}]},"delete":{"description":"The list of interfaces on the device.\n\nThe status of an interface is available in this list in the\noperational state.  If the configuration of a\nsystem-controlled interface cannot be used by the system\n(e.g., the interface hardware present does not match the\ninterface type), then the configuration is not applied to\nthe system-controlled interface shown in the operational\nstate.  If the configuration of a user-controlled interface\ncannot be used by the system, the configured interface is\nnot instantiated in the operational state.\n\nSystem-controlled interfaces created by the system are\nalways present in this list in the operational state,\nwhether or not they are configured.","summary":"DELETE - Controller - ietf-interfaces - interface","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."}]},"get":{"description":"The list of interfaces on the device.\n\nThe status of an interface is available in this list in the\noperational state.  If the configuration of a\nsystem-controlled interface cannot be used by the system\n(e.g., the interface hardware present does not match the\ninterface type), then the configuration is not applied to\nthe system-controlled interface shown in the operational\nstate.  If the configuration of a user-controlled interface\ncannot be used by the system, the configured interface is\nnot instantiated in the operational state.\n\nSystem-controlled interfaces created by the system are\nalways present in this list in the operational state,\nwhether or not they are configured.","summary":"GET - Controller - ietf-interfaces - interface","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface"}},"application/json":{"schema":{"properties":{"interface":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface","type":"object"}}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces/interface={name}/statistics":{"get":{"description":"A collection of interface-related statistics objects.","summary":"GET - Controller - ietf-interfaces - statistics","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_statistics"}},"application/json":{"schema":{"properties":{"statistics":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_statistics","type":"object"}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces/interface={name}/ietf-ip:ipv4":{"post":{"description":"Parameters for the IPv4 address family.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-interfaces - ipv4","requestBody":{"description":"address","content":{"application/json":{"schema":{"properties":{"address":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_address","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_address"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."}]},"put":{"description":"Parameters for the IPv4 address family.","summary":"PUT - ietf-interfaces - Controller - ipv4","requestBody":{"description":"ipv4","content":{"application/json":{"schema":{"properties":{"ietf-ip:ipv4":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."}]},"patch":{"description":"Parameters for the IPv4 address family.","summary":"PATCH - ietf-interfaces - Controller - ipv4","requestBody":{"description":"ipv4","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-ip:ipv4":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."}]},"delete":{"description":"Parameters for the IPv4 address family.","summary":"DELETE - Controller - ietf-interfaces - ipv4","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."}]},"get":{"description":"Parameters for the IPv4 address family.","summary":"GET - Controller - ietf-interfaces - ipv4","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4"}},"application/json":{"schema":{"properties":{"ipv4":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4","type":"object"}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces/interface={name}/ietf-ip:ipv4/address={ip}":{"put":{"description":"The list of IPv4 addresses on the interface.","summary":"PUT - ietf-interfaces - Controller - address","requestBody":{"description":"address","content":{"application/json":{"schema":{"properties":{"ietf-ip:address":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_address","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_address"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv4 address on the interface."}]},"patch":{"description":"The list of IPv4 addresses on the interface.","summary":"PATCH - ietf-interfaces - Controller - address","requestBody":{"description":"address","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-ip:address":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_address","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_address"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv4 address on the interface."}]},"delete":{"description":"The list of IPv4 addresses on the interface.","summary":"DELETE - Controller - ietf-interfaces - address","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv4 address on the interface."}]},"get":{"description":"The list of IPv4 addresses on the interface.","summary":"GET - Controller - ietf-interfaces - address","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_address"}},"application/json":{"schema":{"properties":{"address":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_address","type":"object"}}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv4 address on the interface."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces/interface={name}/ietf-ip:ipv4/neighbor={ip}":{"put":{"description":"A list of mappings from IPv4 addresses to\nlink-layer addresses.\n\nEntries in this list in the intended configuration are\nused as static entries in the ARP Cache.\n\nIn the operational state, this list represents the ARP\nCache.","summary":"PUT - ietf-interfaces - Controller - neighbor","requestBody":{"description":"neighbor","content":{"application/json":{"schema":{"properties":{"ietf-ip:neighbor":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_neighbor","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_neighbor"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv4 address of the neighbor node."}]},"patch":{"description":"A list of mappings from IPv4 addresses to\nlink-layer addresses.\n\nEntries in this list in the intended configuration are\nused as static entries in the ARP Cache.\n\nIn the operational state, this list represents the ARP\nCache.","summary":"PATCH - ietf-interfaces - Controller - neighbor","requestBody":{"description":"neighbor","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-ip:neighbor":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_neighbor","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_neighbor"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv4 address of the neighbor node."}]},"delete":{"description":"A list of mappings from IPv4 addresses to\nlink-layer addresses.\n\nEntries in this list in the intended configuration are\nused as static entries in the ARP Cache.\n\nIn the operational state, this list represents the ARP\nCache.","summary":"DELETE - Controller - ietf-interfaces - neighbor","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv4 address of the neighbor node."}]},"get":{"description":"A list of mappings from IPv4 addresses to\nlink-layer addresses.\n\nEntries in this list in the intended configuration are\nused as static entries in the ARP Cache.\n\nIn the operational state, this list represents the ARP\nCache.","summary":"GET - Controller - ietf-interfaces - neighbor","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_neighbor"}},"application/json":{"schema":{"properties":{"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_neighbor","type":"object"}}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv4 address of the neighbor node."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces/interface={name}/ietf-ip:ipv6":{"post":{"description":"Parameters for the IPv6 address family.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-interfaces - ipv6","requestBody":{"description":"address","content":{"application/json":{"schema":{"properties":{"address":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_address","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_address"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."}]},"put":{"description":"Parameters for the IPv6 address family.","summary":"PUT - ietf-interfaces - Controller - ipv6","requestBody":{"description":"ipv6","content":{"application/json":{"schema":{"properties":{"ietf-ip:ipv6":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."}]},"patch":{"description":"Parameters for the IPv6 address family.","summary":"PATCH - ietf-interfaces - Controller - ipv6","requestBody":{"description":"ipv6","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-ip:ipv6":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."}]},"delete":{"description":"Parameters for the IPv6 address family.","summary":"DELETE - Controller - ietf-interfaces - ipv6","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."}]},"get":{"description":"Parameters for the IPv6 address family.","summary":"GET - Controller - ietf-interfaces - ipv6","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6"}},"application/json":{"schema":{"properties":{"ipv6":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6","type":"object"}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces/interface={name}/ietf-ip:ipv6/address={ip}":{"put":{"description":"The list of IPv6 addresses on the interface.","summary":"PUT - ietf-interfaces - Controller - address","requestBody":{"description":"address","content":{"application/json":{"schema":{"properties":{"ietf-ip:address":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_address","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_address"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv6 address on the interface."}]},"patch":{"description":"The list of IPv6 addresses on the interface.","summary":"PATCH - ietf-interfaces - Controller - address","requestBody":{"description":"address","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-ip:address":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_address","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_address"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv6 address on the interface."}]},"delete":{"description":"The list of IPv6 addresses on the interface.","summary":"DELETE - Controller - ietf-interfaces - address","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv6 address on the interface."}]},"get":{"description":"The list of IPv6 addresses on the interface.","summary":"GET - Controller - ietf-interfaces - address","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_address"}},"application/json":{"schema":{"properties":{"address":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_address","type":"object"}}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv6 address on the interface."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces/interface={name}/ietf-ip:ipv6/neighbor={ip}":{"put":{"description":"A list of mappings from IPv6 addresses to\nlink-layer addresses.\n\nEntries in this list in the intended configuration are\nused as static entries in the Neighbor Cache.\n\nIn the operational state, this list represents the\nNeighbor Cache.","summary":"PUT - ietf-interfaces - Controller - neighbor","requestBody":{"description":"neighbor","content":{"application/json":{"schema":{"properties":{"ietf-ip:neighbor":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_neighbor","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_neighbor"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv6 address of the neighbor node."}]},"patch":{"description":"A list of mappings from IPv6 addresses to\nlink-layer addresses.\n\nEntries in this list in the intended configuration are\nused as static entries in the Neighbor Cache.\n\nIn the operational state, this list represents the\nNeighbor Cache.","summary":"PATCH - ietf-interfaces - Controller - neighbor","requestBody":{"description":"neighbor","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-ip:neighbor":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_neighbor","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_neighbor"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv6 address of the neighbor node."}]},"delete":{"description":"A list of mappings from IPv6 addresses to\nlink-layer addresses.\n\nEntries in this list in the intended configuration are\nused as static entries in the Neighbor Cache.\n\nIn the operational state, this list represents the\nNeighbor Cache.","summary":"DELETE - Controller - ietf-interfaces - neighbor","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv6 address of the neighbor node."}]},"get":{"description":"A list of mappings from IPv6 addresses to\nlink-layer addresses.\n\nEntries in this list in the intended configuration are\nused as static entries in the Neighbor Cache.\n\nIn the operational state, this list represents the\nNeighbor Cache.","summary":"GET - Controller - ietf-interfaces - neighbor","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_neighbor"}},"application/json":{"schema":{"properties":{"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_neighbor","type":"object"}}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv6 address of the neighbor node."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces/interface={name}/ietf-ip:ipv6/autoconf":{"put":{"description":"Parameters to control the autoconfiguration of IPv6\naddresses, as described in RFC 4862.","summary":"PUT - ietf-interfaces - Controller - autoconf","requestBody":{"description":"autoconf","content":{"application/json":{"schema":{"properties":{"ietf-ip:autoconf":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_autoconf","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_autoconf"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."}]},"patch":{"description":"Parameters to control the autoconfiguration of IPv6\naddresses, as described in RFC 4862.","summary":"PATCH - ietf-interfaces - Controller - autoconf","requestBody":{"description":"autoconf","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-ip:autoconf":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_autoconf","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_autoconf"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."}]},"delete":{"description":"Parameters to control the autoconfiguration of IPv6\naddresses, as described in RFC 4862.","summary":"DELETE - Controller - ietf-interfaces - autoconf","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."}]},"get":{"description":"Parameters to control the autoconfiguration of IPv6\naddresses, as described in RFC 4862.","summary":"GET - Controller - ietf-interfaces - autoconf","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_autoconf"}},"application/json":{"schema":{"properties":{"autoconf":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_autoconf","type":"object"}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces-state":{"get":{"description":"Data nodes for the operational state of interfaces.","summary":"GET - Controller - ietf-interfaces - interfaces-state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state"}},"application/json":{"schema":{"properties":{"interfaces-state":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state","type":"object"}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces-state/interface={name}":{"get":{"description":"The list of interfaces on the device.\n\nSystem-controlled interfaces created by the system are\nalways present in this list, whether or not they are\nconfigured.","summary":"GET - Controller - ietf-interfaces - interface","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface"}},"application/json":{"schema":{"properties":{"interface":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface","type":"object"}}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces-state/interface={name}/statistics":{"get":{"description":"A collection of interface-related statistics objects.","summary":"GET - Controller - ietf-interfaces - statistics","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_statistics"}},"application/json":{"schema":{"properties":{"statistics":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_statistics","type":"object"}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces-state/interface={name}/ietf-ip:ipv4":{"get":{"description":"Interface-specific parameters for the IPv4 address family.","summary":"GET - Controller - ietf-interfaces - ipv4","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv4"}},"application/json":{"schema":{"properties":{"ipv4":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv4","type":"object"}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces-state/interface={name}/ietf-ip:ipv4/address={ip}":{"get":{"description":"The list of IPv4 addresses on the interface.","summary":"GET - Controller - ietf-interfaces - address","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv4_address"}},"application/json":{"schema":{"properties":{"address":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv4_address","type":"object"}}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv4 address on the interface."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces-state/interface={name}/ietf-ip:ipv4/neighbor={ip}":{"get":{"description":"A list of mappings from IPv4 addresses to\nlink-layer addresses.\n\nThis list represents the ARP Cache.","summary":"GET - Controller - ietf-interfaces - neighbor","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv4_neighbor"}},"application/json":{"schema":{"properties":{"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv4_neighbor","type":"object"}}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv4 address of the neighbor node."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces-state/interface={name}/ietf-ip:ipv6":{"get":{"description":"Parameters for the IPv6 address family.","summary":"GET - Controller - ietf-interfaces - ipv6","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv6"}},"application/json":{"schema":{"properties":{"ipv6":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv6","type":"object"}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces-state/interface={name}/ietf-ip:ipv6/address={ip}":{"get":{"description":"The list of IPv6 addresses on the interface.","summary":"GET - Controller - ietf-interfaces - address","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv6_address"}},"application/json":{"schema":{"properties":{"address":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv6_address","type":"object"}}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv6 address on the interface."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-interfaces:interfaces-state/interface={name}/ietf-ip:ipv6/neighbor={ip}":{"get":{"description":"A list of mappings from IPv6 addresses to\nlink-layer addresses.\n\nThis list represents the Neighbor Cache.","summary":"GET - Controller - ietf-interfaces - neighbor","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv6_neighbor"}},"application/json":{"schema":{"properties":{"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv6_neighbor","type":"object"}}}}}}}},"tags":["Controller ietf-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the interface.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document."},{"name":"ip","in":"path","required":true,"schema":{"type":"string"},"description":"The IPv6 address of the neighbor node."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/ietf-netconf:get-config":{"post":{"description":"Retrieve all or part of a specified configuration.","summary":"POST - Controller - ietf-netconf - get-config","requestBody":{"description":"get-config_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-netconf_get-config_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf_get-config_input"}}}},"responses":{"200":{"description":"RPC get-config success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ietf-netconf_get-config_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf_get-config_output"}}}}},"tags":["Controller ietf-netconf"],"parameters":[]}},"/rests/operations/ietf-netconf:edit-config":{"post":{"description":"The &lt;edit-config&gt; operation loads all or part of a specified\nconfiguration to the specified target configuration.","summary":"POST - Controller - ietf-netconf - edit-config","requestBody":{"description":"edit-config_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-netconf_edit-config_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf_edit-config_input"}}}},"responses":{"204":{"description":"RPC edit-config success"}},"tags":["Controller ietf-netconf"],"parameters":[]}},"/rests/operations/ietf-netconf:copy-config":{"post":{"description":"Create or replace an entire configuration datastore with the\ncontents of another complete configuration datastore.","summary":"POST - Controller - ietf-netconf - copy-config","requestBody":{"description":"copy-config_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-netconf_copy-config_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf_copy-config_input"}}}},"responses":{"204":{"description":"RPC copy-config success"}},"tags":["Controller ietf-netconf"],"parameters":[]}},"/rests/operations/ietf-netconf:delete-config":{"post":{"description":"Delete a configuration datastore.","summary":"POST - Controller - ietf-netconf - delete-config","requestBody":{"description":"delete-config_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-netconf_delete-config_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf_delete-config_input"}}}},"responses":{"204":{"description":"RPC delete-config success"}},"tags":["Controller ietf-netconf"],"parameters":[]}},"/rests/operations/ietf-netconf:lock":{"post":{"description":"The lock operation allows the client to lock the configuration\nsystem of a device.","summary":"POST - Controller - ietf-netconf - lock","requestBody":{"description":"lock_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-netconf_lock_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf_lock_input"}}}},"responses":{"204":{"description":"RPC lock success"}},"tags":["Controller ietf-netconf"],"parameters":[]}},"/rests/operations/ietf-netconf:unlock":{"post":{"description":"The unlock operation is used to release a configuration lock,\npreviously obtained with the 'lock' operation.","summary":"POST - Controller - ietf-netconf - unlock","requestBody":{"description":"unlock_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-netconf_unlock_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf_unlock_input"}}}},"responses":{"204":{"description":"RPC unlock success"}},"tags":["Controller ietf-netconf"],"parameters":[]}},"/rests/operations/ietf-netconf:get":{"post":{"description":"Retrieve running configuration and device state information.","summary":"POST - Controller - ietf-netconf - get","requestBody":{"description":"get_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-netconf_get_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf_get_input"}}}},"responses":{"200":{"description":"RPC get success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ietf-netconf_get_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf_get_output"}}}}},"tags":["Controller ietf-netconf"],"parameters":[]}},"/rests/operations/ietf-netconf:close-session":{"post":{"description":"Request graceful termination of a NETCONF session.","summary":"POST - Controller - ietf-netconf - close-session","requestBody":{"description":"close-session_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"},"type":"object"}}}},"responses":{"204":{"description":"RPC close-session success"}},"tags":["Controller ietf-netconf"],"parameters":[]}},"/rests/operations/ietf-netconf:kill-session":{"post":{"description":"Force the termination of a NETCONF session.","summary":"POST - Controller - ietf-netconf - kill-session","requestBody":{"description":"kill-session_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-netconf_kill-session_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf_kill-session_input"}}}},"responses":{"204":{"description":"RPC kill-session success"}},"tags":["Controller ietf-netconf"],"parameters":[]}},"/rests/operations/ietf-netconf:commit":{"post":{"description":"Commit the candidate configuration as the device's new\ncurrent configuration.","summary":"POST - Controller - ietf-netconf - commit","requestBody":{"description":"commit_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-netconf_commit_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf_commit_input"}}}},"responses":{"204":{"description":"RPC commit success"}},"tags":["Controller ietf-netconf"],"parameters":[]}},"/rests/operations/ietf-netconf:discard-changes":{"post":{"description":"Revert the candidate configuration to the current\nrunning configuration.","summary":"POST - Controller - ietf-netconf - discard-changes","requestBody":{"description":"discard-changes_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"},"type":"object"}}}},"responses":{"204":{"description":"RPC discard-changes success"}},"tags":["Controller ietf-netconf"],"parameters":[]}},"/rests/operations/ietf-netconf:cancel-commit":{"post":{"description":"This operation is used to cancel an ongoing confirmed commit.\nIf the confirmed commit is persistent, the parameter\n'persist-id' must be given, and it must match the value of the\n'persist' parameter.","summary":"POST - Controller - ietf-netconf - cancel-commit","requestBody":{"description":"cancel-commit_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-netconf_cancel-commit_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf_cancel-commit_input"}}}},"responses":{"204":{"description":"RPC cancel-commit success"}},"tags":["Controller ietf-netconf"],"parameters":[]}},"/rests/operations/ietf-netconf:validate":{"post":{"description":"Validates the contents of the specified configuration.","summary":"POST - Controller - ietf-netconf - validate","requestBody":{"description":"validate_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-netconf_validate_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf_validate_input"}}}},"responses":{"204":{"description":"RPC validate success"}},"tags":["Controller ietf-netconf"],"parameters":[]}},"/rests/data/ietf-netconf-acm:nacm":{"post":{"description":"Parameters for NETCONF access control model.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-netconf-acm - nacm","requestBody":{"description":"groups","content":{"application/json":{"schema":{"properties":{"groups":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-netconf-acm"],"parameters":[]},"put":{"description":"Parameters for NETCONF access control model.","summary":"PUT - ietf-netconf-acm - Controller - nacm","requestBody":{"description":"nacm","content":{"application/json":{"schema":{"properties":{"ietf-netconf-acm:nacm":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-acm"],"parameters":[]},"patch":{"description":"Parameters for NETCONF access control model.","summary":"PATCH - ietf-netconf-acm - Controller - nacm","requestBody":{"description":"nacm","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-acm:nacm":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-acm"],"parameters":[]},"delete":{"description":"Parameters for NETCONF access control model.","summary":"DELETE - Controller - ietf-netconf-acm - nacm","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-acm"],"parameters":[]},"get":{"description":"Parameters for NETCONF access control model.","summary":"GET - Controller - ietf-netconf-acm - nacm","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm"}},"application/json":{"schema":{"properties":{"nacm":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm","type":"object"}}}}}}},"tags":["Controller ietf-netconf-acm"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-acm:nacm/groups":{"post":{"description":"NETCONF access control groups.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-netconf-acm - groups","requestBody":{"description":"group","content":{"application/json":{"schema":{"properties":{"group":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups_group","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups_group"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-netconf-acm"],"parameters":[]},"put":{"description":"NETCONF access control groups.","summary":"PUT - ietf-netconf-acm - Controller - groups","requestBody":{"description":"groups","content":{"application/json":{"schema":{"properties":{"ietf-netconf-acm:groups":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-acm"],"parameters":[]},"patch":{"description":"NETCONF access control groups.","summary":"PATCH - ietf-netconf-acm - Controller - groups","requestBody":{"description":"groups","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-acm:groups":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-acm"],"parameters":[]},"delete":{"description":"NETCONF access control groups.","summary":"DELETE - Controller - ietf-netconf-acm - groups","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-acm"],"parameters":[]},"get":{"description":"NETCONF access control groups.","summary":"GET - Controller - ietf-netconf-acm - groups","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups"}},"application/json":{"schema":{"properties":{"groups":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups","type":"object"}}}}}}},"tags":["Controller ietf-netconf-acm"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-acm:nacm/groups/group={name}":{"put":{"description":"One NACM group entry.  This list will only contain\nconfigured entries, not any entries learned from\nany transport protocols.","summary":"PUT - ietf-netconf-acm - Controller - group","requestBody":{"description":"group","content":{"application/json":{"schema":{"properties":{"ietf-netconf-acm:group":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups_group","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups_group"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-acm"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Group name associated with this entry."}]},"patch":{"description":"One NACM group entry.  This list will only contain\nconfigured entries, not any entries learned from\nany transport protocols.","summary":"PATCH - ietf-netconf-acm - Controller - group","requestBody":{"description":"group","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-acm:group":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups_group","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups_group"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-acm"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Group name associated with this entry."}]},"delete":{"description":"One NACM group entry.  This list will only contain\nconfigured entries, not any entries learned from\nany transport protocols.","summary":"DELETE - Controller - ietf-netconf-acm - group","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-acm"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Group name associated with this entry."}]},"get":{"description":"One NACM group entry.  This list will only contain\nconfigured entries, not any entries learned from\nany transport protocols.","summary":"GET - Controller - ietf-netconf-acm - group","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups_group"}},"application/json":{"schema":{"properties":{"group":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups_group","type":"object"}}}}}}}},"tags":["Controller ietf-netconf-acm"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Group name associated with this entry."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-acm:nacm/rule-list={name}":{"put":{"description":"An ordered collection of access control rules.","summary":"PUT - ietf-netconf-acm - Controller - rule-list","requestBody":{"description":"rule-list","content":{"application/json":{"schema":{"properties":{"ietf-netconf-acm:rule-list":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_rule-list","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_rule-list"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-acm"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Arbitrary name assigned to the rule-list."}]},"patch":{"description":"An ordered collection of access control rules.","summary":"PATCH - ietf-netconf-acm - Controller - rule-list","requestBody":{"description":"rule-list","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-acm:rule-list":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_rule-list","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_rule-list"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-acm"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Arbitrary name assigned to the rule-list."}]},"delete":{"description":"An ordered collection of access control rules.","summary":"DELETE - Controller - ietf-netconf-acm - rule-list","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-acm"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Arbitrary name assigned to the rule-list."}]},"get":{"description":"An ordered collection of access control rules.","summary":"GET - Controller - ietf-netconf-acm - rule-list","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_rule-list"}},"application/json":{"schema":{"properties":{"rule-list":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_rule-list","type":"object"}}}}}}}},"tags":["Controller ietf-netconf-acm"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Arbitrary name assigned to the rule-list."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-acm:nacm/rule-list={name}/rule={name1}":{"put":{"description":"One access control rule.\n\nRules are processed in user-defined order until a match is\nfound.  A rule matches if 'module-name', 'rule-type', and\n'access-operations' match the request.  If a rule\nmatches, the 'action' leaf determines whether or not\naccess is granted.","summary":"PUT - ietf-netconf-acm - Controller - rule","requestBody":{"description":"rule","content":{"application/json":{"schema":{"properties":{"ietf-netconf-acm:rule":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_rule-list_rule","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_rule-list_rule"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-acm"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Arbitrary name assigned to the rule-list."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"Arbitrary name assigned to the rule."}]},"patch":{"description":"One access control rule.\n\nRules are processed in user-defined order until a match is\nfound.  A rule matches if 'module-name', 'rule-type', and\n'access-operations' match the request.  If a rule\nmatches, the 'action' leaf determines whether or not\naccess is granted.","summary":"PATCH - ietf-netconf-acm - Controller - rule","requestBody":{"description":"rule","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-acm:rule":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_rule-list_rule","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_rule-list_rule"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-acm"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Arbitrary name assigned to the rule-list."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"Arbitrary name assigned to the rule."}]},"delete":{"description":"One access control rule.\n\nRules are processed in user-defined order until a match is\nfound.  A rule matches if 'module-name', 'rule-type', and\n'access-operations' match the request.  If a rule\nmatches, the 'action' leaf determines whether or not\naccess is granted.","summary":"DELETE - Controller - ietf-netconf-acm - rule","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-acm"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Arbitrary name assigned to the rule-list."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"Arbitrary name assigned to the rule."}]},"get":{"description":"One access control rule.\n\nRules are processed in user-defined order until a match is\nfound.  A rule matches if 'module-name', 'rule-type', and\n'access-operations' match the request.  If a rule\nmatches, the 'action' leaf determines whether or not\naccess is granted.","summary":"GET - Controller - ietf-netconf-acm - rule","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_rule-list_rule"}},"application/json":{"schema":{"properties":{"rule":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_rule-list_rule","type":"object"}}}}}}}},"tags":["Controller ietf-netconf-acm"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Arbitrary name assigned to the rule-list."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"Arbitrary name assigned to the rule."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-client:netconf-client":{"post":{"description":"Top-level container for NETCONF client configuration.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-netconf-client - netconf-client","requestBody":{"description":"initiate","content":{"application/json":{"schema":{"properties":{"initiate":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"put":{"description":"Top-level container for NETCONF client configuration.","summary":"PUT - ietf-netconf-client - Controller - netconf-client","requestBody":{"description":"netconf-client","content":{"application/json":{"schema":{"properties":{"ietf-netconf-client:netconf-client":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"patch":{"description":"Top-level container for NETCONF client configuration.","summary":"PATCH - ietf-netconf-client - Controller - netconf-client","requestBody":{"description":"netconf-client","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-client:netconf-client":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"delete":{"description":"Top-level container for NETCONF client configuration.","summary":"DELETE - Controller - ietf-netconf-client - netconf-client","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"get":{"description":"Top-level container for NETCONF client configuration.","summary":"GET - Controller - ietf-netconf-client - netconf-client","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client"}},"application/json":{"schema":{"properties":{"netconf-client":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client","type":"object"}}}}}}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-client:netconf-client/initiate":{"post":{"description":"Configures client initiating underlying TCP connections.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-netconf-client - initiate","requestBody":{"description":"netconf-server","content":{"application/json":{"schema":{"properties":{"netconf-server":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"put":{"description":"Configures client initiating underlying TCP connections.","summary":"PUT - ietf-netconf-client - Controller - initiate","requestBody":{"description":"initiate","content":{"application/json":{"schema":{"properties":{"ietf-netconf-client:initiate":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"patch":{"description":"Configures client initiating underlying TCP connections.","summary":"PATCH - ietf-netconf-client - Controller - initiate","requestBody":{"description":"initiate","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-client:initiate":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"delete":{"description":"Configures client initiating underlying TCP connections.","summary":"DELETE - Controller - ietf-netconf-client - initiate","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"get":{"description":"Configures client initiating underlying TCP connections.","summary":"GET - Controller - ietf-netconf-client - initiate","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate"}},"application/json":{"schema":{"properties":{"initiate":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate","type":"object"}}}}}}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-client:netconf-client/initiate/netconf-server={name}":{"put":{"description":"List of NETCONF servers the NETCONF client is to\nmaintain simultaneous connections with.","summary":"PUT - ietf-netconf-client - Controller - netconf-server","requestBody":{"description":"netconf-server","content":{"application/json":{"schema":{"properties":{"ietf-netconf-client:netconf-server":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."}]},"patch":{"description":"List of NETCONF servers the NETCONF client is to\nmaintain simultaneous connections with.","summary":"PATCH - ietf-netconf-client - Controller - netconf-server","requestBody":{"description":"netconf-server","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-client:netconf-server":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."}]},"delete":{"description":"List of NETCONF servers the NETCONF client is to\nmaintain simultaneous connections with.","summary":"DELETE - Controller - ietf-netconf-client - netconf-server","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."}]},"get":{"description":"List of NETCONF servers the NETCONF client is to\nmaintain simultaneous connections with.","summary":"GET - Controller - ietf-netconf-client - netconf-server","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server"}},"application/json":{"schema":{"properties":{"netconf-server":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server","type":"object"}}}}}}}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-client:netconf-client/initiate/netconf-server={name}/endpoints":{"post":{"description":"Container for the list of endpoints.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-netconf-client - endpoints","requestBody":{"description":"endpoint","content":{"application/json":{"schema":{"properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."}]},"put":{"description":"Container for the list of endpoints.","summary":"PUT - ietf-netconf-client - Controller - endpoints","requestBody":{"description":"endpoints","content":{"application/json":{"schema":{"properties":{"ietf-netconf-client:endpoints":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."}]},"patch":{"description":"Container for the list of endpoints.","summary":"PATCH - ietf-netconf-client - Controller - endpoints","requestBody":{"description":"endpoints","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-client:endpoints":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."}]},"delete":{"description":"Container for the list of endpoints.","summary":"DELETE - Controller - ietf-netconf-client - endpoints","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."}]},"get":{"description":"Container for the list of endpoints.","summary":"GET - Controller - ietf-netconf-client - endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints"}},"application/json":{"schema":{"properties":{"endpoints":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints","type":"object"}}}}}}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-client:netconf-client/initiate/netconf-server={name}/endpoints/endpoint={name1}":{"put":{"description":"A user-ordered list of endpoints that the NETCONF\nclient will attempt to connect to in the specified\nsequence.  Defining more than one enables\nhigh-availability.","summary":"PUT - ietf-netconf-client - Controller - endpoint","requestBody":{"description":"endpoint","content":{"application/json":{"schema":{"properties":{"ietf-netconf-client:endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the endpoint."}]},"patch":{"description":"A user-ordered list of endpoints that the NETCONF\nclient will attempt to connect to in the specified\nsequence.  Defining more than one enables\nhigh-availability.","summary":"PATCH - ietf-netconf-client - Controller - endpoint","requestBody":{"description":"endpoint","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-client:endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the endpoint."}]},"delete":{"description":"A user-ordered list of endpoints that the NETCONF\nclient will attempt to connect to in the specified\nsequence.  Defining more than one enables\nhigh-availability.","summary":"DELETE - Controller - ietf-netconf-client - endpoint","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the endpoint."}]},"get":{"description":"A user-ordered list of endpoints that the NETCONF\nclient will attempt to connect to in the specified\nsequence.  Defining more than one enables\nhigh-availability.","summary":"GET - Controller - ietf-netconf-client - endpoint","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint"}},"application/json":{"schema":{"properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint","type":"object"}}}}}}}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the endpoint."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-client:netconf-client/initiate/netconf-server={name}/connection-type":{"put":{"description":"Indicates the NETCONF client's preference for how the\nNETCONF connection is maintained.","summary":"PUT - ietf-netconf-client - Controller - connection-type","requestBody":{"description":"connection-type","content":{"application/json":{"schema":{"properties":{"ietf-netconf-client:connection-type":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_connection-type","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_connection-type"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."}]},"patch":{"description":"Indicates the NETCONF client's preference for how the\nNETCONF connection is maintained.","summary":"PATCH - ietf-netconf-client - Controller - connection-type","requestBody":{"description":"connection-type","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-client:connection-type":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_connection-type","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_connection-type"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."}]},"delete":{"description":"Indicates the NETCONF client's preference for how the\nNETCONF connection is maintained.","summary":"DELETE - Controller - ietf-netconf-client - connection-type","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."}]},"get":{"description":"Indicates the NETCONF client's preference for how the\nNETCONF connection is maintained.","summary":"GET - Controller - ietf-netconf-client - connection-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_connection-type"}},"application/json":{"schema":{"properties":{"connection-type":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_connection-type","type":"object"}}}}}}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-client:netconf-client/initiate/netconf-server={name}/reconnect-strategy":{"put":{"description":"The reconnection strategy directs how a NETCONF client\nreconnects to a NETCONF server, after discovering its\nconnection to the server has dropped, even if due to a\nreboot.  The NETCONF client starts with the specified\nendpoint and tries to connect to it max-attempts times\nbefore trying the next endpoint in the list (round\nrobin).","summary":"PUT - ietf-netconf-client - Controller - reconnect-strategy","requestBody":{"description":"reconnect-strategy","content":{"application/json":{"schema":{"properties":{"ietf-netconf-client:reconnect-strategy":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_reconnect-strategy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_reconnect-strategy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."}]},"patch":{"description":"The reconnection strategy directs how a NETCONF client\nreconnects to a NETCONF server, after discovering its\nconnection to the server has dropped, even if due to a\nreboot.  The NETCONF client starts with the specified\nendpoint and tries to connect to it max-attempts times\nbefore trying the next endpoint in the list (round\nrobin).","summary":"PATCH - ietf-netconf-client - Controller - reconnect-strategy","requestBody":{"description":"reconnect-strategy","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-client:reconnect-strategy":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_reconnect-strategy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_reconnect-strategy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."}]},"delete":{"description":"The reconnection strategy directs how a NETCONF client\nreconnects to a NETCONF server, after discovering its\nconnection to the server has dropped, even if due to a\nreboot.  The NETCONF client starts with the specified\nendpoint and tries to connect to it max-attempts times\nbefore trying the next endpoint in the list (round\nrobin).","summary":"DELETE - Controller - ietf-netconf-client - reconnect-strategy","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."}]},"get":{"description":"The reconnection strategy directs how a NETCONF client\nreconnects to a NETCONF server, after discovering its\nconnection to the server has dropped, even if due to a\nreboot.  The NETCONF client starts with the specified\nendpoint and tries to connect to it max-attempts times\nbefore trying the next endpoint in the list (round\nrobin).","summary":"GET - Controller - ietf-netconf-client - reconnect-strategy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_reconnect-strategy"}},"application/json":{"schema":{"properties":{"reconnect-strategy":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_reconnect-strategy","type":"object"}}}}}}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF server."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-client:netconf-client/listen":{"post":{"description":"Configures the client to accept call-home TCP connections.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-netconf-client - listen","requestBody":{"description":"endpoints","content":{"application/json":{"schema":{"properties":{"endpoints":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"put":{"description":"Configures the client to accept call-home TCP connections.","summary":"PUT - ietf-netconf-client - Controller - listen","requestBody":{"description":"listen","content":{"application/json":{"schema":{"properties":{"ietf-netconf-client:listen":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"patch":{"description":"Configures the client to accept call-home TCP connections.","summary":"PATCH - ietf-netconf-client - Controller - listen","requestBody":{"description":"listen","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-client:listen":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"delete":{"description":"Configures the client to accept call-home TCP connections.","summary":"DELETE - Controller - ietf-netconf-client - listen","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"get":{"description":"Configures the client to accept call-home TCP connections.","summary":"GET - Controller - ietf-netconf-client - listen","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen"}},"application/json":{"schema":{"properties":{"listen":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen","type":"object"}}}}}}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-client:netconf-client/listen/endpoints":{"post":{"description":"Container for a list of endpoints.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-netconf-client - endpoints","requestBody":{"description":"endpoint","content":{"application/json":{"schema":{"properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"put":{"description":"Container for a list of endpoints.","summary":"PUT - ietf-netconf-client - Controller - endpoints","requestBody":{"description":"endpoints","content":{"application/json":{"schema":{"properties":{"ietf-netconf-client:endpoints":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"patch":{"description":"Container for a list of endpoints.","summary":"PATCH - ietf-netconf-client - Controller - endpoints","requestBody":{"description":"endpoints","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-client:endpoints":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"delete":{"description":"Container for a list of endpoints.","summary":"DELETE - Controller - ietf-netconf-client - endpoints","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-client"],"parameters":[]},"get":{"description":"Container for a list of endpoints.","summary":"GET - Controller - ietf-netconf-client - endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints"}},"application/json":{"schema":{"properties":{"endpoints":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints","type":"object"}}}}}}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-client:netconf-client/listen/endpoints/endpoint={name}":{"put":{"description":"List of endpoints to listen for NETCONF connections.","summary":"PUT - ietf-netconf-client - Controller - endpoint","requestBody":{"description":"endpoint","content":{"application/json":{"schema":{"properties":{"ietf-netconf-client:endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF listen endpoint."}]},"patch":{"description":"List of endpoints to listen for NETCONF connections.","summary":"PATCH - ietf-netconf-client - Controller - endpoint","requestBody":{"description":"endpoint","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-client:endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF listen endpoint."}]},"delete":{"description":"List of endpoints to listen for NETCONF connections.","summary":"DELETE - Controller - ietf-netconf-client - endpoint","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF listen endpoint."}]},"get":{"description":"List of endpoints to listen for NETCONF connections.","summary":"GET - Controller - ietf-netconf-client - endpoint","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint"}},"application/json":{"schema":{"properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint","type":"object"}}}}}}}},"tags":["Controller ietf-netconf-client"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF listen endpoint."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/ietf-netconf-monitoring:get-schema":{"post":{"description":"This operation is used to retrieve a schema from the\nNETCONF server.\n\nPositive Response:\nThe NETCONF server returns the requested schema.\n\nNegative Response:\nIf requested schema does not exist, the &lt;error-tag&gt; is\n'invalid-value'.\n\nIf more than one schema matches the requested parameters, the\n&lt;error-tag&gt; is 'operation-failed', and &lt;error-app-tag&gt; is\n'data-not-unique'.","summary":"POST - Controller - ietf-netconf-monitoring - get-schema","requestBody":{"description":"get-schema_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-netconf-monitoring_get-schema_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-monitoring_get-schema_input"}}}},"responses":{"200":{"description":"RPC get-schema success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ietf-netconf-monitoring_get-schema_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-monitoring_get-schema_output"}}}}},"tags":["Controller ietf-netconf-monitoring"],"parameters":[]}},"/rests/data/ietf-netconf-monitoring:netconf-state":{"get":{"description":"The netconf-state container is the root of the monitoring\ndata model.","summary":"GET - Controller - ietf-netconf-monitoring - netconf-state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state"}},"application/json":{"schema":{"properties":{"netconf-state":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state","type":"object"}}}}}}},"tags":["Controller ietf-netconf-monitoring"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-monitoring:netconf-state/capabilities":{"get":{"description":"Contains the list of NETCONF capabilities supported by the\nserver.","summary":"GET - Controller - ietf-netconf-monitoring - capabilities","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_capabilities"}},"application/json":{"schema":{"properties":{"capabilities":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_capabilities","type":"object"}}}}}}},"tags":["Controller ietf-netconf-monitoring"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-monitoring:netconf-state/datastores":{"get":{"description":"Contains the list of NETCONF configuration datastores.","summary":"GET - Controller - ietf-netconf-monitoring - datastores","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_datastores"}},"application/json":{"schema":{"properties":{"datastores":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_datastores","type":"object"}}}}}}},"tags":["Controller ietf-netconf-monitoring"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-monitoring:netconf-state/datastores/datastore={name}":{"get":{"description":"List of NETCONF configuration datastores supported by\nthe NETCONF server and related information.","summary":"GET - Controller - ietf-netconf-monitoring - datastore","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_datastores_datastore"}},"application/json":{"schema":{"properties":{"datastore":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_datastores_datastore","type":"object"}}}}}}}},"tags":["Controller ietf-netconf-monitoring"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the datastore associated with this list entry."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-monitoring:netconf-state/datastores/datastore={name}/locks":{"get":{"description":"The NETCONF &lt;lock&gt; and &lt;partial-lock&gt; operations allow\na client to lock specific resources in a datastore.  The\nNETCONF server will prevent changes to the locked\nresources by all sessions except the one that acquired\nthe lock(s).\n\nMonitoring information is provided for each datastore\nentry including details such as the session that acquired\nthe lock, the type of lock (global or partial) and the\nlist of locked resources.  Multiple locks per datastore\nare supported.","summary":"GET - Controller - ietf-netconf-monitoring - locks","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_datastores_datastore_locks"}},"application/json":{"schema":{"properties":{"locks":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_datastores_datastore_locks","type":"object"}}}}}}},"tags":["Controller ietf-netconf-monitoring"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the datastore associated with this list entry."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-monitoring:netconf-state/schemas":{"get":{"description":"Contains the list of data model schemas supported by the\nserver.","summary":"GET - Controller - ietf-netconf-monitoring - schemas","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_schemas"}},"application/json":{"schema":{"properties":{"schemas":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_schemas","type":"object"}}}}}}},"tags":["Controller ietf-netconf-monitoring"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-monitoring:netconf-state/schemas/schema={identifier},{version},{format}":{"get":{"description":"List of data model schemas supported by the server.","summary":"GET - Controller - ietf-netconf-monitoring - schema","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_schemas_schema"}},"application/json":{"schema":{"properties":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_schemas_schema","type":"object"}}}}}}}},"tags":["Controller ietf-netconf-monitoring"],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"Identifier to uniquely reference the schema.  The\nidentifier is used in the &lt;get-schema&gt; operation and may\nbe used for other purposes such as file retrieval.\n\nFor modeling languages that support or require a data\nmodel name (e.g., YANG module name) the identifier MUST\nmatch that name.  For YANG data models, the identifier is\nthe name of the module or submodule.  In other cases, an\nidentifier such as a filename MAY be used instead."},{"name":"version","in":"path","required":true,"schema":{"type":"string"},"description":"Version of the schema supported.  Multiple versions MAY be\nsupported simultaneously by a NETCONF server.  Each\nversion MUST be reported individually in the schema list,\ni.e., with same identifier, possibly different location,\nbut different version.\n\nFor YANG data models, version is the value of the most\nrecent YANG 'revision' statement in the module or\nsubmodule, or the empty string if no 'revision' statement\nis present."},{"name":"format","in":"path","required":true,"schema":{"type":"string"},"description":"The data modeling language the schema is written\nin (currently xsd, yang, yin, rng, or rnc).\nFor YANG data models, 'yang' format MUST be supported and\n'yin' format MAY also be provided."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-monitoring:netconf-state/sessions":{"get":{"description":"The sessions container includes session-specific data for\nNETCONF management sessions.  The session list MUST include\nall currently active NETCONF sessions.","summary":"GET - Controller - ietf-netconf-monitoring - sessions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_sessions"}},"application/json":{"schema":{"properties":{"sessions":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_sessions","type":"object"}}}}}}},"tags":["Controller ietf-netconf-monitoring"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-monitoring:netconf-state/sessions/session={session-id}":{"get":{"description":"All NETCONF sessions managed by the NETCONF server\nMUST be reported in this list.","summary":"GET - Controller - ietf-netconf-monitoring - session","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_sessions_session"}},"application/json":{"schema":{"properties":{"session":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_sessions_session","type":"object"}}}}}}}},"tags":["Controller ietf-netconf-monitoring"],"parameters":[{"name":"session-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Unique identifier for the session.  This value is the\nNETCONF session identifier, as defined in RFC 4741."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-monitoring:netconf-state/statistics":{"get":{"description":"Statistical data pertaining to the NETCONF server.","summary":"GET - Controller - ietf-netconf-monitoring - statistics","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_statistics"}},"application/json":{"schema":{"properties":{"statistics":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_statistics","type":"object"}}}}}}},"tags":["Controller ietf-netconf-monitoring"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/ietf-netconf-nmda:get-data":{"post":{"description":"Retrieve data from an NMDA datastore.  The content returned\nby get-data must satisfy all filters, i.e., the filter\ncriteria are logically ANDed.\n\nAny ancestor nodes (including list keys) of nodes selected by\nthe filters are included in the response.\n\nThe 'with-origin' parameter is only valid for an operational\ndatastore.  If 'with-origin' is used with an invalid\ndatastore, then the server MUST return an &lt;rpc-error&gt; element\nwith an &lt;error-tag&gt; value of 'invalid-value'.\n\nThe 'with-defaults' parameter only applies to the operational\ndatastore if the NETCONF :with-defaults and\n:with-operational-defaults capabilities are both advertised.\nIf the 'with-defaults' parameter is present in a request for\nwhich it is not supported, then the server MUST return an\n&lt;rpc-error&gt; element with an &lt;error-tag&gt; value of\n'invalid-value'.","summary":"POST - Controller - ietf-netconf-nmda - get-data","requestBody":{"description":"get-data_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-netconf-nmda_get-data_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-nmda_get-data_input"}}}},"responses":{"200":{"description":"RPC get-data success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ietf-netconf-nmda_get-data_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-nmda_get-data_output"}}}}},"tags":["Controller ietf-netconf-nmda"],"parameters":[]}},"/rests/operations/ietf-netconf-nmda:edit-data":{"post":{"description":"Edit data in an NMDA datastore.\n\nIf an error condition occurs such that an error severity\n&lt;rpc-error&gt; element is generated, the server will stop\nprocessing the &lt;edit-data&gt; operation and restore the\nspecified configuration to its complete state at\nthe start of this &lt;edit-data&gt; operation.","summary":"POST - Controller - ietf-netconf-nmda - edit-data","requestBody":{"description":"edit-data_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-netconf-nmda_edit-data_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-nmda_edit-data_input"}}}},"responses":{"204":{"description":"RPC edit-data success"}},"tags":["Controller ietf-netconf-nmda"],"parameters":[]}},"/rests/data/ietf-netconf-server:netconf-server":{"post":{"description":"Top-level container for NETCONF server configuration.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-netconf-server - netconf-server","requestBody":{"description":"listen","content":{"application/json":{"schema":{"properties":{"listen":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"put":{"description":"Top-level container for NETCONF server configuration.","summary":"PUT - ietf-netconf-server - Controller - netconf-server","requestBody":{"description":"netconf-server","content":{"application/json":{"schema":{"properties":{"ietf-netconf-server:netconf-server":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"patch":{"description":"Top-level container for NETCONF server configuration.","summary":"PATCH - ietf-netconf-server - Controller - netconf-server","requestBody":{"description":"netconf-server","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-server:netconf-server":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"delete":{"description":"Top-level container for NETCONF server configuration.","summary":"DELETE - Controller - ietf-netconf-server - netconf-server","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"get":{"description":"Top-level container for NETCONF server configuration.","summary":"GET - Controller - ietf-netconf-server - netconf-server","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server"}},"application/json":{"schema":{"properties":{"netconf-server":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server","type":"object"}}}}}}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-server:netconf-server/listen":{"post":{"description":"Configures listen behavior\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-netconf-server - listen","requestBody":{"description":"endpoints","content":{"application/json":{"schema":{"properties":{"endpoints":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"put":{"description":"Configures listen behavior","summary":"PUT - ietf-netconf-server - Controller - listen","requestBody":{"description":"listen","content":{"application/json":{"schema":{"properties":{"ietf-netconf-server:listen":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"patch":{"description":"Configures listen behavior","summary":"PATCH - ietf-netconf-server - Controller - listen","requestBody":{"description":"listen","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-server:listen":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"delete":{"description":"Configures listen behavior","summary":"DELETE - Controller - ietf-netconf-server - listen","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"get":{"description":"Configures listen behavior","summary":"GET - Controller - ietf-netconf-server - listen","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen"}},"application/json":{"schema":{"properties":{"listen":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen","type":"object"}}}}}}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-server:netconf-server/listen/endpoints":{"post":{"description":"Container for a list of endpoints.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-netconf-server - endpoints","requestBody":{"description":"endpoint","content":{"application/json":{"schema":{"properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"put":{"description":"Container for a list of endpoints.","summary":"PUT - ietf-netconf-server - Controller - endpoints","requestBody":{"description":"endpoints","content":{"application/json":{"schema":{"properties":{"ietf-netconf-server:endpoints":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"patch":{"description":"Container for a list of endpoints.","summary":"PATCH - ietf-netconf-server - Controller - endpoints","requestBody":{"description":"endpoints","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-server:endpoints":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"delete":{"description":"Container for a list of endpoints.","summary":"DELETE - Controller - ietf-netconf-server - endpoints","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"get":{"description":"Container for a list of endpoints.","summary":"GET - Controller - ietf-netconf-server - endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints"}},"application/json":{"schema":{"properties":{"endpoints":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints","type":"object"}}}}}}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-server:netconf-server/listen/endpoints/endpoint={name}":{"put":{"description":"List of endpoints to listen for NETCONF connections.","summary":"PUT - ietf-netconf-server - Controller - endpoint","requestBody":{"description":"endpoint","content":{"application/json":{"schema":{"properties":{"ietf-netconf-server:endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF listen endpoint."}]},"patch":{"description":"List of endpoints to listen for NETCONF connections.","summary":"PATCH - ietf-netconf-server - Controller - endpoint","requestBody":{"description":"endpoint","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-server:endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF listen endpoint."}]},"delete":{"description":"List of endpoints to listen for NETCONF connections.","summary":"DELETE - Controller - ietf-netconf-server - endpoint","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF listen endpoint."}]},"get":{"description":"List of endpoints to listen for NETCONF connections.","summary":"GET - Controller - ietf-netconf-server - endpoint","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint"}},"application/json":{"schema":{"properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint","type":"object"}}}}}}}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the NETCONF listen endpoint."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-server:netconf-server/call-home":{"post":{"description":"Configures the NETCONF server to initiate the underlying\ntransport connection to NETCONF clients.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-netconf-server - call-home","requestBody":{"description":"netconf-client","content":{"application/json":{"schema":{"properties":{"netconf-client":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"put":{"description":"Configures the NETCONF server to initiate the underlying\ntransport connection to NETCONF clients.","summary":"PUT - ietf-netconf-server - Controller - call-home","requestBody":{"description":"call-home","content":{"application/json":{"schema":{"properties":{"ietf-netconf-server:call-home":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"patch":{"description":"Configures the NETCONF server to initiate the underlying\ntransport connection to NETCONF clients.","summary":"PATCH - ietf-netconf-server - Controller - call-home","requestBody":{"description":"call-home","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-server:call-home":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"delete":{"description":"Configures the NETCONF server to initiate the underlying\ntransport connection to NETCONF clients.","summary":"DELETE - Controller - ietf-netconf-server - call-home","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-server"],"parameters":[]},"get":{"description":"Configures the NETCONF server to initiate the underlying\ntransport connection to NETCONF clients.","summary":"GET - Controller - ietf-netconf-server - call-home","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home"}},"application/json":{"schema":{"properties":{"call-home":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home","type":"object"}}}}}}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-server:netconf-server/call-home/netconf-client={name}":{"put":{"description":"List of NETCONF clients the NETCONF server is to\nmaintain simultaneous call-home connections with.","summary":"PUT - ietf-netconf-server - Controller - netconf-client","requestBody":{"description":"netconf-client","content":{"application/json":{"schema":{"properties":{"ietf-netconf-server:netconf-client":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."}]},"patch":{"description":"List of NETCONF clients the NETCONF server is to\nmaintain simultaneous call-home connections with.","summary":"PATCH - ietf-netconf-server - Controller - netconf-client","requestBody":{"description":"netconf-client","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-server:netconf-client":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."}]},"delete":{"description":"List of NETCONF clients the NETCONF server is to\nmaintain simultaneous call-home connections with.","summary":"DELETE - Controller - ietf-netconf-server - netconf-client","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."}]},"get":{"description":"List of NETCONF clients the NETCONF server is to\nmaintain simultaneous call-home connections with.","summary":"GET - Controller - ietf-netconf-server - netconf-client","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client"}},"application/json":{"schema":{"properties":{"netconf-client":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client","type":"object"}}}}}}}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-server:netconf-server/call-home/netconf-client={name}/endpoints":{"post":{"description":"Container for the list of endpoints.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-netconf-server - endpoints","requestBody":{"description":"endpoint","content":{"application/json":{"schema":{"properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."}]},"put":{"description":"Container for the list of endpoints.","summary":"PUT - ietf-netconf-server - Controller - endpoints","requestBody":{"description":"endpoints","content":{"application/json":{"schema":{"properties":{"ietf-netconf-server:endpoints":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."}]},"patch":{"description":"Container for the list of endpoints.","summary":"PATCH - ietf-netconf-server - Controller - endpoints","requestBody":{"description":"endpoints","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-server:endpoints":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."}]},"delete":{"description":"Container for the list of endpoints.","summary":"DELETE - Controller - ietf-netconf-server - endpoints","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."}]},"get":{"description":"Container for the list of endpoints.","summary":"GET - Controller - ietf-netconf-server - endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints"}},"application/json":{"schema":{"properties":{"endpoints":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints","type":"object"}}}}}}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-server:netconf-server/call-home/netconf-client={name}/endpoints/endpoint={name1}":{"put":{"description":"A non-empty user-ordered list of endpoints for this\nNETCONF server to try to connect to in sequence.\nDefining more than one enables high-availability.","summary":"PUT - ietf-netconf-server - Controller - endpoint","requestBody":{"description":"endpoint","content":{"application/json":{"schema":{"properties":{"ietf-netconf-server:endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for this endpoint."}]},"patch":{"description":"A non-empty user-ordered list of endpoints for this\nNETCONF server to try to connect to in sequence.\nDefining more than one enables high-availability.","summary":"PATCH - ietf-netconf-server - Controller - endpoint","requestBody":{"description":"endpoint","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-server:endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for this endpoint."}]},"delete":{"description":"A non-empty user-ordered list of endpoints for this\nNETCONF server to try to connect to in sequence.\nDefining more than one enables high-availability.","summary":"DELETE - Controller - ietf-netconf-server - endpoint","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for this endpoint."}]},"get":{"description":"A non-empty user-ordered list of endpoints for this\nNETCONF server to try to connect to in sequence.\nDefining more than one enables high-availability.","summary":"GET - Controller - ietf-netconf-server - endpoint","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint"}},"application/json":{"schema":{"properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint","type":"object"}}}}}}}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for this endpoint."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-server:netconf-server/call-home/netconf-client={name}/connection-type":{"put":{"description":"Indicates the NETCONF server's preference for how the\nNETCONF connection is maintained.","summary":"PUT - ietf-netconf-server - Controller - connection-type","requestBody":{"description":"connection-type","content":{"application/json":{"schema":{"properties":{"ietf-netconf-server:connection-type":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_connection-type","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_connection-type"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."}]},"patch":{"description":"Indicates the NETCONF server's preference for how the\nNETCONF connection is maintained.","summary":"PATCH - ietf-netconf-server - Controller - connection-type","requestBody":{"description":"connection-type","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-server:connection-type":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_connection-type","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_connection-type"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."}]},"delete":{"description":"Indicates the NETCONF server's preference for how the\nNETCONF connection is maintained.","summary":"DELETE - Controller - ietf-netconf-server - connection-type","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."}]},"get":{"description":"Indicates the NETCONF server's preference for how the\nNETCONF connection is maintained.","summary":"GET - Controller - ietf-netconf-server - connection-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_connection-type"}},"application/json":{"schema":{"properties":{"connection-type":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_connection-type","type":"object"}}}}}}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-netconf-server:netconf-server/call-home/netconf-client={name}/reconnect-strategy":{"put":{"description":"The reconnection strategy directs how a NETCONF server\nreconnects to a NETCONF client, after discovering its\nconnection to the client has dropped, even if due to a\nreboot.  The NETCONF server starts with the specified\nendpoint and tries to connect to it max-attempts times\nbefore trying the next endpoint in the list (round\nrobin).","summary":"PUT - ietf-netconf-server - Controller - reconnect-strategy","requestBody":{"description":"reconnect-strategy","content":{"application/json":{"schema":{"properties":{"ietf-netconf-server:reconnect-strategy":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_reconnect-strategy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_reconnect-strategy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."}]},"patch":{"description":"The reconnection strategy directs how a NETCONF server\nreconnects to a NETCONF client, after discovering its\nconnection to the client has dropped, even if due to a\nreboot.  The NETCONF server starts with the specified\nendpoint and tries to connect to it max-attempts times\nbefore trying the next endpoint in the list (round\nrobin).","summary":"PATCH - ietf-netconf-server - Controller - reconnect-strategy","requestBody":{"description":"reconnect-strategy","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-netconf-server:reconnect-strategy":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_reconnect-strategy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_reconnect-strategy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."}]},"delete":{"description":"The reconnection strategy directs how a NETCONF server\nreconnects to a NETCONF client, after discovering its\nconnection to the client has dropped, even if due to a\nreboot.  The NETCONF server starts with the specified\nendpoint and tries to connect to it max-attempts times\nbefore trying the next endpoint in the list (round\nrobin).","summary":"DELETE - Controller - ietf-netconf-server - reconnect-strategy","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."}]},"get":{"description":"The reconnection strategy directs how a NETCONF server\nreconnects to a NETCONF client, after discovering its\nconnection to the client has dropped, even if due to a\nreboot.  The NETCONF server starts with the specified\nendpoint and tries to connect to it max-attempts times\nbefore trying the next endpoint in the list (round\nrobin).","summary":"GET - Controller - ietf-netconf-server - reconnect-strategy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_reconnect-strategy"}},"application/json":{"schema":{"properties":{"reconnect-strategy":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_reconnect-strategy","type":"object"}}}}}}},"tags":["Controller ietf-netconf-server"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name for the remote NETCONF client."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-network-instance:network-instances":{"post":{"description":"Network instances, each of which consists of\nVRFs and/or VSIs.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-network-instance - network-instances","requestBody":{"description":"network-instance","content":{"application/json":{"schema":{"properties":{"network-instance":{"type":"array","items":{"$ref":"#/components/schemas/ietf-network-instance_network-instances_network-instance","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-network-instance_network-instances_network-instance"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-network-instance"],"parameters":[]},"put":{"description":"Network instances, each of which consists of\nVRFs and/or VSIs.","summary":"PUT - ietf-network-instance - Controller - network-instances","requestBody":{"description":"network-instances","content":{"application/json":{"schema":{"properties":{"ietf-network-instance:network-instances":{"$ref":"#/components/schemas/ietf-network-instance_network-instances","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-network-instance_network-instances"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-network-instance"],"parameters":[]},"patch":{"description":"Network instances, each of which consists of\nVRFs and/or VSIs.","summary":"PATCH - ietf-network-instance - Controller - network-instances","requestBody":{"description":"network-instances","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-network-instance:network-instances":{"$ref":"#/components/schemas/ietf-network-instance_network-instances","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-network-instance_network-instances"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-network-instance"],"parameters":[]},"delete":{"description":"Network instances, each of which consists of\nVRFs and/or VSIs.","summary":"DELETE - Controller - ietf-network-instance - network-instances","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-network-instance"],"parameters":[]},"get":{"description":"Network instances, each of which consists of\nVRFs and/or VSIs.","summary":"GET - Controller - ietf-network-instance - network-instances","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-network-instance_network-instances"}},"application/json":{"schema":{"properties":{"network-instances":{"$ref":"#/components/schemas/ietf-network-instance_network-instances","type":"object"}}}}}}},"tags":["Controller ietf-network-instance"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-network-instance:network-instances/network-instance={name}":{"put":{"description":"List of network instances.","summary":"PUT - ietf-network-instance - Controller - network-instance","requestBody":{"description":"network-instance","content":{"application/json":{"schema":{"properties":{"ietf-network-instance:network-instance":{"type":"array","items":{"$ref":"#/components/schemas/ietf-network-instance_network-instances_network-instance","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-network-instance_network-instances_network-instance"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"device-scoped identifier for the network\ninstance."}]},"patch":{"description":"List of network instances.","summary":"PATCH - ietf-network-instance - Controller - network-instance","requestBody":{"description":"network-instance","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-network-instance:network-instance":{"type":"array","items":{"$ref":"#/components/schemas/ietf-network-instance_network-instances_network-instance","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-network-instance_network-instances_network-instance"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"device-scoped identifier for the network\ninstance."}]},"delete":{"description":"List of network instances.","summary":"DELETE - Controller - ietf-network-instance - network-instance","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"device-scoped identifier for the network\ninstance."}]},"get":{"description":"List of network instances.","summary":"GET - Controller - ietf-network-instance - network-instance","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-network-instance_network-instances_network-instance"}},"application/json":{"schema":{"properties":{"network-instance":{"type":"array","items":{"$ref":"#/components/schemas/ietf-network-instance_network-instances_network-instance","type":"object"}}}}}}}},"tags":["Controller ietf-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"device-scoped identifier for the network\ninstance."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-restconf-monitoring:restconf-state":{"get":{"description":"Contains RESTCONF protocol monitoring information.","summary":"GET - Controller - ietf-restconf-monitoring - restconf-state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-restconf-monitoring_restconf-state"}},"application/json":{"schema":{"properties":{"restconf-state":{"$ref":"#/components/schemas/ietf-restconf-monitoring_restconf-state","type":"object"}}}}}}},"tags":["Controller ietf-restconf-monitoring"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-restconf-monitoring:restconf-state/capabilities":{"get":{"description":"Contains a list of protocol capability URIs.","summary":"GET - Controller - ietf-restconf-monitoring - capabilities","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-restconf-monitoring_restconf-state_capabilities"}},"application/json":{"schema":{"properties":{"capabilities":{"$ref":"#/components/schemas/ietf-restconf-monitoring_restconf-state_capabilities","type":"object"}}}}}}},"tags":["Controller ietf-restconf-monitoring"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-restconf-monitoring:restconf-state/streams":{"get":{"description":"Container representing the notification event streams\nsupported by the server.","summary":"GET - Controller - ietf-restconf-monitoring - streams","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-restconf-monitoring_restconf-state_streams"}},"application/json":{"schema":{"properties":{"streams":{"$ref":"#/components/schemas/ietf-restconf-monitoring_restconf-state_streams","type":"object"}}}}}}},"tags":["Controller ietf-restconf-monitoring"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-restconf-monitoring:restconf-state/streams/stream={name}":{"get":{"description":"Each entry describes an event stream supported by\nthe server.","summary":"GET - Controller - ietf-restconf-monitoring - stream","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-restconf-monitoring_restconf-state_streams_stream"}},"application/json":{"schema":{"properties":{"stream":{"type":"array","items":{"$ref":"#/components/schemas/ietf-restconf-monitoring_restconf-state_streams_stream","type":"object"}}}}}}}},"tags":["Controller ietf-restconf-monitoring"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The stream name."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-restconf-monitoring:restconf-state/streams/stream={name}/access={encoding}":{"get":{"description":"The server will create an entry in this list for each\nencoding format that is supported for this stream.\nThe media type 'text/event-stream' is expected\nfor all event streams.  This list identifies the\nsubtypes supported for this stream.","summary":"GET - Controller - ietf-restconf-monitoring - access","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-restconf-monitoring_restconf-state_streams_stream_access"}},"application/json":{"schema":{"properties":{"access":{"type":"array","items":{"$ref":"#/components/schemas/ietf-restconf-monitoring_restconf-state_streams_stream_access","type":"object"}}}}}}}},"tags":["Controller ietf-restconf-monitoring"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The stream name."},{"name":"encoding","in":"path","required":true,"schema":{"type":"string"},"description":"This is the secondary encoding format within the\n'text/event-stream' encoding used by all streams.\nThe type 'xml' is supported for XML encoding.\nThe type 'json' is supported for JSON encoding."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/ietf-subscribed-notifications:establish-subscription":{"post":{"description":"This RPC allows a subscriber to create (and possibly\nnegotiate) a subscription on its own behalf.  If successful,\nthe subscription remains in effect for the duration of the\nsubscriber's association with the publisher or until the\nsubscription is terminated.  If an error occurs or the\npublisher cannot meet the terms of a subscription, an RPC\nerror is returned, and the subscription is not created.\nIn that case, the RPC reply's 'error-info' MAY include\nsuggested parameter settings that would have a higher\nlikelihood of succeeding in a subsequent\n'establish-subscription' request.","summary":"POST - Controller - ietf-subscribed-notifications - establish-subscription","requestBody":{"description":"establish-subscription_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-subscribed-notifications_establish-subscription_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_establish-subscription_input"}}}},"responses":{"200":{"description":"RPC establish-subscription success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_establish-subscription_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_establish-subscription_output"}}}}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[]}},"/rests/operations/ietf-subscribed-notifications:modify-subscription":{"post":{"description":"This RPC allows a subscriber to modify a dynamic\nsubscription's parameters.  If successful, the changed\nsubscription parameters remain in effect for the duration of\nthe subscription, until the subscription is again modified, or\nuntil the subscription is terminated.  In the case of an error\nor an inability to meet the modified parameters, the\nsubscription is not modified and the original subscription\nparameters remain in effect.  In that case, the RPC error MAY\ninclude 'error-info' suggested parameter hints that would have\na high likelihood of succeeding in a subsequent\n'modify-subscription' request.  A successful\n'modify-subscription' will return a suspended subscription to\nthe 'active' state.","summary":"POST - Controller - ietf-subscribed-notifications - modify-subscription","requestBody":{"description":"modify-subscription_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-subscribed-notifications_modify-subscription_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_modify-subscription_input"}}}},"responses":{"204":{"description":"RPC modify-subscription success"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[]}},"/rests/operations/ietf-subscribed-notifications:delete-subscription":{"post":{"description":"This RPC allows a subscriber to delete a subscription that\nwas previously created by that same subscriber using the\n'establish-subscription' RPC.\n\nIf an error occurs, the server replies with an 'rpc-error'\nwhere the 'error-info' field MAY contain a\n'delete-subscription-error-info' structure.","summary":"POST - Controller - ietf-subscribed-notifications - delete-subscription","requestBody":{"description":"delete-subscription_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-subscribed-notifications_delete-subscription_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_delete-subscription_input"}}}},"responses":{"204":{"description":"RPC delete-subscription success"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[]}},"/rests/operations/ietf-subscribed-notifications:kill-subscription":{"post":{"description":"This RPC allows an operator to delete a dynamic subscription\nwithout restrictions on the originating subscriber or\nunderlying transport session.\n\nIf an error occurs, the server replies with an 'rpc-error'\nwhere the 'error-info' field MAY contain a\n'delete-subscription-error-info' structure.","summary":"POST - Controller - ietf-subscribed-notifications - kill-subscription","requestBody":{"description":"kill-subscription_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/ietf-subscribed-notifications_kill-subscription_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_kill-subscription_input"}}}},"responses":{"204":{"description":"RPC kill-subscription success"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[]}},"/rests/data/ietf-subscribed-notifications:streams":{"get":{"description":"Contains information on the built-in event streams provided by\nthe publisher.","summary":"GET - Controller - ietf-subscribed-notifications - streams","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_streams"}},"application/json":{"schema":{"properties":{"streams":{"$ref":"#/components/schemas/ietf-subscribed-notifications_streams","type":"object"}}}}}}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-subscribed-notifications:streams/stream={name}":{"get":{"description":"Identifies the built-in event streams that are supported by\nthe publisher.","summary":"GET - Controller - ietf-subscribed-notifications - stream","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_streams_stream"}},"application/json":{"schema":{"properties":{"stream":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_streams_stream","type":"object"}}}}}}}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A handle for a system-provided event stream made up of a\nsequential set of event records, each of which is\ncharacterized by its own domain and semantics."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-subscribed-notifications:filters":{"post":{"description":"Contains a list of configurable filters that can be applied to\nsubscriptions.  This facilitates the reuse of complex filters\nonce defined.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-subscribed-notifications - filters","requestBody":{"description":"stream-filter","content":{"application/json":{"schema":{"properties":{"stream-filter":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters_stream-filter","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters_stream-filter"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[]},"put":{"description":"Contains a list of configurable filters that can be applied to\nsubscriptions.  This facilitates the reuse of complex filters\nonce defined.","summary":"PUT - ietf-subscribed-notifications - Controller - filters","requestBody":{"description":"filters","content":{"application/json":{"schema":{"properties":{"ietf-subscribed-notifications:filters":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[]},"patch":{"description":"Contains a list of configurable filters that can be applied to\nsubscriptions.  This facilitates the reuse of complex filters\nonce defined.","summary":"PATCH - ietf-subscribed-notifications - Controller - filters","requestBody":{"description":"filters","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-subscribed-notifications:filters":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[]},"delete":{"description":"Contains a list of configurable filters that can be applied to\nsubscriptions.  This facilitates the reuse of complex filters\nonce defined.","summary":"DELETE - Controller - ietf-subscribed-notifications - filters","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[]},"get":{"description":"Contains a list of configurable filters that can be applied to\nsubscriptions.  This facilitates the reuse of complex filters\nonce defined.","summary":"GET - Controller - ietf-subscribed-notifications - filters","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters"}},"application/json":{"schema":{"properties":{"filters":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters","type":"object"}}}}}}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-subscribed-notifications:filters/stream-filter={name}":{"put":{"description":"A list of preconfigured filters that can be applied to\nsubscriptions.","summary":"PUT - ietf-subscribed-notifications - Controller - stream-filter","requestBody":{"description":"stream-filter","content":{"application/json":{"schema":{"properties":{"ietf-subscribed-notifications:stream-filter":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters_stream-filter","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters_stream-filter"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A name to differentiate between filters."}]},"patch":{"description":"A list of preconfigured filters that can be applied to\nsubscriptions.","summary":"PATCH - ietf-subscribed-notifications - Controller - stream-filter","requestBody":{"description":"stream-filter","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-subscribed-notifications:stream-filter":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters_stream-filter","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters_stream-filter"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A name to differentiate between filters."}]},"delete":{"description":"A list of preconfigured filters that can be applied to\nsubscriptions.","summary":"DELETE - Controller - ietf-subscribed-notifications - stream-filter","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A name to differentiate between filters."}]},"get":{"description":"A list of preconfigured filters that can be applied to\nsubscriptions.","summary":"GET - Controller - ietf-subscribed-notifications - stream-filter","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters_stream-filter"}},"application/json":{"schema":{"properties":{"stream-filter":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters_stream-filter","type":"object"}}}}}}}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A name to differentiate between filters."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-subscribed-notifications:subscriptions":{"post":{"description":"Contains the list of currently active subscriptions, i.e.,\nsubscriptions that are currently in effect, used for\nsubscription management and monitoring purposes.  This\nincludes subscriptions that have been set up via\nRPC primitives as well as subscriptions that have been\nestablished via configuration.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-subscribed-notifications - subscriptions","requestBody":{"description":"subscription","content":{"application/json":{"schema":{"properties":{"subscription":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[]},"put":{"description":"Contains the list of currently active subscriptions, i.e.,\nsubscriptions that are currently in effect, used for\nsubscription management and monitoring purposes.  This\nincludes subscriptions that have been set up via\nRPC primitives as well as subscriptions that have been\nestablished via configuration.","summary":"PUT - ietf-subscribed-notifications - Controller - subscriptions","requestBody":{"description":"subscriptions","content":{"application/json":{"schema":{"properties":{"ietf-subscribed-notifications:subscriptions":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[]},"patch":{"description":"Contains the list of currently active subscriptions, i.e.,\nsubscriptions that are currently in effect, used for\nsubscription management and monitoring purposes.  This\nincludes subscriptions that have been set up via\nRPC primitives as well as subscriptions that have been\nestablished via configuration.","summary":"PATCH - ietf-subscribed-notifications - Controller - subscriptions","requestBody":{"description":"subscriptions","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-subscribed-notifications:subscriptions":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[]},"delete":{"description":"Contains the list of currently active subscriptions, i.e.,\nsubscriptions that are currently in effect, used for\nsubscription management and monitoring purposes.  This\nincludes subscriptions that have been set up via\nRPC primitives as well as subscriptions that have been\nestablished via configuration.","summary":"DELETE - Controller - ietf-subscribed-notifications - subscriptions","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[]},"get":{"description":"Contains the list of currently active subscriptions, i.e.,\nsubscriptions that are currently in effect, used for\nsubscription management and monitoring purposes.  This\nincludes subscriptions that have been set up via\nRPC primitives as well as subscriptions that have been\nestablished via configuration.","summary":"GET - Controller - ietf-subscribed-notifications - subscriptions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions"}},"application/json":{"schema":{"properties":{"subscriptions":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions","type":"object"}}}}}}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-subscribed-notifications:subscriptions/subscription={id}":{"put":{"description":"The identity and specific parameters of a subscription.\nSubscriptions in this list can be created using a control\nchannel or RPC or can be established through configuration.\n\nIf the 'kill-subscription' RPC or configuration operations\nare used to delete a subscription, a\n'subscription-terminated' message is sent to any active or\nsuspended receivers.","summary":"PUT - ietf-subscribed-notifications - Controller - subscription","requestBody":{"description":"subscription","content":{"application/json":{"schema":{"properties":{"ietf-subscribed-notifications:subscription":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of a subscription; unique in a given\npublisher."}]},"patch":{"description":"The identity and specific parameters of a subscription.\nSubscriptions in this list can be created using a control\nchannel or RPC or can be established through configuration.\n\nIf the 'kill-subscription' RPC or configuration operations\nare used to delete a subscription, a\n'subscription-terminated' message is sent to any active or\nsuspended receivers.","summary":"PATCH - ietf-subscribed-notifications - Controller - subscription","requestBody":{"description":"subscription","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-subscribed-notifications:subscription":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of a subscription; unique in a given\npublisher."}]},"delete":{"description":"The identity and specific parameters of a subscription.\nSubscriptions in this list can be created using a control\nchannel or RPC or can be established through configuration.\n\nIf the 'kill-subscription' RPC or configuration operations\nare used to delete a subscription, a\n'subscription-terminated' message is sent to any active or\nsuspended receivers.","summary":"DELETE - Controller - ietf-subscribed-notifications - subscription","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of a subscription; unique in a given\npublisher."}]},"get":{"description":"The identity and specific parameters of a subscription.\nSubscriptions in this list can be created using a control\nchannel or RPC or can be established through configuration.\n\nIf the 'kill-subscription' RPC or configuration operations\nare used to delete a subscription, a\n'subscription-terminated' message is sent to any active or\nsuspended receivers.","summary":"GET - Controller - ietf-subscribed-notifications - subscription","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription"}},"application/json":{"schema":{"properties":{"subscription":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription","type":"object"}}}}}}}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of a subscription; unique in a given\npublisher."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-subscribed-notifications:subscriptions/subscription={id}/receivers":{"post":{"description":"Set of receivers in a subscription.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - ietf-subscribed-notifications - receivers","requestBody":{"description":"receiver","content":{"application/json":{"schema":{"properties":{"receiver":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers_receiver","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers_receiver"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of a subscription; unique in a given\npublisher."}]},"put":{"description":"Set of receivers in a subscription.","summary":"PUT - ietf-subscribed-notifications - Controller - receivers","requestBody":{"description":"receivers","content":{"application/json":{"schema":{"properties":{"ietf-subscribed-notifications:receivers":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of a subscription; unique in a given\npublisher."}]},"patch":{"description":"Set of receivers in a subscription.","summary":"PATCH - ietf-subscribed-notifications - Controller - receivers","requestBody":{"description":"receivers","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-subscribed-notifications:receivers":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of a subscription; unique in a given\npublisher."}]},"delete":{"description":"Set of receivers in a subscription.","summary":"DELETE - Controller - ietf-subscribed-notifications - receivers","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of a subscription; unique in a given\npublisher."}]},"get":{"description":"Set of receivers in a subscription.","summary":"GET - Controller - ietf-subscribed-notifications - receivers","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers"}},"application/json":{"schema":{"properties":{"receivers":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers","type":"object"}}}}}}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of a subscription; unique in a given\npublisher."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-subscribed-notifications:subscriptions/subscription={id}/receivers/receiver={name}":{"put":{"description":"A host intended as a recipient for the notification\nmessages of a subscription.  For configured\nsubscriptions, transport-specific network parameters\n(or a leafref to those parameters) may be augmented to a\nspecific receiver in this list.","summary":"PUT - ietf-subscribed-notifications - Controller - receiver","requestBody":{"description":"receiver","content":{"application/json":{"schema":{"properties":{"ietf-subscribed-notifications:receiver":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers_receiver","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers_receiver"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of a subscription; unique in a given\npublisher."},{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Identifies a unique receiver for a subscription."}]},"patch":{"description":"A host intended as a recipient for the notification\nmessages of a subscription.  For configured\nsubscriptions, transport-specific network parameters\n(or a leafref to those parameters) may be augmented to a\nspecific receiver in this list.","summary":"PATCH - ietf-subscribed-notifications - Controller - receiver","requestBody":{"description":"receiver","content":{"application/yang-data+json":{"schema":{"properties":{"ietf-subscribed-notifications:receiver":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers_receiver","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers_receiver"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of a subscription; unique in a given\npublisher."},{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Identifies a unique receiver for a subscription."}]},"delete":{"description":"A host intended as a recipient for the notification\nmessages of a subscription.  For configured\nsubscriptions, transport-specific network parameters\n(or a leafref to those parameters) may be augmented to a\nspecific receiver in this list.","summary":"DELETE - Controller - ietf-subscribed-notifications - receiver","responses":{"204":{"description":"Deleted"}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of a subscription; unique in a given\npublisher."},{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Identifies a unique receiver for a subscription."}]},"get":{"description":"A host intended as a recipient for the notification\nmessages of a subscription.  For configured\nsubscriptions, transport-specific network parameters\n(or a leafref to those parameters) may be augmented to a\nspecific receiver in this list.","summary":"GET - Controller - ietf-subscribed-notifications - receiver","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers_receiver"}},"application/json":{"schema":{"properties":{"receiver":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers_receiver","type":"object"}}}}}}}},"tags":["Controller ietf-subscribed-notifications"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"Identifier of a subscription; unique in a given\npublisher."},{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Identifies a unique receiver for a subscription."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-library:yang-library":{"get":{"description":"Container holding the entire YANG library of this server.","summary":"GET - Controller - ietf-yang-library - yang-library","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-library_yang-library"}},"application/json":{"schema":{"properties":{"yang-library":{"$ref":"#/components/schemas/ietf-yang-library_yang-library","type":"object"}}}}}}},"tags":["Controller ietf-yang-library"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-library:yang-library/module-set={name}":{"get":{"description":"A set of modules that may be used by one or more schemas.\n\nA module set does not have to be referentially complete,\ni.e., it may define modules that contain import statements\nfor other modules not included in the module set.","summary":"GET - Controller - ietf-yang-library - module-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set"}},"application/json":{"schema":{"properties":{"module-set":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set","type":"object"}}}}}}}},"tags":["Controller ietf-yang-library"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name of the module set."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-library:yang-library/module-set={name}/module={name1}":{"get":{"description":"An entry in this list represents a module implemented by the\nserver, as per Section 5.6.5 of RFC 7950, with a particular\nset of supported features and deviations.","summary":"GET - Controller - ietf-yang-library - module","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set_module"}},"application/json":{"schema":{"properties":{"module":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set_module","type":"object"}}}}}}}},"tags":["Controller ietf-yang-library"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name of the module set."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module or submodule name."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-library:yang-library/module-set={name}/module={name1}/submodule={name2}":{"get":{"description":"Each entry represents one submodule within the\nparent module.","summary":"GET - Controller - ietf-yang-library - submodule","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set_module_submodule"}},"application/json":{"schema":{"properties":{"submodule":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set_module_submodule","type":"object"}}}}}}}},"tags":["Controller ietf-yang-library"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name of the module set."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module or submodule name."},{"name":"name2","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module or submodule name."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-library:yang-library/module-set={name}/import-only-module={name1},{revision}":{"get":{"description":"An entry in this list indicates that the server imports\nreusable definitions from the specified revision of the\nmodule but does not implement any protocol-accessible\nobjects from this revision.\n\nMultiple entries for the same module name MAY exist.  This\ncan occur if multiple modules import the same module but\nspecify different revision dates in the import statements.","summary":"GET - Controller - ietf-yang-library - import-only-module","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set_import-only-module"}},"application/json":{"schema":{"properties":{"import-only-module":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set_import-only-module","type":"object"}}}}}}}},"tags":["Controller ietf-yang-library"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name of the module set."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module name."},{"name":"revision","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module revision date.\nA zero-length string is used if no revision statement\nis present in the YANG module."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-library:yang-library/module-set={name}/import-only-module={name1},{revision}/submodule={name2}":{"get":{"description":"Each entry represents one submodule within the\nparent module.","summary":"GET - Controller - ietf-yang-library - submodule","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set_import-only-module_submodule"}},"application/json":{"schema":{"properties":{"submodule":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set_import-only-module_submodule","type":"object"}}}}}}}},"tags":["Controller ietf-yang-library"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name of the module set."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module name."},{"name":"revision","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module revision date.\nA zero-length string is used if no revision statement\nis present in the YANG module."},{"name":"name2","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module or submodule name."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-library:yang-library/schema={name}":{"get":{"description":"A datastore schema that may be used by one or more\ndatastores.\n\nThe schema must be valid and referentially complete, i.e.,\nit must contain modules to satisfy all used import\nstatements for all modules specified in the schema.","summary":"GET - Controller - ietf-yang-library - schema","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_schema"}},"application/json":{"schema":{"properties":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_schema","type":"object"}}}}}}}},"tags":["Controller ietf-yang-library"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"An arbitrary name of the schema."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-library:yang-library/datastore={name}":{"get":{"description":"A datastore supported by this server.\n\nEach datastore indicates which schema it supports.\n\nThe server MUST instantiate one entry in this list per\nspecific datastore it supports.\nEach datastore entry with the same datastore schema SHOULD\nreference the same schema.","summary":"GET - Controller - ietf-yang-library - datastore","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_datastore"}},"application/json":{"schema":{"properties":{"datastore":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_datastore","type":"object"}}}}}}}},"tags":["Controller ietf-yang-library"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The identity of the datastore."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-library:modules-state":{"get":{"description":"Contains YANG module monitoring information.","summary":"GET - Controller - ietf-yang-library - modules-state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-library_modules-state"}},"application/json":{"schema":{"properties":{"modules-state":{"$ref":"#/components/schemas/ietf-yang-library_modules-state","type":"object"}}}}}}},"tags":["Controller ietf-yang-library"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-library:modules-state/module={name},{revision}":{"get":{"description":"Each entry represents one revision of one module\ncurrently supported by the server.","summary":"GET - Controller - ietf-yang-library - module","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-library_modules-state_module"}},"application/json":{"schema":{"properties":{"module":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_modules-state_module","type":"object"}}}}}}}},"tags":["Controller ietf-yang-library"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module or submodule name."},{"name":"revision","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module or submodule revision date.\nA zero-length string is used if no revision statement\nis present in the YANG module or submodule."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-library:modules-state/module={name},{revision}/deviation={name1},{revision2}":{"get":{"description":"List of YANG deviation module names and revisions\nused by this server to modify the conformance of\nthe module associated with this entry.  Note that\nthe same module can be used for deviations for\nmultiple modules, so the same entry MAY appear\nwithin multiple 'module' entries.\n\nThe deviation module MUST be present in the 'module'\nlist, with the same name and revision values.\nThe 'conformance-type' value will be 'implement' for\nthe deviation module.","summary":"GET - Controller - ietf-yang-library - deviation","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-library_modules-state_module_deviation"}},"application/json":{"schema":{"properties":{"deviation":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_modules-state_module_deviation","type":"object"}}}}}}}},"tags":["Controller ietf-yang-library"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module or submodule name."},{"name":"revision","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module or submodule revision date.\nA zero-length string is used if no revision statement\nis present in the YANG module or submodule."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module or submodule name."},{"name":"revision2","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module or submodule revision date.\nA zero-length string is used if no revision statement\nis present in the YANG module or submodule."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-library:modules-state/module={name},{revision}/submodule={name1},{revision2}":{"get":{"description":"Each entry represents one submodule within the\nparent module.","summary":"GET - Controller - ietf-yang-library - submodule","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-library_modules-state_module_submodule"}},"application/json":{"schema":{"properties":{"submodule":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_modules-state_module_submodule","type":"object"}}}}}}}},"tags":["Controller ietf-yang-library"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module or submodule name."},{"name":"revision","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module or submodule revision date.\nA zero-length string is used if no revision statement\nis present in the YANG module or submodule."},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module or submodule name."},{"name":"revision2","in":"path","required":true,"schema":{"type":"string"},"description":"The YANG module or submodule revision date.\nA zero-length string is used if no revision statement\nis present in the YANG module or submodule."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-schema-mount:schema-mounts":{"get":{"description":"Contains information about the structure of the overall\nmounted data model implemented in the server.","summary":"GET - Controller - ietf-yang-schema-mount - schema-mounts","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-schema-mount_schema-mounts"}},"application/json":{"schema":{"properties":{"schema-mounts":{"$ref":"#/components/schemas/ietf-yang-schema-mount_schema-mounts","type":"object"}}}}}}},"tags":["Controller ietf-yang-schema-mount"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-schema-mount:schema-mounts/namespace={prefix}":{"get":{"description":"This list provides a mapping of namespace prefixes that are\nused in XPath expressions of 'parent-reference' leafs to the\ncorresponding namespace URI references.","summary":"GET - Controller - ietf-yang-schema-mount - namespace","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-schema-mount_schema-mounts_namespace"}},"application/json":{"schema":{"properties":{"namespace":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-schema-mount_schema-mounts_namespace","type":"object"}}}}}}}},"tags":["Controller ietf-yang-schema-mount"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Namespace prefix."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/ietf-yang-schema-mount:schema-mounts/mount-point={module},{label}":{"get":{"description":"Each entry of this list specifies a schema for a particular\nmount point.\n\nEach mount point MUST be defined using the 'mount-point'\nextension in one of the modules listed in the server's\nYANG library instance with conformance type 'implement'.","summary":"GET - Controller - ietf-yang-schema-mount - mount-point","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/ietf-yang-schema-mount_schema-mounts_mount-point"}},"application/json":{"schema":{"properties":{"mount-point":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-schema-mount_schema-mounts_mount-point","type":"object"}}}}}}}},"tags":["Controller ietf-yang-schema-mount"],"parameters":[{"name":"module","in":"path","required":true,"schema":{"type":"string"},"description":"Name of a module containing the mount point."},{"name":"label","in":"path","required":true,"schema":{"type":"string"},"description":"Label of the mount point defined using the 'mount-point'\nextension."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/jsonrpc:force-refresh":{"post":{"description":"Perform any actions required to refresh the extension state from the\nconfiguration. A new attempt will be made to mount any entity in\n'configured-endpoints' that is not currently mounted (perhaps due to a\ntransient failure). All entries in 'actual-endpoints' that do not have\na corresponding entry in 'configured-endpoints' will be removed.","summary":"POST - Controller - jsonrpc - force-refresh","requestBody":{"description":"force-refresh_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:jsonrpc"},"type":"object"}}}},"responses":{"200":{"description":"RPC force-refresh success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/jsonrpc_force-refresh_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_force-refresh_output"}}}}},"tags":["Controller jsonrpc"],"parameters":[]}},"/rests/operations/jsonrpc:force-reload":{"post":{"description":"Perform any actions required to rebuild the extension state from the\nconfiguration. The mount points for all entries in 'actual-endpoints'\nwill first be removed, followed by a new attempt to mount each entity in\n'configured-endpoints'.","summary":"POST - Controller - jsonrpc - force-reload","requestBody":{"description":"force-reload_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:jsonrpc"},"type":"object"}}}},"responses":{"200":{"description":"RPC force-reload success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/jsonrpc_force-reload_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_force-reload_output"}}}}},"tags":["Controller jsonrpc"],"parameters":[]}},"/rests/data/jsonrpc:config":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - jsonrpc - config","requestBody":{"description":"configured-endpoints","content":{"application/json":{"schema":{"properties":{"configured-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller jsonrpc"],"parameters":[]},"put":{"description":"","summary":"PUT - jsonrpc - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"jsonrpc:config":{"$ref":"#/components/schemas/jsonrpc_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller jsonrpc"],"parameters":[]},"patch":{"description":"","summary":"PATCH - jsonrpc - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"jsonrpc:config":{"$ref":"#/components/schemas/jsonrpc_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller jsonrpc"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - jsonrpc - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller jsonrpc"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - jsonrpc - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/jsonrpc_config","type":"object"}}}}}}},"tags":["Controller jsonrpc"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/jsonrpc:config/configured-endpoints={name}":{"put":{"description":"For each named entity, the JSON-RPC peer endpoints that comprise all, or part,\nof its remote implementation. For parts of a named entity's remote\nimplementation that are not covered by an entry in this list, the peer endpoint\nfor that path (module subtree) will be learned from 'governance-root'.\n\nAdding a new element to this list introduces a new named entity which this\nextension will mount in the controller. Deleting a whole element will cause\nthis extension to unmount the named entity in the controller. Modifying an\nexisting named entity does not result in the named entity being remounted:\ndelete and add back to achieve this effect.","summary":"PUT - jsonrpc - Controller - configured-endpoints","requestBody":{"description":"configured-endpoints","content":{"application/json":{"schema":{"properties":{"jsonrpc:configured-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."}]},"patch":{"description":"For each named entity, the JSON-RPC peer endpoints that comprise all, or part,\nof its remote implementation. For parts of a named entity's remote\nimplementation that are not covered by an entry in this list, the peer endpoint\nfor that path (module subtree) will be learned from 'governance-root'.\n\nAdding a new element to this list introduces a new named entity which this\nextension will mount in the controller. Deleting a whole element will cause\nthis extension to unmount the named entity in the controller. Modifying an\nexisting named entity does not result in the named entity being remounted:\ndelete and add back to achieve this effect.","summary":"PATCH - jsonrpc - Controller - configured-endpoints","requestBody":{"description":"configured-endpoints","content":{"application/yang-data+json":{"schema":{"properties":{"jsonrpc:configured-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."}]},"delete":{"description":"For each named entity, the JSON-RPC peer endpoints that comprise all, or part,\nof its remote implementation. For parts of a named entity's remote\nimplementation that are not covered by an entry in this list, the peer endpoint\nfor that path (module subtree) will be learned from 'governance-root'.\n\nAdding a new element to this list introduces a new named entity which this\nextension will mount in the controller. Deleting a whole element will cause\nthis extension to unmount the named entity in the controller. Modifying an\nexisting named entity does not result in the named entity being remounted:\ndelete and add back to achieve this effect.","summary":"DELETE - Controller - jsonrpc - configured-endpoints","responses":{"204":{"description":"Deleted"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."}]},"get":{"description":"For each named entity, the JSON-RPC peer endpoints that comprise all, or part,\nof its remote implementation. For parts of a named entity's remote\nimplementation that are not covered by an entry in this list, the peer endpoint\nfor that path (module subtree) will be learned from 'governance-root'.\n\nAdding a new element to this list introduces a new named entity which this\nextension will mount in the controller. Deleting a whole element will cause\nthis extension to unmount the named entity in the controller. Modifying an\nexisting named entity does not result in the named entity being remounted:\ndelete and add back to achieve this effect.","summary":"GET - Controller - jsonrpc - configured-endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints"}},"application/json":{"schema":{"properties":{"configured-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints","type":"object"}}}}}}}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/jsonrpc:config/configured-endpoints={name}/data-config-endpoints={path}":{"put":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's config data store.\n\nThis extension selects the remote peer to handle a request using a longest\n'path' first match (similar to route prefix matching in IP routing). As such\nthe shortest path, an empty JSON object, {}, may be used to specify a default\npeer, which handles the request in the absence of a more specific 'path' match.\nThe shortest path for a specific module identifies the tree for one root node:\n\n{\"module:root\":{}}\n\nEach listed remote peer must implement the JSON-RPC methods documented in the\n'opendaylight-jsonrpc-data' YANG module.","summary":"PUT - jsonrpc - Controller - data-config-endpoints","requestBody":{"description":"data-config-endpoints","content":{"application/json":{"schema":{"properties":{"jsonrpc:data-config-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_data-config-endpoints","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_data-config-endpoints"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."}]},"patch":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's config data store.\n\nThis extension selects the remote peer to handle a request using a longest\n'path' first match (similar to route prefix matching in IP routing). As such\nthe shortest path, an empty JSON object, {}, may be used to specify a default\npeer, which handles the request in the absence of a more specific 'path' match.\nThe shortest path for a specific module identifies the tree for one root node:\n\n{\"module:root\":{}}\n\nEach listed remote peer must implement the JSON-RPC methods documented in the\n'opendaylight-jsonrpc-data' YANG module.","summary":"PATCH - jsonrpc - Controller - data-config-endpoints","requestBody":{"description":"data-config-endpoints","content":{"application/yang-data+json":{"schema":{"properties":{"jsonrpc:data-config-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_data-config-endpoints","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_data-config-endpoints"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."}]},"delete":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's config data store.\n\nThis extension selects the remote peer to handle a request using a longest\n'path' first match (similar to route prefix matching in IP routing). As such\nthe shortest path, an empty JSON object, {}, may be used to specify a default\npeer, which handles the request in the absence of a more specific 'path' match.\nThe shortest path for a specific module identifies the tree for one root node:\n\n{\"module:root\":{}}\n\nEach listed remote peer must implement the JSON-RPC methods documented in the\n'opendaylight-jsonrpc-data' YANG module.","summary":"DELETE - Controller - jsonrpc - data-config-endpoints","responses":{"204":{"description":"Deleted"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."}]},"get":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's config data store.\n\nThis extension selects the remote peer to handle a request using a longest\n'path' first match (similar to route prefix matching in IP routing). As such\nthe shortest path, an empty JSON object, {}, may be used to specify a default\npeer, which handles the request in the absence of a more specific 'path' match.\nThe shortest path for a specific module identifies the tree for one root node:\n\n{\"module:root\":{}}\n\nEach listed remote peer must implement the JSON-RPC methods documented in the\n'opendaylight-jsonrpc-data' YANG module.","summary":"GET - Controller - jsonrpc - data-config-endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_data-config-endpoints"}},"application/json":{"schema":{"properties":{"data-config-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_data-config-endpoints","type":"object"}}}}}}}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/jsonrpc:config/configured-endpoints={name}/data-operational-endpoints={path}":{"put":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's operational data store.\n\nThe endpoint selection algorithm and JSON-RPC methods specified for\n'data-config-endpoints' also apply here.","summary":"PUT - jsonrpc - Controller - data-operational-endpoints","requestBody":{"description":"data-operational-endpoints","content":{"application/json":{"schema":{"properties":{"jsonrpc:data-operational-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_data-operational-endpoints","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_data-operational-endpoints"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."}]},"patch":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's operational data store.\n\nThe endpoint selection algorithm and JSON-RPC methods specified for\n'data-config-endpoints' also apply here.","summary":"PATCH - jsonrpc - Controller - data-operational-endpoints","requestBody":{"description":"data-operational-endpoints","content":{"application/yang-data+json":{"schema":{"properties":{"jsonrpc:data-operational-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_data-operational-endpoints","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_data-operational-endpoints"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."}]},"delete":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's operational data store.\n\nThe endpoint selection algorithm and JSON-RPC methods specified for\n'data-config-endpoints' also apply here.","summary":"DELETE - Controller - jsonrpc - data-operational-endpoints","responses":{"204":{"description":"Deleted"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."}]},"get":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's operational data store.\n\nThe endpoint selection algorithm and JSON-RPC methods specified for\n'data-config-endpoints' also apply here.","summary":"GET - Controller - jsonrpc - data-operational-endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_data-operational-endpoints"}},"application/json":{"schema":{"properties":{"data-operational-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_data-operational-endpoints","type":"object"}}}}}}}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/jsonrpc:config/configured-endpoints={name}/rpc-endpoints={path}":{"put":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module rpc) for\na named entity. A YANG rpc statement with name 'method' in 'module' corresponds\nto 'path':\n\n{\"module:method\":{}}\n\nThe endpoint selection algorithm specified for 'data-config-endpoints' also\napplies here.\n\nThe remote peer which implements the module rpc for 'path' must implement\nthat rpc as a named JSON-RPC method. The controller may make a JSON-RPC request\nusing either a method of \"module:method\" or \"method\".","summary":"PUT - jsonrpc - Controller - rpc-endpoints","requestBody":{"description":"rpc-endpoints","content":{"application/json":{"schema":{"properties":{"jsonrpc:rpc-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_rpc-endpoints","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_rpc-endpoints"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."}]},"patch":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module rpc) for\na named entity. A YANG rpc statement with name 'method' in 'module' corresponds\nto 'path':\n\n{\"module:method\":{}}\n\nThe endpoint selection algorithm specified for 'data-config-endpoints' also\napplies here.\n\nThe remote peer which implements the module rpc for 'path' must implement\nthat rpc as a named JSON-RPC method. The controller may make a JSON-RPC request\nusing either a method of \"module:method\" or \"method\".","summary":"PATCH - jsonrpc - Controller - rpc-endpoints","requestBody":{"description":"rpc-endpoints","content":{"application/yang-data+json":{"schema":{"properties":{"jsonrpc:rpc-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_rpc-endpoints","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_rpc-endpoints"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."}]},"delete":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module rpc) for\na named entity. A YANG rpc statement with name 'method' in 'module' corresponds\nto 'path':\n\n{\"module:method\":{}}\n\nThe endpoint selection algorithm specified for 'data-config-endpoints' also\napplies here.\n\nThe remote peer which implements the module rpc for 'path' must implement\nthat rpc as a named JSON-RPC method. The controller may make a JSON-RPC request\nusing either a method of \"module:method\" or \"method\".","summary":"DELETE - Controller - jsonrpc - rpc-endpoints","responses":{"204":{"description":"Deleted"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."}]},"get":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module rpc) for\na named entity. A YANG rpc statement with name 'method' in 'module' corresponds\nto 'path':\n\n{\"module:method\":{}}\n\nThe endpoint selection algorithm specified for 'data-config-endpoints' also\napplies here.\n\nThe remote peer which implements the module rpc for 'path' must implement\nthat rpc as a named JSON-RPC method. The controller may make a JSON-RPC request\nusing either a method of \"module:method\" or \"method\".","summary":"GET - Controller - jsonrpc - rpc-endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_rpc-endpoints"}},"application/json":{"schema":{"properties":{"rpc-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_rpc-endpoints","type":"object"}}}}}}}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/jsonrpc:config/configured-endpoints={name}/notification-endpoints={path}":{"put":{"description":"The JSON-RPC peer endpoint remotely generating notifications for the 'path'\nmodule notification. A YANG notification statement with name 'notification'\nin 'module' corresponds to 'path'.\n\n{\"module:notification\":{}}\n\nThe remote peer which implements the notification for 'path' must implement\nthat as a JSON-RPC 2.0 notification\n\nTransport specific options (f.e. pub/sub topic) are supplied in the query part\nof the uri.","summary":"PUT - jsonrpc - Controller - notification-endpoints","requestBody":{"description":"notification-endpoints","content":{"application/json":{"schema":{"properties":{"jsonrpc:notification-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_notification-endpoints","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_notification-endpoints"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."}]},"patch":{"description":"The JSON-RPC peer endpoint remotely generating notifications for the 'path'\nmodule notification. A YANG notification statement with name 'notification'\nin 'module' corresponds to 'path'.\n\n{\"module:notification\":{}}\n\nThe remote peer which implements the notification for 'path' must implement\nthat as a JSON-RPC 2.0 notification\n\nTransport specific options (f.e. pub/sub topic) are supplied in the query part\nof the uri.","summary":"PATCH - jsonrpc - Controller - notification-endpoints","requestBody":{"description":"notification-endpoints","content":{"application/yang-data+json":{"schema":{"properties":{"jsonrpc:notification-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_notification-endpoints","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_notification-endpoints"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."}]},"delete":{"description":"The JSON-RPC peer endpoint remotely generating notifications for the 'path'\nmodule notification. A YANG notification statement with name 'notification'\nin 'module' corresponds to 'path'.\n\n{\"module:notification\":{}}\n\nThe remote peer which implements the notification for 'path' must implement\nthat as a JSON-RPC 2.0 notification\n\nTransport specific options (f.e. pub/sub topic) are supplied in the query part\nof the uri.","summary":"DELETE - Controller - jsonrpc - notification-endpoints","responses":{"204":{"description":"Deleted"}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."}]},"get":{"description":"The JSON-RPC peer endpoint remotely generating notifications for the 'path'\nmodule notification. A YANG notification statement with name 'notification'\nin 'module' corresponds to 'path'.\n\n{\"module:notification\":{}}\n\nThe remote peer which implements the notification for 'path' must implement\nthat as a JSON-RPC 2.0 notification\n\nTransport specific options (f.e. pub/sub topic) are supplied in the query part\nof the uri.","summary":"GET - Controller - jsonrpc - notification-endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_notification-endpoints"}},"application/json":{"schema":{"properties":{"notification-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_notification-endpoints","type":"object"}}}}}}}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/jsonrpc:config/actual-endpoints={name}":{"get":{"description":"For each named entity, the JSON-RPC peer endpoints that comprise all, or part,\nof its remote implementation. This list contains entries for each named entity\nin 'configured-endpoints' that was successfully mounted, complemented by\nentries learned from 'governance-root'.","summary":"GET - Controller - jsonrpc - actual-endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_actual-endpoints"}},"application/json":{"schema":{"properties":{"actual-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_actual-endpoints","type":"object"}}}}}}}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/jsonrpc:config/actual-endpoints={name}/data-config-endpoints={path}":{"get":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's config data store.\n\nThis extension selects the remote peer to handle a request using a longest\n'path' first match (similar to route prefix matching in IP routing). As such\nthe shortest path, an empty JSON object, {}, may be used to specify a default\npeer, which handles the request in the absence of a more specific 'path' match.\nThe shortest path for a specific module identifies the tree for one root node:\n\n{\"module:root\":{}}\n\nEach listed remote peer must implement the JSON-RPC methods documented in the\n'opendaylight-jsonrpc-data' YANG module.","summary":"GET - Controller - jsonrpc - data-config-endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_actual-endpoints_data-config-endpoints"}},"application/json":{"schema":{"properties":{"data-config-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_actual-endpoints_data-config-endpoints","type":"object"}}}}}}}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/jsonrpc:config/actual-endpoints={name}/data-operational-endpoints={path}":{"get":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's operational data store.\n\nThe endpoint selection algorithm and JSON-RPC methods specified for\n'data-config-endpoints' also apply here.","summary":"GET - Controller - jsonrpc - data-operational-endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_actual-endpoints_data-operational-endpoints"}},"application/json":{"schema":{"properties":{"data-operational-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_actual-endpoints_data-operational-endpoints","type":"object"}}}}}}}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/jsonrpc:config/actual-endpoints={name}/rpc-endpoints={path}":{"get":{"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module rpc) for\na named entity. A YANG rpc statement with name 'method' in 'module' corresponds\nto 'path':\n\n{\"module:method\":{}}\n\nThe endpoint selection algorithm specified for 'data-config-endpoints' also\napplies here.\n\nThe remote peer which implements the module rpc for 'path' must implement\nthat rpc as a named JSON-RPC method. The controller may make a JSON-RPC request\nusing either a method of \"module:method\" or \"method\".","summary":"GET - Controller - jsonrpc - rpc-endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_actual-endpoints_rpc-endpoints"}},"application/json":{"schema":{"properties":{"rpc-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_actual-endpoints_rpc-endpoints","type":"object"}}}}}}}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/jsonrpc:config/actual-endpoints={name}/notification-endpoints={path}":{"get":{"description":"The JSON-RPC peer endpoint remotely generating notifications for the 'path'\nmodule notification. A YANG notification statement with name 'notification'\nin 'module' corresponds to 'path'.\n\n{\"module:notification\":{}}\n\nThe remote peer which implements the notification for 'path' must implement\nthat as a JSON-RPC 2.0 notification\n\nTransport specific options (f.e. pub/sub topic) are supplied in the query part\nof the uri.","summary":"GET - Controller - jsonrpc - notification-endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc_config_actual-endpoints_notification-endpoints"}},"application/json":{"schema":{"properties":{"notification-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_actual-endpoints_notification-endpoints","type":"object"}}}}}}}},"tags":["Controller jsonrpc"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints."},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/jsonrpc-inband-models:get-modules":{"post":{"description":"Get list of all YANG modules required to mount this peer.","summary":"POST - Controller - jsonrpc-inband-models - get-modules","requestBody":{"description":"get-modules_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:jsonrpc:ibm"},"type":"object"}}}},"responses":{"200":{"description":"RPC get-modules success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/jsonrpc-inband-models_get-modules_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/jsonrpc-inband-models_get-modules_output"}}}}},"tags":["Controller jsonrpc-inband-models"],"parameters":[]}},"/rests/operations/lldp-speaker:change-operational-status":{"post":{"description":"","summary":"POST - Controller - lldp-speaker - change-operational-status","requestBody":{"description":"change-operational-status_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/lldp-speaker_change-operational-status_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/lldp-speaker_change-operational-status_input"}}}},"responses":{"204":{"description":"RPC change-operational-status success"}},"tags":["Controller lldp-speaker"],"parameters":[]}},"/rests/operations/lldp-speaker:get-operational-status":{"post":{"description":"","summary":"POST - Controller - lldp-speaker - get-operational-status","requestBody":{"description":"get-operational-status_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker"},"type":"object"}}}},"responses":{"200":{"description":"RPC get-operational-status success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/lldp-speaker_get-operational-status_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/lldp-speaker_get-operational-status_output"}}}}},"tags":["Controller lldp-speaker"],"parameters":[]}},"/rests/operations/lldp-speaker:set-lldp-flood-interval":{"post":{"description":"","summary":"POST - Controller - lldp-speaker - set-lldp-flood-interval","requestBody":{"description":"set-lldp-flood-interval_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/lldp-speaker_set-lldp-flood-interval_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/lldp-speaker_set-lldp-flood-interval_input"}}}},"responses":{"204":{"description":"RPC set-lldp-flood-interval success"}},"tags":["Controller lldp-speaker"],"parameters":[]}},"/rests/operations/lldp-speaker:get-lldp-flood-interval":{"post":{"description":"","summary":"POST - Controller - lldp-speaker - get-lldp-flood-interval","requestBody":{"description":"get-lldp-flood-interval_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker"},"type":"object"}}}},"responses":{"200":{"description":"RPC get-lldp-flood-interval success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/lldp-speaker_get-lldp-flood-interval_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/lldp-speaker_get-lldp-flood-interval_output"}}}}},"tags":["Controller lldp-speaker"],"parameters":[]}},"/rests/data/lldp-speaker-config:lldp-speaker-config":{"put":{"description":"","summary":"PUT - lldp-speaker-config - Controller - lldp-speaker-config","requestBody":{"description":"lldp-speaker-config","content":{"application/json":{"schema":{"properties":{"lldp-speaker-config:lldp-speaker-config":{"$ref":"#/components/schemas/lldp-speaker-config_lldp-speaker-config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/lldp-speaker-config_lldp-speaker-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller lldp-speaker-config"],"parameters":[]},"patch":{"description":"","summary":"PATCH - lldp-speaker-config - Controller - lldp-speaker-config","requestBody":{"description":"lldp-speaker-config","content":{"application/yang-data+json":{"schema":{"properties":{"lldp-speaker-config:lldp-speaker-config":{"$ref":"#/components/schemas/lldp-speaker-config_lldp-speaker-config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/lldp-speaker-config_lldp-speaker-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller lldp-speaker-config"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - lldp-speaker-config - lldp-speaker-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller lldp-speaker-config"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - lldp-speaker-config - lldp-speaker-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/lldp-speaker-config_lldp-speaker-config"}},"application/json":{"schema":{"properties":{"lldp-speaker-config":{"$ref":"#/components/schemas/lldp-speaker-config_lldp-speaker-config","type":"object"}}}}}}},"tags":["Controller lldp-speaker-config"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/nc-notifications:netconf":{"get":{"description":"Top-level element in the notification namespace","summary":"GET - Controller - nc-notifications - netconf","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/nc-notifications_netconf"}},"application/json":{"schema":{"properties":{"netconf":{"$ref":"#/components/schemas/nc-notifications_netconf","type":"object"}}}}}}},"tags":["Controller nc-notifications"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/nc-notifications:netconf/streams":{"get":{"description":"The list of event streams supported by the system. When\na query is issued, the returned set of streams is\ndetermined based on user privileges.","summary":"GET - Controller - nc-notifications - streams","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/nc-notifications_netconf_streams"}},"application/json":{"schema":{"properties":{"streams":{"$ref":"#/components/schemas/nc-notifications_netconf_streams","type":"object"}}}}}}},"tags":["Controller nc-notifications"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/nc-notifications:netconf/streams/stream={name}":{"get":{"description":"Stream name, description and other information.","summary":"GET - Controller - nc-notifications - stream","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/nc-notifications_netconf_streams_stream"}},"application/json":{"schema":{"properties":{"stream":{"type":"array","items":{"$ref":"#/components/schemas/nc-notifications_netconf_streams_stream","type":"object"}}}}}}}},"tags":["Controller nc-notifications"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the event stream. If this is the default\nNETCONF stream, this must have the value 'NETCONF'."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/netconf-keystore:add-keystore-entry":{"post":{"description":"Use this rpc to add a single or multiple new keys into the keystore. The private key and passphrase\nwill both be encrypted before they are written into the data store.","summary":"POST - Controller - netconf-keystore - add-keystore-entry","requestBody":{"description":"add-keystore-entry_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/netconf-keystore_add-keystore-entry_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_add-keystore-entry_input"}}}},"responses":{"204":{"description":"RPC add-keystore-entry success"}},"tags":["Controller netconf-keystore"],"parameters":[]}},"/rests/operations/netconf-keystore:remove-keystore-entry":{"post":{"description":"Use this rpc to remove a single or multiple keys from the data store.","summary":"POST - Controller - netconf-keystore - remove-keystore-entry","requestBody":{"description":"remove-keystore-entry_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/netconf-keystore_remove-keystore-entry_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_remove-keystore-entry_input"}}}},"responses":{"204":{"description":"RPC remove-keystore-entry success"}},"tags":["Controller netconf-keystore"],"parameters":[]}},"/rests/operations/netconf-keystore:add-private-key":{"post":{"description":"Add a list of private keys into the keystore.","summary":"POST - Controller - netconf-keystore - add-private-key","requestBody":{"description":"add-private-key_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/netconf-keystore_add-private-key_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_add-private-key_input"}}}},"responses":{"204":{"description":"RPC add-private-key success"}},"tags":["Controller netconf-keystore"],"parameters":[]}},"/rests/operations/netconf-keystore:remove-private-key":{"post":{"description":"Remove a list of private keys from the data store.","summary":"POST - Controller - netconf-keystore - remove-private-key","requestBody":{"description":"remove-private-key_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/netconf-keystore_remove-private-key_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_remove-private-key_input"}}}},"responses":{"204":{"description":"RPC remove-private-key success"}},"tags":["Controller netconf-keystore"],"parameters":[]}},"/rests/operations/netconf-keystore:add-trusted-certificate":{"post":{"description":"Add a list of trusted certificates into the keystore.","summary":"POST - Controller - netconf-keystore - add-trusted-certificate","requestBody":{"description":"add-trusted-certificate_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/netconf-keystore_add-trusted-certificate_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_add-trusted-certificate_input"}}}},"responses":{"204":{"description":"RPC add-trusted-certificate success"}},"tags":["Controller netconf-keystore"],"parameters":[]}},"/rests/operations/netconf-keystore:remove-trusted-certificate":{"post":{"description":"Remove a list of trusted certificates from the data store.","summary":"POST - Controller - netconf-keystore - remove-trusted-certificate","requestBody":{"description":"remove-trusted-certificate_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/netconf-keystore_remove-trusted-certificate_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_remove-trusted-certificate_input"}}}},"responses":{"204":{"description":"RPC remove-trusted-certificate success"}},"tags":["Controller netconf-keystore"],"parameters":[]}},"/rests/data/netconf-keystore:keystore":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - netconf-keystore - keystore","requestBody":{"description":"key-credential","content":{"application/json":{"schema":{"properties":{"key-credential":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_keystore_key-credential","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_keystore_key-credential"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller netconf-keystore"],"parameters":[]},"put":{"description":"","summary":"PUT - netconf-keystore - Controller - keystore","requestBody":{"description":"keystore","content":{"application/json":{"schema":{"properties":{"netconf-keystore:keystore":{"$ref":"#/components/schemas/netconf-keystore_keystore","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_keystore"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller netconf-keystore"],"parameters":[]},"patch":{"description":"","summary":"PATCH - netconf-keystore - Controller - keystore","requestBody":{"description":"keystore","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-keystore:keystore":{"$ref":"#/components/schemas/netconf-keystore_keystore","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_keystore"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller netconf-keystore"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - netconf-keystore - keystore","responses":{"204":{"description":"Deleted"}},"tags":["Controller netconf-keystore"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - netconf-keystore - keystore","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_keystore"}},"application/json":{"schema":{"properties":{"keystore":{"$ref":"#/components/schemas/netconf-keystore_keystore","type":"object"}}}}}}},"tags":["Controller netconf-keystore"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/netconf-keystore:keystore/key-credential={key-id}":{"put":{"description":"","summary":"PUT - netconf-keystore - Controller - key-credential","requestBody":{"description":"key-credential","content":{"application/json":{"schema":{"properties":{"netconf-keystore:key-credential":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_keystore_key-credential","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_keystore_key-credential"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller netconf-keystore"],"parameters":[{"name":"key-id","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - netconf-keystore - Controller - key-credential","requestBody":{"description":"key-credential","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-keystore:key-credential":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_keystore_key-credential","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_keystore_key-credential"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller netconf-keystore"],"parameters":[{"name":"key-id","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - netconf-keystore - key-credential","responses":{"204":{"description":"Deleted"}},"tags":["Controller netconf-keystore"],"parameters":[{"name":"key-id","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - netconf-keystore - key-credential","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_keystore_key-credential"}},"application/json":{"schema":{"properties":{"key-credential":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_keystore_key-credential","type":"object"}}}}}}}},"tags":["Controller netconf-keystore"],"parameters":[{"name":"key-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/netconf-keystore:keystore/private-key={name}":{"put":{"description":"A private key.","summary":"PUT - netconf-keystore - Controller - private-key","requestBody":{"description":"private-key","content":{"application/json":{"schema":{"properties":{"netconf-keystore:private-key":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_keystore_private-key","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_keystore_private-key"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller netconf-keystore"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"A private key.","summary":"PATCH - netconf-keystore - Controller - private-key","requestBody":{"description":"private-key","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-keystore:private-key":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_keystore_private-key","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_keystore_private-key"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller netconf-keystore"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"A private key.","summary":"DELETE - Controller - netconf-keystore - private-key","responses":{"204":{"description":"Deleted"}},"tags":["Controller netconf-keystore"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"A private key.","summary":"GET - Controller - netconf-keystore - private-key","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_keystore_private-key"}},"application/json":{"schema":{"properties":{"private-key":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_keystore_private-key","type":"object"}}}}}}}},"tags":["Controller netconf-keystore"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/netconf-keystore:keystore/trusted-certificate={name}":{"put":{"description":"A list of trusted certificate. These certificates can be used by a server to authenticate\nclients, or by clients to authenticate servers.","summary":"PUT - netconf-keystore - Controller - trusted-certificate","requestBody":{"description":"trusted-certificate","content":{"application/json":{"schema":{"properties":{"netconf-keystore:trusted-certificate":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_keystore_trusted-certificate","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_keystore_trusted-certificate"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller netconf-keystore"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"A list of trusted certificate. These certificates can be used by a server to authenticate\nclients, or by clients to authenticate servers.","summary":"PATCH - netconf-keystore - Controller - trusted-certificate","requestBody":{"description":"trusted-certificate","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-keystore:trusted-certificate":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_keystore_trusted-certificate","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_keystore_trusted-certificate"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller netconf-keystore"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"A list of trusted certificate. These certificates can be used by a server to authenticate\nclients, or by clients to authenticate servers.","summary":"DELETE - Controller - netconf-keystore - trusted-certificate","responses":{"204":{"description":"Deleted"}},"tags":["Controller netconf-keystore"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"A list of trusted certificate. These certificates can be used by a server to authenticate\nclients, or by clients to authenticate servers.","summary":"GET - Controller - netconf-keystore - trusted-certificate","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-keystore_keystore_trusted-certificate"}},"application/json":{"schema":{"properties":{"trusted-certificate":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_keystore_trusted-certificate","type":"object"}}}}}}}},"tags":["Controller netconf-keystore"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/netconf-node-topology:create-device":{"post":{"description":"","summary":"POST - Controller - netconf-node-topology - create-device","requestBody":{"description":"create-device_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/netconf-node-topology_create-device_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-node-topology_create-device_input"}}}},"responses":{"204":{"description":"RPC create-device success"}},"tags":["Controller netconf-node-topology"],"parameters":[]}},"/rests/operations/netconf-node-topology:delete-device":{"post":{"description":"","summary":"POST - Controller - netconf-node-topology - delete-device","requestBody":{"description":"delete-device_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/netconf-node-topology_delete-device_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/netconf-node-topology_delete-device_input"}}}},"responses":{"204":{"description":"RPC delete-device success"}},"tags":["Controller netconf-node-topology"],"parameters":[]}},"/rests/data/network-topology:network-topology":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - network-topology","requestBody":{"description":"topology","content":{"application/json":{"schema":{"properties":{"topology":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[]},"put":{"description":"","summary":"PUT - network-topology - Controller - network-topology","requestBody":{"description":"network-topology","content":{"application/json":{"schema":{"properties":{"network-topology:network-topology":{"$ref":"#/components/schemas/network-topology_network-topology","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - network-topology","requestBody":{"description":"network-topology","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology:network-topology":{"$ref":"#/components/schemas/network-topology_network-topology","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - network-topology","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - network-topology - network-topology","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology"}},"application/json":{"schema":{"properties":{"network-topology":{"$ref":"#/components/schemas/network-topology_network-topology","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}":{"put":{"description":"\nThis is the model of an abstract topology.\nA topology contains nodes and links.\nEach topology MUST be identified by\nunique topology-id for reason that a network could contain many\ntopologies.\n","summary":"PUT - network-topology - Controller - topology","requestBody":{"description":"topology","content":{"application/json":{"schema":{"properties":{"network-topology:topology":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"\nThis is the model of an abstract topology.\nA topology contains nodes and links.\nEach topology MUST be identified by\nunique topology-id for reason that a network could contain many\ntopologies.\n","summary":"PATCH - network-topology - Controller - topology","requestBody":{"description":"topology","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology:topology":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"\nThis is the model of an abstract topology.\nA topology contains nodes and links.\nEach topology MUST be identified by\nunique topology-id for reason that a network could contain many\ntopologies.\n","summary":"DELETE - Controller - network-topology - topology","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"\nThis is the model of an abstract topology.\nA topology contains nodes and links.\nEach topology MUST be identified by\nunique topology-id for reason that a network could contain many\ntopologies.\n","summary":"GET - Controller - network-topology - topology","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology"}},"application/json":{"schema":{"properties":{"topology":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types":{"post":{"description":"This container is used to identify the type, or types\n(as a topology can support several types simultaneously),\nof the topology.\nTopology types are the subject of several integrity constraints\nthat an implementing server can validate in order to\nmaintain integrity of the datastore.\nTopology types are indicated through separate data nodes;\nthe set of topology types is expected to increase over time.\nTo add support for a new topology, an augmenting module\nneeds to augment this container with a new empty optional\ncontainer to indicate the new topology type.\nThe use of a container allows to indicate a subcategorization\nof topology types.\nThe container SHALL NOT be augmented with any data nodes\nthat serve a purpose other than identifying a particular\ntopology type.\n\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - topology-types","requestBody":{"description":"l3-unicast-igp-topology","content":{"application/json":{"schema":{"properties":{"l3-unicast-igp-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"put":{"description":"This container is used to identify the type, or types\n(as a topology can support several types simultaneously),\nof the topology.\nTopology types are the subject of several integrity constraints\nthat an implementing server can validate in order to\nmaintain integrity of the datastore.\nTopology types are indicated through separate data nodes;\nthe set of topology types is expected to increase over time.\nTo add support for a new topology, an augmenting module\nneeds to augment this container with a new empty optional\ncontainer to indicate the new topology type.\nThe use of a container allows to indicate a subcategorization\nof topology types.\nThe container SHALL NOT be augmented with any data nodes\nthat serve a purpose other than identifying a particular\ntopology type.\n","summary":"PUT - network-topology - Controller - topology-types","requestBody":{"description":"topology-types","content":{"application/json":{"schema":{"properties":{"network-topology:topology-types":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"This container is used to identify the type, or types\n(as a topology can support several types simultaneously),\nof the topology.\nTopology types are the subject of several integrity constraints\nthat an implementing server can validate in order to\nmaintain integrity of the datastore.\nTopology types are indicated through separate data nodes;\nthe set of topology types is expected to increase over time.\nTo add support for a new topology, an augmenting module\nneeds to augment this container with a new empty optional\ncontainer to indicate the new topology type.\nThe use of a container allows to indicate a subcategorization\nof topology types.\nThe container SHALL NOT be augmented with any data nodes\nthat serve a purpose other than identifying a particular\ntopology type.\n","summary":"PATCH - network-topology - Controller - topology-types","requestBody":{"description":"topology-types","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology:topology-types":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"This container is used to identify the type, or types\n(as a topology can support several types simultaneously),\nof the topology.\nTopology types are the subject of several integrity constraints\nthat an implementing server can validate in order to\nmaintain integrity of the datastore.\nTopology types are indicated through separate data nodes;\nthe set of topology types is expected to increase over time.\nTo add support for a new topology, an augmenting module\nneeds to augment this container with a new empty optional\ncontainer to indicate the new topology type.\nThe use of a container allows to indicate a subcategorization\nof topology types.\nThe container SHALL NOT be augmented with any data nodes\nthat serve a purpose other than identifying a particular\ntopology type.\n","summary":"DELETE - Controller - network-topology - topology-types","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"This container is used to identify the type, or types\n(as a topology can support several types simultaneously),\nof the topology.\nTopology types are the subject of several integrity constraints\nthat an implementing server can validate in order to\nmaintain integrity of the datastore.\nTopology types are indicated through separate data nodes;\nthe set of topology types is expected to increase over time.\nTo add support for a new topology, an augmenting module\nneeds to augment this container with a new empty optional\ncontainer to indicate the new topology type.\nThe use of a container allows to indicate a subcategorization\nof topology types.\nThe container SHALL NOT be augmented with any data nodes\nthat serve a purpose other than identifying a particular\ntopology type.\n","summary":"GET - Controller - network-topology - topology-types","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types"}},"application/json":{"schema":{"properties":{"topology-types":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/l3-unicast-igp-topology:l3-unicast-igp-topology":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - l3-unicast-igp-topology","requestBody":{"description":"ospf","content":{"application/json":{"schema":{"properties":{"ospf":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_ospf","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_ospf"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"put":{"description":"","summary":"PUT - network-topology - Controller - l3-unicast-igp-topology","requestBody":{"description":"l3-unicast-igp-topology","content":{"application/json":{"schema":{"properties":{"l3-unicast-igp-topology:l3-unicast-igp-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - l3-unicast-igp-topology","requestBody":{"description":"l3-unicast-igp-topology","content":{"application/yang-data+json":{"schema":{"properties":{"l3-unicast-igp-topology:l3-unicast-igp-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - l3-unicast-igp-topology","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - l3-unicast-igp-topology","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology"}},"application/json":{"schema":{"properties":{"l3-unicast-igp-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/l3-unicast-igp-topology:l3-unicast-igp-topology/ospf-topology:ospf":{"put":{"description":"","summary":"PUT - network-topology - Controller - ospf","requestBody":{"description":"ospf","content":{"application/json":{"schema":{"properties":{"ospf-topology:ospf":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_ospf","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_ospf"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - ospf","requestBody":{"description":"ospf","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:ospf":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_ospf","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_ospf"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - ospf","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - ospf","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_ospf"}},"application/json":{"schema":{"properties":{"ospf":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_ospf","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/l3-unicast-igp-topology:l3-unicast-igp-topology/isis-topology:isis":{"put":{"description":"","summary":"PUT - network-topology - Controller - isis","requestBody":{"description":"isis","content":{"application/json":{"schema":{"properties":{"isis-topology:isis":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_isis","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_isis"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - isis","requestBody":{"description":"isis","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:isis":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_isis","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_isis"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - isis","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - isis","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_isis"}},"application/json":{"schema":{"properties":{"isis":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_isis","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/network-topology-sr:topology-sr":{"put":{"description":"","summary":"PUT - network-topology - Controller - topology-sr","requestBody":{"description":"topology-sr","content":{"application/json":{"schema":{"properties":{"network-topology-sr:topology-sr":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-sr","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-sr"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - topology-sr","requestBody":{"description":"topology-sr","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology-sr:topology-sr":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-sr","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-sr"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - topology-sr","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - topology-sr","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-sr"}},"application/json":{"schema":{"properties":{"topology-sr":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-sr","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/topology-tunnel:topology-tunnel":{"put":{"description":"","summary":"PUT - network-topology - Controller - topology-tunnel","requestBody":{"description":"topology-tunnel","content":{"application/json":{"schema":{"properties":{"topology-tunnel:topology-tunnel":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-tunnel","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-tunnel"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - topology-tunnel","requestBody":{"description":"topology-tunnel","content":{"application/yang-data+json":{"schema":{"properties":{"topology-tunnel:topology-tunnel":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-tunnel","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-tunnel"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - topology-tunnel","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - topology-tunnel","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-tunnel"}},"application/json":{"schema":{"properties":{"topology-tunnel":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-tunnel","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/odl-bgp-topology-types:bgp-ipv4-reachability-topology":{"put":{"description":"","summary":"PUT - network-topology - Controller - bgp-ipv4-reachability-topology","requestBody":{"description":"bgp-ipv4-reachability-topology","content":{"application/json":{"schema":{"properties":{"odl-bgp-topology-types:bgp-ipv4-reachability-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-ipv4-reachability-topology","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-ipv4-reachability-topology"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - bgp-ipv4-reachability-topology","requestBody":{"description":"bgp-ipv4-reachability-topology","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-topology-types:bgp-ipv4-reachability-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-ipv4-reachability-topology","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-ipv4-reachability-topology"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - bgp-ipv4-reachability-topology","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - bgp-ipv4-reachability-topology","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-ipv4-reachability-topology"}},"application/json":{"schema":{"properties":{"bgp-ipv4-reachability-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-ipv4-reachability-topology","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/odl-bgp-topology-types:bgp-ipv6-reachability-topology":{"put":{"description":"","summary":"PUT - network-topology - Controller - bgp-ipv6-reachability-topology","requestBody":{"description":"bgp-ipv6-reachability-topology","content":{"application/json":{"schema":{"properties":{"odl-bgp-topology-types:bgp-ipv6-reachability-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-ipv6-reachability-topology","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-ipv6-reachability-topology"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - bgp-ipv6-reachability-topology","requestBody":{"description":"bgp-ipv6-reachability-topology","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-topology-types:bgp-ipv6-reachability-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-ipv6-reachability-topology","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-ipv6-reachability-topology"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - bgp-ipv6-reachability-topology","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - bgp-ipv6-reachability-topology","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-ipv6-reachability-topology"}},"application/json":{"schema":{"properties":{"bgp-ipv6-reachability-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-ipv6-reachability-topology","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/odl-bgp-topology-types:bgp-linkstate-topology":{"put":{"description":"","summary":"PUT - network-topology - Controller - bgp-linkstate-topology","requestBody":{"description":"bgp-linkstate-topology","content":{"application/json":{"schema":{"properties":{"odl-bgp-topology-types:bgp-linkstate-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-linkstate-topology","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-linkstate-topology"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - bgp-linkstate-topology","requestBody":{"description":"bgp-linkstate-topology","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-topology-types:bgp-linkstate-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-linkstate-topology","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-linkstate-topology"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - bgp-linkstate-topology","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - bgp-linkstate-topology","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-linkstate-topology"}},"application/json":{"schema":{"properties":{"bgp-linkstate-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-linkstate-topology","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/topology-tunnel-pcep:topology-tunnel-pcep":{"put":{"description":"","summary":"PUT - network-topology - Controller - topology-tunnel-pcep","requestBody":{"description":"topology-tunnel-pcep","content":{"application/json":{"schema":{"properties":{"topology-tunnel-pcep:topology-tunnel-pcep":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-tunnel-pcep","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-tunnel-pcep"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - topology-tunnel-pcep","requestBody":{"description":"topology-tunnel-pcep","content":{"application/yang-data+json":{"schema":{"properties":{"topology-tunnel-pcep:topology-tunnel-pcep":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-tunnel-pcep","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-tunnel-pcep"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - topology-tunnel-pcep","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - topology-tunnel-pcep","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-tunnel-pcep"}},"application/json":{"schema":{"properties":{"topology-tunnel-pcep":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-tunnel-pcep","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/netconf-node-topology:topology-netconf":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - topology-netconf","requestBody":{"description":"ssh-transport-topology-parameters","content":{"application/json":{"schema":{"properties":{"ssh-transport-topology-parameters":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"put":{"description":"","summary":"PUT - network-topology - Controller - topology-netconf","requestBody":{"description":"topology-netconf","content":{"application/json":{"schema":{"properties":{"netconf-node-topology:topology-netconf":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - topology-netconf","requestBody":{"description":"topology-netconf","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-node-topology:topology-netconf":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - topology-netconf","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - topology-netconf","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf"}},"application/json":{"schema":{"properties":{"topology-netconf":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/netconf-node-topology:topology-netconf/ssh-transport-topology-parameters":{"post":{"description":"Default topology wide configurable parameters of the SSH transport layer.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - ssh-transport-topology-parameters","requestBody":{"description":"host-key","content":{"application/json":{"schema":{"properties":{"host-key":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_host-key","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_host-key"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"put":{"description":"Default topology wide configurable parameters of the SSH transport layer.","summary":"PUT - network-topology - Controller - ssh-transport-topology-parameters","requestBody":{"description":"ssh-transport-topology-parameters","content":{"application/json":{"schema":{"properties":{"netconf-node-topology:ssh-transport-topology-parameters":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"Default topology wide configurable parameters of the SSH transport layer.","summary":"PATCH - network-topology - Controller - ssh-transport-topology-parameters","requestBody":{"description":"ssh-transport-topology-parameters","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-node-topology:ssh-transport-topology-parameters":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"Default topology wide configurable parameters of the SSH transport layer.","summary":"DELETE - Controller - network-topology - ssh-transport-topology-parameters","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"Default topology wide configurable parameters of the SSH transport layer.","summary":"GET - Controller - network-topology - ssh-transport-topology-parameters","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters"}},"application/json":{"schema":{"properties":{"ssh-transport-topology-parameters":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/netconf-node-topology:topology-netconf/ssh-transport-topology-parameters/host-key":{"put":{"description":"Parameters regarding host key.","summary":"PUT - network-topology - Controller - host-key","requestBody":{"description":"host-key","content":{"application/json":{"schema":{"properties":{"netconf-node-topology:host-key":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_host-key","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_host-key"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"Parameters regarding host key.","summary":"PATCH - network-topology - Controller - host-key","requestBody":{"description":"host-key","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-node-topology:host-key":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_host-key","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_host-key"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"Parameters regarding host key.","summary":"DELETE - Controller - network-topology - host-key","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"Parameters regarding host key.","summary":"GET - Controller - network-topology - host-key","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_host-key"}},"application/json":{"schema":{"properties":{"host-key":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_host-key","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/netconf-node-topology:topology-netconf/ssh-transport-topology-parameters/key-exchange":{"put":{"description":"Parameters regarding key exchange.","summary":"PUT - network-topology - Controller - key-exchange","requestBody":{"description":"key-exchange","content":{"application/json":{"schema":{"properties":{"netconf-node-topology:key-exchange":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_key-exchange","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_key-exchange"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"Parameters regarding key exchange.","summary":"PATCH - network-topology - Controller - key-exchange","requestBody":{"description":"key-exchange","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-node-topology:key-exchange":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_key-exchange","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_key-exchange"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"Parameters regarding key exchange.","summary":"DELETE - Controller - network-topology - key-exchange","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"Parameters regarding key exchange.","summary":"GET - Controller - network-topology - key-exchange","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_key-exchange"}},"application/json":{"schema":{"properties":{"key-exchange":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_key-exchange","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/netconf-node-topology:topology-netconf/ssh-transport-topology-parameters/encryption":{"put":{"description":"Parameters regarding encryption.","summary":"PUT - network-topology - Controller - encryption","requestBody":{"description":"encryption","content":{"application/json":{"schema":{"properties":{"netconf-node-topology:encryption":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_encryption","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_encryption"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"Parameters regarding encryption.","summary":"PATCH - network-topology - Controller - encryption","requestBody":{"description":"encryption","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-node-topology:encryption":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_encryption","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_encryption"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"Parameters regarding encryption.","summary":"DELETE - Controller - network-topology - encryption","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"Parameters regarding encryption.","summary":"GET - Controller - network-topology - encryption","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_encryption"}},"application/json":{"schema":{"properties":{"encryption":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_encryption","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/netconf-node-topology:topology-netconf/ssh-transport-topology-parameters/mac":{"put":{"description":"Parameters regarding message authentication code (MAC).","summary":"PUT - network-topology - Controller - mac","requestBody":{"description":"mac","content":{"application/json":{"schema":{"properties":{"netconf-node-topology:mac":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_mac","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_mac"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"Parameters regarding message authentication code (MAC).","summary":"PATCH - network-topology - Controller - mac","requestBody":{"description":"mac","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-node-topology:mac":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_mac","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_mac"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"Parameters regarding message authentication code (MAC).","summary":"DELETE - Controller - network-topology - mac","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"Parameters regarding message authentication code (MAC).","summary":"GET - Controller - network-topology - mac","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_mac"}},"application/json":{"schema":{"properties":{"mac":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_mac","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/network-topology-pcep:topology-pcep":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - topology-pcep","requestBody":{"description":"session-config","content":{"application/json":{"schema":{"properties":{"session-config":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"put":{"description":"","summary":"PUT - network-topology - Controller - topology-pcep","requestBody":{"description":"topology-pcep","content":{"application/json":{"schema":{"properties":{"network-topology-pcep:topology-pcep":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - topology-pcep","requestBody":{"description":"topology-pcep","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology-pcep:topology-pcep":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - topology-pcep","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - topology-pcep","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep"}},"application/json":{"schema":{"properties":{"topology-pcep":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/network-topology-pcep:topology-pcep/session-config":{"post":{"description":"PCEP topology config\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - session-config","requestBody":{"description":"tls","content":{"application/json":{"schema":{"properties":{"tls":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config_tls","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config_tls"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"put":{"description":"PCEP topology config","summary":"PUT - network-topology - Controller - session-config","requestBody":{"description":"session-config","content":{"application/json":{"schema":{"properties":{"network-topology-pcep:session-config":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"PCEP topology config","summary":"PATCH - network-topology - Controller - session-config","requestBody":{"description":"session-config","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology-pcep:session-config":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"PCEP topology config","summary":"DELETE - Controller - network-topology - session-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"PCEP topology config","summary":"GET - Controller - network-topology - session-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config"}},"application/json":{"schema":{"properties":{"session-config":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/network-topology-pcep:topology-pcep/session-config/tls":{"put":{"description":"","summary":"PUT - network-topology - Controller - tls","requestBody":{"description":"tls","content":{"application/json":{"schema":{"properties":{"network-topology-pcep:tls":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config_tls","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config_tls"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - tls","requestBody":{"description":"tls","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology-pcep:tls":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config_tls","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config_tls"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - tls","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - tls","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config_tls"}},"application/json":{"schema":{"properties":{"tls":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config_tls","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/network-topology-pcep:topology-pcep/odl-pcep-topology-provider:capabilities":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - capabilities","requestBody":{"description":"association-group","content":{"application/json":{"schema":{"properties":{"association-group":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_association-group","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_association-group"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"put":{"description":"","summary":"PUT - network-topology - Controller - capabilities","requestBody":{"description":"capabilities","content":{"application/json":{"schema":{"properties":{"odl-pcep-topology-provider:capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - capabilities","requestBody":{"description":"capabilities","content":{"application/yang-data+json":{"schema":{"properties":{"odl-pcep-topology-provider:capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - capabilities","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - capabilities","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities"}},"application/json":{"schema":{"properties":{"capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/network-topology-pcep:topology-pcep/odl-pcep-topology-provider:capabilities/association-group":{"put":{"description":"","summary":"PUT - network-topology - Controller - association-group","requestBody":{"description":"association-group","content":{"application/json":{"schema":{"properties":{"odl-pcep-topology-provider:association-group":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_association-group","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_association-group"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - association-group","requestBody":{"description":"association-group","content":{"application/yang-data+json":{"schema":{"properties":{"odl-pcep-topology-provider:association-group":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_association-group","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_association-group"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - association-group","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - association-group","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_association-group"}},"application/json":{"schema":{"properties":{"association-group":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_association-group","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/network-topology-pcep:topology-pcep/odl-pcep-topology-provider:capabilities/stateful":{"put":{"description":"","summary":"PUT - network-topology - Controller - stateful","requestBody":{"description":"stateful","content":{"application/json":{"schema":{"properties":{"odl-pcep-topology-provider:stateful":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_stateful","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_stateful"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - stateful","requestBody":{"description":"stateful","content":{"application/yang-data+json":{"schema":{"properties":{"odl-pcep-topology-provider:stateful":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_stateful","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_stateful"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - stateful","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - stateful","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_stateful"}},"application/json":{"schema":{"properties":{"stateful":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_stateful","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/network-topology-pcep:topology-pcep/odl-pcep-topology-provider:capabilities/path-setup-type":{"put":{"description":"","summary":"PUT - network-topology - Controller - path-setup-type","requestBody":{"description":"path-setup-type","content":{"application/json":{"schema":{"properties":{"odl-pcep-topology-provider:path-setup-type":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_path-setup-type","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_path-setup-type"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - path-setup-type","requestBody":{"description":"path-setup-type","content":{"application/yang-data+json":{"schema":{"properties":{"odl-pcep-topology-provider:path-setup-type":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_path-setup-type","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_path-setup-type"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - path-setup-type","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - path-setup-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_path-setup-type"}},"application/json":{"schema":{"properties":{"path-setup-type":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_path-setup-type","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-types/network-topology-pcep:topology-pcep/odl-pcep-topology-provider:capabilities/p2mp":{"put":{"description":"","summary":"PUT - network-topology - Controller - p2mp","requestBody":{"description":"p2mp","content":{"application/json":{"schema":{"properties":{"odl-pcep-topology-provider:p2mp":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_p2mp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_p2mp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - p2mp","requestBody":{"description":"p2mp","content":{"application/yang-data+json":{"schema":{"properties":{"odl-pcep-topology-provider:p2mp":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_p2mp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_p2mp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - p2mp","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - p2mp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_p2mp"}},"application/json":{"schema":{"properties":{"p2mp":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_p2mp","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/underlay-topology={topology-ref}":{"put":{"description":"Identifies the topology, or topologies, that this topology\nis dependent on.","summary":"PUT - network-topology - Controller - underlay-topology","requestBody":{"description":"underlay-topology","content":{"application/json":{"schema":{"properties":{"network-topology:underlay-topology":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_underlay-topology","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_underlay-topology"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"topology-ref","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Identifies the topology, or topologies, that this topology\nis dependent on.","summary":"PATCH - network-topology - Controller - underlay-topology","requestBody":{"description":"underlay-topology","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology:underlay-topology":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_underlay-topology","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_underlay-topology"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"topology-ref","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Identifies the topology, or topologies, that this topology\nis dependent on.","summary":"DELETE - Controller - network-topology - underlay-topology","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"topology-ref","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Identifies the topology, or topologies, that this topology\nis dependent on.","summary":"GET - Controller - network-topology - underlay-topology","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_underlay-topology"}},"application/json":{"schema":{"properties":{"underlay-topology":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_underlay-topology","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"topology-ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}":{"put":{"description":"The list of network nodes defined for the topology.","summary":"PUT - network-topology - Controller - node","requestBody":{"description":"node","content":{"application/json":{"schema":{"properties":{"network-topology:node":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"The list of network nodes defined for the topology.","summary":"PATCH - network-topology - Controller - node","requestBody":{"description":"node","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology:node":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"The list of network nodes defined for the topology.","summary":"DELETE - Controller - network-topology - node","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"The list of network nodes defined for the topology.","summary":"GET - Controller - network-topology - node","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node"}},"application/json":{"schema":{"properties":{"node":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/supporting-node={topology-ref},{node-ref}":{"put":{"description":"This list defines vertical layering information for nodes.\nIt allows to capture for any given node, which node (or nodes)\nin the corresponding underlay topology it maps onto.\nA node can map to zero, one, or more nodes below it;\naccordingly there can be zero, one, or more elements in the list.\nIf there are specific layering requirements, for example\nspecific to a particular type of topology that only allows\nfor certain layering relationships, the choice\nbelow can be augmented with additional cases.\nA list has been chosen rather than a leaf-list in order\nto provide room for augmentations, e.g. for\nstatistics or priorization information associated with\nsupporting nodes.","summary":"PUT - network-topology - Controller - supporting-node","requestBody":{"description":"supporting-node","content":{"application/json":{"schema":{"properties":{"network-topology:supporting-node":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supporting-node","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supporting-node"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"topology-ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"node-ref","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"This list defines vertical layering information for nodes.\nIt allows to capture for any given node, which node (or nodes)\nin the corresponding underlay topology it maps onto.\nA node can map to zero, one, or more nodes below it;\naccordingly there can be zero, one, or more elements in the list.\nIf there are specific layering requirements, for example\nspecific to a particular type of topology that only allows\nfor certain layering relationships, the choice\nbelow can be augmented with additional cases.\nA list has been chosen rather than a leaf-list in order\nto provide room for augmentations, e.g. for\nstatistics or priorization information associated with\nsupporting nodes.","summary":"PATCH - network-topology - Controller - supporting-node","requestBody":{"description":"supporting-node","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology:supporting-node":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supporting-node","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supporting-node"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"topology-ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"node-ref","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"This list defines vertical layering information for nodes.\nIt allows to capture for any given node, which node (or nodes)\nin the corresponding underlay topology it maps onto.\nA node can map to zero, one, or more nodes below it;\naccordingly there can be zero, one, or more elements in the list.\nIf there are specific layering requirements, for example\nspecific to a particular type of topology that only allows\nfor certain layering relationships, the choice\nbelow can be augmented with additional cases.\nA list has been chosen rather than a leaf-list in order\nto provide room for augmentations, e.g. for\nstatistics or priorization information associated with\nsupporting nodes.","summary":"DELETE - Controller - network-topology - supporting-node","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"topology-ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"node-ref","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"This list defines vertical layering information for nodes.\nIt allows to capture for any given node, which node (or nodes)\nin the corresponding underlay topology it maps onto.\nA node can map to zero, one, or more nodes below it;\naccordingly there can be zero, one, or more elements in the list.\nIf there are specific layering requirements, for example\nspecific to a particular type of topology that only allows\nfor certain layering relationships, the choice\nbelow can be augmented with additional cases.\nA list has been chosen rather than a leaf-list in order\nto provide room for augmentations, e.g. for\nstatistics or priorization information associated with\nsupporting nodes.","summary":"GET - Controller - network-topology - supporting-node","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supporting-node"}},"application/json":{"schema":{"properties":{"supporting-node":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supporting-node","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"topology-ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"node-ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/supporting-node={topology-ref},{node-ref}/topology-tunnel-pcep:path-computation-client":{"put":{"description":"","summary":"PUT - network-topology - Controller - path-computation-client","requestBody":{"description":"path-computation-client","content":{"application/json":{"schema":{"properties":{"topology-tunnel-pcep:path-computation-client":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supporting-node_path-computation-client","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supporting-node_path-computation-client"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"topology-ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"node-ref","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - path-computation-client","requestBody":{"description":"path-computation-client","content":{"application/yang-data+json":{"schema":{"properties":{"topology-tunnel-pcep:path-computation-client":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supporting-node_path-computation-client","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supporting-node_path-computation-client"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"topology-ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"node-ref","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - path-computation-client","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"topology-ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"node-ref","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - network-topology - path-computation-client","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supporting-node_path-computation-client"}},"application/json":{"schema":{"properties":{"path-computation-client":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supporting-node_path-computation-client","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"topology-ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"node-ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}":{"put":{"description":"A termination point can terminate a link.\nDepending on the type of topology, a termination point could,\nfor example, refer to a port or an interface.","summary":"PUT - network-topology - Controller - termination-point","requestBody":{"description":"termination-point","content":{"application/json":{"schema":{"properties":{"network-topology:termination-point":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"A termination point can terminate a link.\nDepending on the type of topology, a termination point could,\nfor example, refer to a port or an interface.","summary":"PATCH - network-topology - Controller - termination-point","requestBody":{"description":"termination-point","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology:termination-point":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"A termination point can terminate a link.\nDepending on the type of topology, a termination point could,\nfor example, refer to a port or an interface.","summary":"DELETE - Controller - network-topology - termination-point","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"A termination point can terminate a link.\nDepending on the type of topology, a termination point could,\nfor example, refer to a port or an interface.","summary":"GET - Controller - network-topology - termination-point","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point"}},"application/json":{"schema":{"properties":{"termination-point":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/hwvtep:vlan-bindings={vlan-id-key}":{"put":{"description":"A map of vlan ID to logical switch pairs","summary":"PUT - network-topology - Controller - vlan-bindings","requestBody":{"description":"vlan-bindings","content":{"application/json":{"schema":{"properties":{"hwvtep:vlan-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_vlan-bindings","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_vlan-bindings"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"vlan-id-key","in":"path","required":true,"schema":{"type":"integer"},"description":"vlan ids in the range 0 - 4095"}]},"patch":{"description":"A map of vlan ID to logical switch pairs","summary":"PATCH - network-topology - Controller - vlan-bindings","requestBody":{"description":"vlan-bindings","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:vlan-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_vlan-bindings","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_vlan-bindings"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"vlan-id-key","in":"path","required":true,"schema":{"type":"integer"},"description":"vlan ids in the range 0 - 4095"}]},"delete":{"description":"A map of vlan ID to logical switch pairs","summary":"DELETE - Controller - network-topology - vlan-bindings","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"vlan-id-key","in":"path","required":true,"schema":{"type":"integer"},"description":"vlan ids in the range 0 - 4095"}]},"get":{"description":"A map of vlan ID to logical switch pairs","summary":"GET - Controller - network-topology - vlan-bindings","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_vlan-bindings"}},"application/json":{"schema":{"properties":{"vlan-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_vlan-bindings","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"vlan-id-key","in":"path","required":true,"schema":{"type":"integer"},"description":"vlan ids in the range 0 - 4095"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/hwvtep:acl-bindings={acl-binding-vlan-id}":{"put":{"description":"","summary":"PUT - network-topology - Controller - acl-bindings","requestBody":{"description":"acl-bindings","content":{"application/json":{"schema":{"properties":{"hwvtep:acl-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_acl-bindings","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_acl-bindings"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"acl-binding-vlan-id","in":"path","required":true,"schema":{"type":"integer"},"description":"vlan ids in the range 0 - 4095"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - acl-bindings","requestBody":{"description":"acl-bindings","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:acl-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_acl-bindings","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_acl-bindings"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"acl-binding-vlan-id","in":"path","required":true,"schema":{"type":"integer"},"description":"vlan ids in the range 0 - 4095"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - acl-bindings","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"acl-binding-vlan-id","in":"path","required":true,"schema":{"type":"integer"},"description":"vlan ids in the range 0 - 4095"}]},"get":{"description":"","summary":"GET - Controller - network-topology - acl-bindings","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_acl-bindings"}},"application/json":{"schema":{"properties":{"acl-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_acl-bindings","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"acl-binding-vlan-id","in":"path","required":true,"schema":{"type":"integer"},"description":"vlan ids in the range 0 - 4095"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/hwvtep:vlan-stats={vlan-stats-key}":{"put":{"description":"","summary":"PUT - network-topology - Controller - vlan-stats","requestBody":{"description":"vlan-stats","content":{"application/json":{"schema":{"properties":{"hwvtep:vlan-stats":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_vlan-stats","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_vlan-stats"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"vlan-stats-key","in":"path","required":true,"schema":{"type":"integer"},"description":"vlan ids in the range 0 - 4095"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - vlan-stats","requestBody":{"description":"vlan-stats","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:vlan-stats":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_vlan-stats","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_vlan-stats"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"vlan-stats-key","in":"path","required":true,"schema":{"type":"integer"},"description":"vlan ids in the range 0 - 4095"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - vlan-stats","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"vlan-stats-key","in":"path","required":true,"schema":{"type":"integer"},"description":"vlan ids in the range 0 - 4095"}]},"get":{"description":"","summary":"GET - Controller - network-topology - vlan-stats","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_vlan-stats"}},"application/json":{"schema":{"properties":{"vlan-stats":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_vlan-stats","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"vlan-stats-key","in":"path","required":true,"schema":{"type":"integer"},"description":"vlan ids in the range 0 - 4095"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/hwvtep:port-fault-status={port-fault-status-key}":{"get":{"description":"","summary":"GET - Controller - network-topology - port-fault-status","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-fault-status"}},"application/json":{"schema":{"properties":{"port-fault-status":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-fault-status","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"port-fault-status-key","in":"path","required":true,"schema":{"type":"string"},"description":"port-fault-status name/key"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/ovsdb:options={option}":{"put":{"description":"Port/Interface related optional input values","summary":"PUT - network-topology - Controller - options","requestBody":{"description":"options","content":{"application/json":{"schema":{"properties":{"ovsdb:options":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_options","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_options"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"option","in":"path","required":true,"schema":{"type":"string"},"description":"Option name"}]},"patch":{"description":"Port/Interface related optional input values","summary":"PATCH - network-topology - Controller - options","requestBody":{"description":"options","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:options":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_options","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_options"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"option","in":"path","required":true,"schema":{"type":"string"},"description":"Option name"}]},"delete":{"description":"Port/Interface related optional input values","summary":"DELETE - Controller - network-topology - options","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"option","in":"path","required":true,"schema":{"type":"string"},"description":"Option name"}]},"get":{"description":"Port/Interface related optional input values","summary":"GET - Controller - network-topology - options","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_options"}},"application/json":{"schema":{"properties":{"options":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_options","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"option","in":"path","required":true,"schema":{"type":"string"},"description":"Option name"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/ovsdb:trunks":{"put":{"description":"Represents the trunks of a termination point.","summary":"PUT - network-topology - Controller - trunks","requestBody":{"description":"trunks","content":{"application/json":{"schema":{"properties":{"ovsdb:trunks":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_trunks","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_trunks"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Represents the trunks of a termination point.","summary":"PATCH - network-topology - Controller - trunks","requestBody":{"description":"trunks","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:trunks":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_trunks","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_trunks"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Represents the trunks of a termination point.","summary":"DELETE - Controller - network-topology - trunks","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Represents the trunks of a termination point.","summary":"GET - Controller - network-topology - trunks","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_trunks"}},"application/json":{"schema":{"properties":{"trunks":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_trunks","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/ovsdb:port-other-configs={other-config-key}":{"put":{"description":"Other config attributes for Ports\n\nother_config : priority-tags: optional string\neither true or false An 802.1Q header contains two important pieces of\ninformation: a VLAN ID and a priority.\n\nother_config : bond-hash-basis: optional string\ncontaining an integer An integer hashed along with flows when choosing output\nslaves in load balanced bonds. When changed, all flows will be\nassigned different hash values possibly causing slave selection\ndecisions to change.\n\nother_config : bond-detect-mode: optional string\neither miimon or carrier The means used to detect link failures. Defaults to\ncarrier which uses each interface's carrier to detect failures.\nWhen set to miimon, will check for failures by polling each\ninterface's MII.\n\nother_config : bond-miimon-interval: optional string\ncontaining an integer The interval, in milliseconds, between successive\nattempts to poll each interface's MII. Relevant only when\nother_config:bond-detect-mode is miimon\n\nother_config : lacp-system-id: optional string\nThe LACP system ID of this Port. The system ID of a LACP bond\nis used to identify itself to its partners. Must be a nonzero\nMAC address. Defaults to the bridge Ethernet address if unset.\n\nother_config : lacp-system-priority: optional string\ncontaining an integer, in range 1 to 65,535 The LACP system priority of this\nPort. In LACP negotiations, link status decisions are made by\nthe system with the numerically lower priority.\n\nother_config : lacp-time: optional string\neither slow or fast. The LACP timing which should be used on this Port. By default\nslow is used. When configured to be fast LACP heartbeats are\nrequested at a rate of once per second causing connectivity\nproblems to be detected more quickly. In slow mode, heartbeats\nare requested at a rate of once every 30 seconds.\n\nother_config : lacp-fallback-ab: optional string\neither true or false Determines the behavior of openvswitch bond in LACP mode.\nIf the partner switch does not support LACP, setting this\noption to true allows openvswitch to fallback to active-backup.\nIf the option is set to false, the bond will be disabled.\nIn both the cases, once the partner switch is configured\nto LACP mode, the bond will use LACP.\n\nother_config : bond-rebalance-interval: optional string,\ncontaining an integer, in range 0 to 10,000 For a load\nbalanced bonded port, the number of milliseconds between\nsuccessive attempts to rebalance the bond, that is, to move\nflows from one interface on the bond to another in an attempt\nto keep usage of each interface roughly equal. If zero, load\nbalancing is disabled on the bond (link failure still cause\nflows to move). If less than 1000ms, the rebalance interval\nwill be 1000ms.\n\nother_config : stp-enable: optional string\neither true or false. If spanning tree is enabled on the bridge, member ports are\nenabled by default (with the exception of bond, internal, and\nmirror ports which do not work with STP). If this column's\nvalue is false spanning tree is disabled on the port.\n\nother_config : stp-port-num: optional string\ncontaining an integer, in range 1 to 255 The port number used for the lower 8\nbits of the port-id. By default, the numbers will be assigned\nautomatically. If any port's number is manually configured on\na bridge, then they must all be.\n\nother_config : stp-port-priority: optional string\ncontaining an integer, in range 0 to 255 The port's relative priority value\nfor determining the root port (the upper 8 bits of the port-id).\n\nother_config : stp-path-cost: optional string\ncontaining an integer, in range 0 to 65,535 Spanning tree path cost for the\nport. A lower number indicates a faster link. By default, the\ncost is based on the maximum speed of the link.\n\nother_config : rstp-enable: optional string\neither true or false\nIf rapid spanning tree is enabled on the bridge, member ports\nare enabled by default (with the exception of bond, internal,\nand mirror ports which do not work with RSTP). If this\ncolumn's value is false rapid spanning tree is disabled on\nthe port.\n\nother_config : rstp-port-priority: optional string\ncontaining an integer, in range 0 to 240 The port's relative priority value\nfor determining the root port, in multiples of 16. By default,\nthe port priority is 0x80 (128).\n\nother_config : rstp-port-num: optional string\ncontaining an integer, in range 1 to 4,095 The local RSTP port number, used\nas the lower 12 bits of the port-id.\n\nother_config : rstp-port-path-cost: optional string\ncontaining an integer The port path cost. The Port's contribution, when it\nis the Root Port, to the Root Path Cost for the Bridge.\n\nother_config : rstp-port-admin-edge: optional string\neither true or false\n\nother_config : rstp-port-auto-edge: optional string\neither true or false The auto edge port parameter for the Port. Default\nis true.\n\nother_config : rstp-port-mcheck: optional string\neither true or false The mcheck port parameter for the Port. Default is false.\n\nother_config : mcast-snooping-flood: optional string\neither true or false If set to true, multicast packets are\nunconditionally forwarded to the specific port","summary":"PUT - network-topology - Controller - port-other-configs","requestBody":{"description":"port-other-configs","content":{"application/json":{"schema":{"properties":{"ovsdb:port-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-other-configs","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-other-configs"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"port-other-config name/key"}]},"patch":{"description":"Other config attributes for Ports\n\nother_config : priority-tags: optional string\neither true or false An 802.1Q header contains two important pieces of\ninformation: a VLAN ID and a priority.\n\nother_config : bond-hash-basis: optional string\ncontaining an integer An integer hashed along with flows when choosing output\nslaves in load balanced bonds. When changed, all flows will be\nassigned different hash values possibly causing slave selection\ndecisions to change.\n\nother_config : bond-detect-mode: optional string\neither miimon or carrier The means used to detect link failures. Defaults to\ncarrier which uses each interface's carrier to detect failures.\nWhen set to miimon, will check for failures by polling each\ninterface's MII.\n\nother_config : bond-miimon-interval: optional string\ncontaining an integer The interval, in milliseconds, between successive\nattempts to poll each interface's MII. Relevant only when\nother_config:bond-detect-mode is miimon\n\nother_config : lacp-system-id: optional string\nThe LACP system ID of this Port. The system ID of a LACP bond\nis used to identify itself to its partners. Must be a nonzero\nMAC address. Defaults to the bridge Ethernet address if unset.\n\nother_config : lacp-system-priority: optional string\ncontaining an integer, in range 1 to 65,535 The LACP system priority of this\nPort. In LACP negotiations, link status decisions are made by\nthe system with the numerically lower priority.\n\nother_config : lacp-time: optional string\neither slow or fast. The LACP timing which should be used on this Port. By default\nslow is used. When configured to be fast LACP heartbeats are\nrequested at a rate of once per second causing connectivity\nproblems to be detected more quickly. In slow mode, heartbeats\nare requested at a rate of once every 30 seconds.\n\nother_config : lacp-fallback-ab: optional string\neither true or false Determines the behavior of openvswitch bond in LACP mode.\nIf the partner switch does not support LACP, setting this\noption to true allows openvswitch to fallback to active-backup.\nIf the option is set to false, the bond will be disabled.\nIn both the cases, once the partner switch is configured\nto LACP mode, the bond will use LACP.\n\nother_config : bond-rebalance-interval: optional string,\ncontaining an integer, in range 0 to 10,000 For a load\nbalanced bonded port, the number of milliseconds between\nsuccessive attempts to rebalance the bond, that is, to move\nflows from one interface on the bond to another in an attempt\nto keep usage of each interface roughly equal. If zero, load\nbalancing is disabled on the bond (link failure still cause\nflows to move). If less than 1000ms, the rebalance interval\nwill be 1000ms.\n\nother_config : stp-enable: optional string\neither true or false. If spanning tree is enabled on the bridge, member ports are\nenabled by default (with the exception of bond, internal, and\nmirror ports which do not work with STP). If this column's\nvalue is false spanning tree is disabled on the port.\n\nother_config : stp-port-num: optional string\ncontaining an integer, in range 1 to 255 The port number used for the lower 8\nbits of the port-id. By default, the numbers will be assigned\nautomatically. If any port's number is manually configured on\na bridge, then they must all be.\n\nother_config : stp-port-priority: optional string\ncontaining an integer, in range 0 to 255 The port's relative priority value\nfor determining the root port (the upper 8 bits of the port-id).\n\nother_config : stp-path-cost: optional string\ncontaining an integer, in range 0 to 65,535 Spanning tree path cost for the\nport. A lower number indicates a faster link. By default, the\ncost is based on the maximum speed of the link.\n\nother_config : rstp-enable: optional string\neither true or false\nIf rapid spanning tree is enabled on the bridge, member ports\nare enabled by default (with the exception of bond, internal,\nand mirror ports which do not work with RSTP). If this\ncolumn's value is false rapid spanning tree is disabled on\nthe port.\n\nother_config : rstp-port-priority: optional string\ncontaining an integer, in range 0 to 240 The port's relative priority value\nfor determining the root port, in multiples of 16. By default,\nthe port priority is 0x80 (128).\n\nother_config : rstp-port-num: optional string\ncontaining an integer, in range 1 to 4,095 The local RSTP port number, used\nas the lower 12 bits of the port-id.\n\nother_config : rstp-port-path-cost: optional string\ncontaining an integer The port path cost. The Port's contribution, when it\nis the Root Port, to the Root Path Cost for the Bridge.\n\nother_config : rstp-port-admin-edge: optional string\neither true or false\n\nother_config : rstp-port-auto-edge: optional string\neither true or false The auto edge port parameter for the Port. Default\nis true.\n\nother_config : rstp-port-mcheck: optional string\neither true or false The mcheck port parameter for the Port. Default is false.\n\nother_config : mcast-snooping-flood: optional string\neither true or false If set to true, multicast packets are\nunconditionally forwarded to the specific port","summary":"PATCH - network-topology - Controller - port-other-configs","requestBody":{"description":"port-other-configs","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:port-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-other-configs","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-other-configs"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"port-other-config name/key"}]},"delete":{"description":"Other config attributes for Ports\n\nother_config : priority-tags: optional string\neither true or false An 802.1Q header contains two important pieces of\ninformation: a VLAN ID and a priority.\n\nother_config : bond-hash-basis: optional string\ncontaining an integer An integer hashed along with flows when choosing output\nslaves in load balanced bonds. When changed, all flows will be\nassigned different hash values possibly causing slave selection\ndecisions to change.\n\nother_config : bond-detect-mode: optional string\neither miimon or carrier The means used to detect link failures. Defaults to\ncarrier which uses each interface's carrier to detect failures.\nWhen set to miimon, will check for failures by polling each\ninterface's MII.\n\nother_config : bond-miimon-interval: optional string\ncontaining an integer The interval, in milliseconds, between successive\nattempts to poll each interface's MII. Relevant only when\nother_config:bond-detect-mode is miimon\n\nother_config : lacp-system-id: optional string\nThe LACP system ID of this Port. The system ID of a LACP bond\nis used to identify itself to its partners. Must be a nonzero\nMAC address. Defaults to the bridge Ethernet address if unset.\n\nother_config : lacp-system-priority: optional string\ncontaining an integer, in range 1 to 65,535 The LACP system priority of this\nPort. In LACP negotiations, link status decisions are made by\nthe system with the numerically lower priority.\n\nother_config : lacp-time: optional string\neither slow or fast. The LACP timing which should be used on this Port. By default\nslow is used. When configured to be fast LACP heartbeats are\nrequested at a rate of once per second causing connectivity\nproblems to be detected more quickly. In slow mode, heartbeats\nare requested at a rate of once every 30 seconds.\n\nother_config : lacp-fallback-ab: optional string\neither true or false Determines the behavior of openvswitch bond in LACP mode.\nIf the partner switch does not support LACP, setting this\noption to true allows openvswitch to fallback to active-backup.\nIf the option is set to false, the bond will be disabled.\nIn both the cases, once the partner switch is configured\nto LACP mode, the bond will use LACP.\n\nother_config : bond-rebalance-interval: optional string,\ncontaining an integer, in range 0 to 10,000 For a load\nbalanced bonded port, the number of milliseconds between\nsuccessive attempts to rebalance the bond, that is, to move\nflows from one interface on the bond to another in an attempt\nto keep usage of each interface roughly equal. If zero, load\nbalancing is disabled on the bond (link failure still cause\nflows to move). If less than 1000ms, the rebalance interval\nwill be 1000ms.\n\nother_config : stp-enable: optional string\neither true or false. If spanning tree is enabled on the bridge, member ports are\nenabled by default (with the exception of bond, internal, and\nmirror ports which do not work with STP). If this column's\nvalue is false spanning tree is disabled on the port.\n\nother_config : stp-port-num: optional string\ncontaining an integer, in range 1 to 255 The port number used for the lower 8\nbits of the port-id. By default, the numbers will be assigned\nautomatically. If any port's number is manually configured on\na bridge, then they must all be.\n\nother_config : stp-port-priority: optional string\ncontaining an integer, in range 0 to 255 The port's relative priority value\nfor determining the root port (the upper 8 bits of the port-id).\n\nother_config : stp-path-cost: optional string\ncontaining an integer, in range 0 to 65,535 Spanning tree path cost for the\nport. A lower number indicates a faster link. By default, the\ncost is based on the maximum speed of the link.\n\nother_config : rstp-enable: optional string\neither true or false\nIf rapid spanning tree is enabled on the bridge, member ports\nare enabled by default (with the exception of bond, internal,\nand mirror ports which do not work with RSTP). If this\ncolumn's value is false rapid spanning tree is disabled on\nthe port.\n\nother_config : rstp-port-priority: optional string\ncontaining an integer, in range 0 to 240 The port's relative priority value\nfor determining the root port, in multiples of 16. By default,\nthe port priority is 0x80 (128).\n\nother_config : rstp-port-num: optional string\ncontaining an integer, in range 1 to 4,095 The local RSTP port number, used\nas the lower 12 bits of the port-id.\n\nother_config : rstp-port-path-cost: optional string\ncontaining an integer The port path cost. The Port's contribution, when it\nis the Root Port, to the Root Path Cost for the Bridge.\n\nother_config : rstp-port-admin-edge: optional string\neither true or false\n\nother_config : rstp-port-auto-edge: optional string\neither true or false The auto edge port parameter for the Port. Default\nis true.\n\nother_config : rstp-port-mcheck: optional string\neither true or false The mcheck port parameter for the Port. Default is false.\n\nother_config : mcast-snooping-flood: optional string\neither true or false If set to true, multicast packets are\nunconditionally forwarded to the specific port","summary":"DELETE - Controller - network-topology - port-other-configs","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"port-other-config name/key"}]},"get":{"description":"Other config attributes for Ports\n\nother_config : priority-tags: optional string\neither true or false An 802.1Q header contains two important pieces of\ninformation: a VLAN ID and a priority.\n\nother_config : bond-hash-basis: optional string\ncontaining an integer An integer hashed along with flows when choosing output\nslaves in load balanced bonds. When changed, all flows will be\nassigned different hash values possibly causing slave selection\ndecisions to change.\n\nother_config : bond-detect-mode: optional string\neither miimon or carrier The means used to detect link failures. Defaults to\ncarrier which uses each interface's carrier to detect failures.\nWhen set to miimon, will check for failures by polling each\ninterface's MII.\n\nother_config : bond-miimon-interval: optional string\ncontaining an integer The interval, in milliseconds, between successive\nattempts to poll each interface's MII. Relevant only when\nother_config:bond-detect-mode is miimon\n\nother_config : lacp-system-id: optional string\nThe LACP system ID of this Port. The system ID of a LACP bond\nis used to identify itself to its partners. Must be a nonzero\nMAC address. Defaults to the bridge Ethernet address if unset.\n\nother_config : lacp-system-priority: optional string\ncontaining an integer, in range 1 to 65,535 The LACP system priority of this\nPort. In LACP negotiations, link status decisions are made by\nthe system with the numerically lower priority.\n\nother_config : lacp-time: optional string\neither slow or fast. The LACP timing which should be used on this Port. By default\nslow is used. When configured to be fast LACP heartbeats are\nrequested at a rate of once per second causing connectivity\nproblems to be detected more quickly. In slow mode, heartbeats\nare requested at a rate of once every 30 seconds.\n\nother_config : lacp-fallback-ab: optional string\neither true or false Determines the behavior of openvswitch bond in LACP mode.\nIf the partner switch does not support LACP, setting this\noption to true allows openvswitch to fallback to active-backup.\nIf the option is set to false, the bond will be disabled.\nIn both the cases, once the partner switch is configured\nto LACP mode, the bond will use LACP.\n\nother_config : bond-rebalance-interval: optional string,\ncontaining an integer, in range 0 to 10,000 For a load\nbalanced bonded port, the number of milliseconds between\nsuccessive attempts to rebalance the bond, that is, to move\nflows from one interface on the bond to another in an attempt\nto keep usage of each interface roughly equal. If zero, load\nbalancing is disabled on the bond (link failure still cause\nflows to move). If less than 1000ms, the rebalance interval\nwill be 1000ms.\n\nother_config : stp-enable: optional string\neither true or false. If spanning tree is enabled on the bridge, member ports are\nenabled by default (with the exception of bond, internal, and\nmirror ports which do not work with STP). If this column's\nvalue is false spanning tree is disabled on the port.\n\nother_config : stp-port-num: optional string\ncontaining an integer, in range 1 to 255 The port number used for the lower 8\nbits of the port-id. By default, the numbers will be assigned\nautomatically. If any port's number is manually configured on\na bridge, then they must all be.\n\nother_config : stp-port-priority: optional string\ncontaining an integer, in range 0 to 255 The port's relative priority value\nfor determining the root port (the upper 8 bits of the port-id).\n\nother_config : stp-path-cost: optional string\ncontaining an integer, in range 0 to 65,535 Spanning tree path cost for the\nport. A lower number indicates a faster link. By default, the\ncost is based on the maximum speed of the link.\n\nother_config : rstp-enable: optional string\neither true or false\nIf rapid spanning tree is enabled on the bridge, member ports\nare enabled by default (with the exception of bond, internal,\nand mirror ports which do not work with RSTP). If this\ncolumn's value is false rapid spanning tree is disabled on\nthe port.\n\nother_config : rstp-port-priority: optional string\ncontaining an integer, in range 0 to 240 The port's relative priority value\nfor determining the root port, in multiples of 16. By default,\nthe port priority is 0x80 (128).\n\nother_config : rstp-port-num: optional string\ncontaining an integer, in range 1 to 4,095 The local RSTP port number, used\nas the lower 12 bits of the port-id.\n\nother_config : rstp-port-path-cost: optional string\ncontaining an integer The port path cost. The Port's contribution, when it\nis the Root Port, to the Root Path Cost for the Bridge.\n\nother_config : rstp-port-admin-edge: optional string\neither true or false\n\nother_config : rstp-port-auto-edge: optional string\neither true or false The auto edge port parameter for the Port. Default\nis true.\n\nother_config : rstp-port-mcheck: optional string\neither true or false The mcheck port parameter for the Port. Default is false.\n\nother_config : mcast-snooping-flood: optional string\neither true or false If set to true, multicast packets are\nunconditionally forwarded to the specific port","summary":"GET - Controller - network-topology - port-other-configs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-other-configs"}},"application/json":{"schema":{"properties":{"port-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-other-configs","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"port-other-config name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/ovsdb:interface-other-configs={other-config-key}":{"put":{"description":"Other config attributes for Interfaces\n\nother_config : enable-vlan-splinters: optional string\neither true or false. Set to true to enable VLAN splinters on this\ninterface. Defaults to false.","summary":"PUT - network-topology - Controller - interface-other-configs","requestBody":{"description":"interface-other-configs","content":{"application/json":{"schema":{"properties":{"ovsdb:interface-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-other-configs","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-other-configs"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"interface-other-config name/key"}]},"patch":{"description":"Other config attributes for Interfaces\n\nother_config : enable-vlan-splinters: optional string\neither true or false. Set to true to enable VLAN splinters on this\ninterface. Defaults to false.","summary":"PATCH - network-topology - Controller - interface-other-configs","requestBody":{"description":"interface-other-configs","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:interface-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-other-configs","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-other-configs"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"interface-other-config name/key"}]},"delete":{"description":"Other config attributes for Interfaces\n\nother_config : enable-vlan-splinters: optional string\neither true or false. Set to true to enable VLAN splinters on this\ninterface. Defaults to false.","summary":"DELETE - Controller - network-topology - interface-other-configs","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"interface-other-config name/key"}]},"get":{"description":"Other config attributes for Interfaces\n\nother_config : enable-vlan-splinters: optional string\neither true or false. Set to true to enable VLAN splinters on this\ninterface. Defaults to false.","summary":"GET - Controller - network-topology - interface-other-configs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-other-configs"}},"application/json":{"schema":{"properties":{"interface-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-other-configs","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"interface-other-config name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/ovsdb:port-external-ids={external-id-key}":{"put":{"description":"Port external ids\n\nexternal_ids : fake-bridge-id-*: optional string\nExternal IDs for a fake bridge (see the fake_bridge column) are defined by\nprefixing a Bridge external_ids key with\nfake-bridge-, e.g. fake-bridge-xs-network-uuids.","summary":"PUT - network-topology - Controller - port-external-ids","requestBody":{"description":"port-external-ids","content":{"application/json":{"schema":{"properties":{"ovsdb:port-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-external-ids","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-external-ids"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"patch":{"description":"Port external ids\n\nexternal_ids : fake-bridge-id-*: optional string\nExternal IDs for a fake bridge (see the fake_bridge column) are defined by\nprefixing a Bridge external_ids key with\nfake-bridge-, e.g. fake-bridge-xs-network-uuids.","summary":"PATCH - network-topology - Controller - port-external-ids","requestBody":{"description":"port-external-ids","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:port-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-external-ids","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-external-ids"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"delete":{"description":"Port external ids\n\nexternal_ids : fake-bridge-id-*: optional string\nExternal IDs for a fake bridge (see the fake_bridge column) are defined by\nprefixing a Bridge external_ids key with\nfake-bridge-, e.g. fake-bridge-xs-network-uuids.","summary":"DELETE - Controller - network-topology - port-external-ids","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"get":{"description":"Port external ids\n\nexternal_ids : fake-bridge-id-*: optional string\nExternal IDs for a fake bridge (see the fake_bridge column) are defined by\nprefixing a Bridge external_ids key with\nfake-bridge-, e.g. fake-bridge-xs-network-uuids.","summary":"GET - Controller - network-topology - port-external-ids","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-external-ids"}},"application/json":{"schema":{"properties":{"port-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-external-ids","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/ovsdb:interface-external-ids={external-id-key}":{"put":{"description":"Interface external ids\n\nexternal_ids : attached-mac: optional string.\nThe MAC address programmed into the ''virtual hardware'' for this interface, in\nthe form xx:xx:xx:xx:xx:xx. For Citrix XenServer, this is the\nvalue of the MAC field in the VIF record for this interface.\n\nexternal_ids : iface-id: optional string.\nA system-unique identifier for the interface. On XenServer, this will commonly\nbe the same as external_ids:xs-vif-uuid.\n\nexternal_ids : iface-status: optional string\neither active or inactive Hypervisors may sometimes have more than one interface\nassociated with a given external_ids:iface-id, only one of\nwhich is actually in use at a given time.\n\nexternal_ids : xs-vif-uuid: optional string.\nThe virtual interface associated with this interface.\n\nexternal_ids : xs-network-uuid: optional string.\nThe virtual network to which this interface is attached.\n\nexternal_ids : vm-id: optional string.\nThe VM to which this interface belongs. On XenServer, this will be the same as\nexternal_ids:xsvm-uuid.\n\nexternal_ids : xs-vm-uuid: optional string.\nThe VM to which this interface belongs","summary":"PUT - network-topology - Controller - interface-external-ids","requestBody":{"description":"interface-external-ids","content":{"application/json":{"schema":{"properties":{"ovsdb:interface-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-external-ids","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-external-ids"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"patch":{"description":"Interface external ids\n\nexternal_ids : attached-mac: optional string.\nThe MAC address programmed into the ''virtual hardware'' for this interface, in\nthe form xx:xx:xx:xx:xx:xx. For Citrix XenServer, this is the\nvalue of the MAC field in the VIF record for this interface.\n\nexternal_ids : iface-id: optional string.\nA system-unique identifier for the interface. On XenServer, this will commonly\nbe the same as external_ids:xs-vif-uuid.\n\nexternal_ids : iface-status: optional string\neither active or inactive Hypervisors may sometimes have more than one interface\nassociated with a given external_ids:iface-id, only one of\nwhich is actually in use at a given time.\n\nexternal_ids : xs-vif-uuid: optional string.\nThe virtual interface associated with this interface.\n\nexternal_ids : xs-network-uuid: optional string.\nThe virtual network to which this interface is attached.\n\nexternal_ids : vm-id: optional string.\nThe VM to which this interface belongs. On XenServer, this will be the same as\nexternal_ids:xsvm-uuid.\n\nexternal_ids : xs-vm-uuid: optional string.\nThe VM to which this interface belongs","summary":"PATCH - network-topology - Controller - interface-external-ids","requestBody":{"description":"interface-external-ids","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:interface-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-external-ids","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-external-ids"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"delete":{"description":"Interface external ids\n\nexternal_ids : attached-mac: optional string.\nThe MAC address programmed into the ''virtual hardware'' for this interface, in\nthe form xx:xx:xx:xx:xx:xx. For Citrix XenServer, this is the\nvalue of the MAC field in the VIF record for this interface.\n\nexternal_ids : iface-id: optional string.\nA system-unique identifier for the interface. On XenServer, this will commonly\nbe the same as external_ids:xs-vif-uuid.\n\nexternal_ids : iface-status: optional string\neither active or inactive Hypervisors may sometimes have more than one interface\nassociated with a given external_ids:iface-id, only one of\nwhich is actually in use at a given time.\n\nexternal_ids : xs-vif-uuid: optional string.\nThe virtual interface associated with this interface.\n\nexternal_ids : xs-network-uuid: optional string.\nThe virtual network to which this interface is attached.\n\nexternal_ids : vm-id: optional string.\nThe VM to which this interface belongs. On XenServer, this will be the same as\nexternal_ids:xsvm-uuid.\n\nexternal_ids : xs-vm-uuid: optional string.\nThe VM to which this interface belongs","summary":"DELETE - Controller - network-topology - interface-external-ids","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"get":{"description":"Interface external ids\n\nexternal_ids : attached-mac: optional string.\nThe MAC address programmed into the ''virtual hardware'' for this interface, in\nthe form xx:xx:xx:xx:xx:xx. For Citrix XenServer, this is the\nvalue of the MAC field in the VIF record for this interface.\n\nexternal_ids : iface-id: optional string.\nA system-unique identifier for the interface. On XenServer, this will commonly\nbe the same as external_ids:xs-vif-uuid.\n\nexternal_ids : iface-status: optional string\neither active or inactive Hypervisors may sometimes have more than one interface\nassociated with a given external_ids:iface-id, only one of\nwhich is actually in use at a given time.\n\nexternal_ids : xs-vif-uuid: optional string.\nThe virtual interface associated with this interface.\n\nexternal_ids : xs-network-uuid: optional string.\nThe virtual network to which this interface is attached.\n\nexternal_ids : vm-id: optional string.\nThe VM to which this interface belongs. On XenServer, this will be the same as\nexternal_ids:xsvm-uuid.\n\nexternal_ids : xs-vm-uuid: optional string.\nThe VM to which this interface belongs","summary":"GET - Controller - network-topology - interface-external-ids","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-external-ids"}},"application/json":{"schema":{"properties":{"interface-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-external-ids","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/ovsdb:interface-lldp={lldp-key}":{"put":{"description":"Auto Attach configuration for a particular interface.\nIf LLDP is enabled on an interface, the interface processes received\nLLDP packets and never passes them to OpenFlow or forwards them.\n\nlldp : enable: optional string, either true or false\nTrue to enable LLDP on this Interface. If not specified, LLDP\nwill be disabled by default.","summary":"PUT - network-topology - Controller - interface-lldp","requestBody":{"description":"interface-lldp","content":{"application/json":{"schema":{"properties":{"ovsdb:interface-lldp":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-lldp","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-lldp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lldp-key","in":"path","required":true,"schema":{"type":"string"},"description":"lldp name/key"}]},"patch":{"description":"Auto Attach configuration for a particular interface.\nIf LLDP is enabled on an interface, the interface processes received\nLLDP packets and never passes them to OpenFlow or forwards them.\n\nlldp : enable: optional string, either true or false\nTrue to enable LLDP on this Interface. If not specified, LLDP\nwill be disabled by default.","summary":"PATCH - network-topology - Controller - interface-lldp","requestBody":{"description":"interface-lldp","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:interface-lldp":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-lldp","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-lldp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lldp-key","in":"path","required":true,"schema":{"type":"string"},"description":"lldp name/key"}]},"delete":{"description":"Auto Attach configuration for a particular interface.\nIf LLDP is enabled on an interface, the interface processes received\nLLDP packets and never passes them to OpenFlow or forwards them.\n\nlldp : enable: optional string, either true or false\nTrue to enable LLDP on this Interface. If not specified, LLDP\nwill be disabled by default.","summary":"DELETE - Controller - network-topology - interface-lldp","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lldp-key","in":"path","required":true,"schema":{"type":"string"},"description":"lldp name/key"}]},"get":{"description":"Auto Attach configuration for a particular interface.\nIf LLDP is enabled on an interface, the interface processes received\nLLDP packets and never passes them to OpenFlow or forwards them.\n\nlldp : enable: optional string, either true or false\nTrue to enable LLDP on this Interface. If not specified, LLDP\nwill be disabled by default.","summary":"GET - Controller - network-topology - interface-lldp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-lldp"}},"application/json":{"schema":{"properties":{"interface-lldp":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-lldp","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lldp-key","in":"path","required":true,"schema":{"type":"string"},"description":"lldp name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/ovsdb:interface-bfd={bfd-key}":{"put":{"description":"BFD configuration for a particular interface.\nBFD, defined in RFC 5880 and RFC 5881, allows point-to-point\ndetection of connectivity failures by occasional transmission of\nBFD control messages.\n\nbfd : enable: optional string, either true or false\nTrue to enable BFD on this Interface. If not specified, BFD\nwill be disabled by default.\n\nbfd : min_rx: optional string\ncontaining an integer, at least 1.\nThe shortest interval, in milliseconds, at which this BFD session\noffers to receive BFD control messages.  The remote endpoint may\nchoose to send messages at a slower rate.  Defaults to 1000.\n\nbfd : min_tx: optional string\ncontaining an integer, at least 1.\nThe shortest interval, in milliseconds, at which this BFD session is\nwilling to transmit BFD control messages.  Messages will actually be\ntransmitted at a slower rate if the remote endpoint is not willing to\nreceive as quickly as specified.  Defaults to 100.\n\nbfd : decay_min_rx: optional string\ncontaining an integer\nAn alternate receive interval, in milliseconds, that must be greater\nthan or equal to bfd:min_rx.  The implementation switches from\nbfd:min_rx to bfd:decay_min_rx when there is no obvious incoming\ndata traffic at the interface, to reduce the CPU and bandwidth cost\nof monitoring an idle interface.  This feature may be disabled by\nsetting a value of 0. This feature is reset whenever bfd:decay_min_rx\nbfd:min_rx changes.\n\nbfd : forwarding_if_rx: optional string, either true or false\nWhen true, traffic received on the Interface is used to\nindicate the capability of packet I/O. BFD control packets are\nstill transmitted and received.  At least one BFD control\npacket must be received every 100 * bfd:min_rx amount of time.\nOtherwise, even if traffic are received, the bfd-status:forwarding\nwill be false.\n\nbfd : cpath_down: optional string, either true or false\nSet to true to notify the remote endpoint that traffic should not be\nforwarded to this system for some reason other than a connectivity\nfailure on the interface being monitored.  The typical underlying\nreason is concatenated path down, that is, that connectivity\nbeyond the local system is down.  Defaults to false.\n\nbfd : cpath_down: optional string, either true or false\nSet to true to notify the remote endpoint that traffic should not be\nforwarded to this system for some reason other than a connectivity\nfailure on the interface being monitored.  The typical underlying\nreason is concatenated path down, that is, that connectivity\nbeyond the local system is down.  Defaults to false.\n\nbfd : check_tnl_key: optional string, either true or false\nSet to true to make BFD accept only control messages with a tunnel\nkey of zero.  By default, BFD accepts control messages with any\ntunnel key.\n\nbfd : bfd_local_dst_mac: optional string, mac address\nSet to an Ethernet address in the form xx:xx:xx:xx:xx:xx\nto set the MAC used as destination for transmitted BFD packets. The\ndefault is 00:23:20:00:00:01\n\nbfd : bfd_remote_dst_mac: optional string, mac address\nSet to an Ethernet address in the form xx:xx:xx:xx:xx:xx\nto set the MAC used for checking the destination of received BFD packets.\nPackets with different destination MAC will not be considered as BFD packets.\nIf not specified the destination MAC address of received BFD packets\nare not checked.\n\nbfd : bfd_src_ip: optional string, ip address\nSet to an IPv4 address to set the IP address used as source\nfor transmitted BFD packets.  The default is 169.254.1.1\n\nbfd : bfd_dst_ip: optional string, ip address\nSet to an IPv4 address to set the IP address used as destination\nfor transmitted BFD packets.  The default is 169.254.1.0","summary":"PUT - network-topology - Controller - interface-bfd","requestBody":{"description":"interface-bfd","content":{"application/json":{"schema":{"properties":{"ovsdb:interface-bfd":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-bfd","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-bfd"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bfd-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd name/key"}]},"patch":{"description":"BFD configuration for a particular interface.\nBFD, defined in RFC 5880 and RFC 5881, allows point-to-point\ndetection of connectivity failures by occasional transmission of\nBFD control messages.\n\nbfd : enable: optional string, either true or false\nTrue to enable BFD on this Interface. If not specified, BFD\nwill be disabled by default.\n\nbfd : min_rx: optional string\ncontaining an integer, at least 1.\nThe shortest interval, in milliseconds, at which this BFD session\noffers to receive BFD control messages.  The remote endpoint may\nchoose to send messages at a slower rate.  Defaults to 1000.\n\nbfd : min_tx: optional string\ncontaining an integer, at least 1.\nThe shortest interval, in milliseconds, at which this BFD session is\nwilling to transmit BFD control messages.  Messages will actually be\ntransmitted at a slower rate if the remote endpoint is not willing to\nreceive as quickly as specified.  Defaults to 100.\n\nbfd : decay_min_rx: optional string\ncontaining an integer\nAn alternate receive interval, in milliseconds, that must be greater\nthan or equal to bfd:min_rx.  The implementation switches from\nbfd:min_rx to bfd:decay_min_rx when there is no obvious incoming\ndata traffic at the interface, to reduce the CPU and bandwidth cost\nof monitoring an idle interface.  This feature may be disabled by\nsetting a value of 0. This feature is reset whenever bfd:decay_min_rx\nbfd:min_rx changes.\n\nbfd : forwarding_if_rx: optional string, either true or false\nWhen true, traffic received on the Interface is used to\nindicate the capability of packet I/O. BFD control packets are\nstill transmitted and received.  At least one BFD control\npacket must be received every 100 * bfd:min_rx amount of time.\nOtherwise, even if traffic are received, the bfd-status:forwarding\nwill be false.\n\nbfd : cpath_down: optional string, either true or false\nSet to true to notify the remote endpoint that traffic should not be\nforwarded to this system for some reason other than a connectivity\nfailure on the interface being monitored.  The typical underlying\nreason is concatenated path down, that is, that connectivity\nbeyond the local system is down.  Defaults to false.\n\nbfd : cpath_down: optional string, either true or false\nSet to true to notify the remote endpoint that traffic should not be\nforwarded to this system for some reason other than a connectivity\nfailure on the interface being monitored.  The typical underlying\nreason is concatenated path down, that is, that connectivity\nbeyond the local system is down.  Defaults to false.\n\nbfd : check_tnl_key: optional string, either true or false\nSet to true to make BFD accept only control messages with a tunnel\nkey of zero.  By default, BFD accepts control messages with any\ntunnel key.\n\nbfd : bfd_local_dst_mac: optional string, mac address\nSet to an Ethernet address in the form xx:xx:xx:xx:xx:xx\nto set the MAC used as destination for transmitted BFD packets. The\ndefault is 00:23:20:00:00:01\n\nbfd : bfd_remote_dst_mac: optional string, mac address\nSet to an Ethernet address in the form xx:xx:xx:xx:xx:xx\nto set the MAC used for checking the destination of received BFD packets.\nPackets with different destination MAC will not be considered as BFD packets.\nIf not specified the destination MAC address of received BFD packets\nare not checked.\n\nbfd : bfd_src_ip: optional string, ip address\nSet to an IPv4 address to set the IP address used as source\nfor transmitted BFD packets.  The default is 169.254.1.1\n\nbfd : bfd_dst_ip: optional string, ip address\nSet to an IPv4 address to set the IP address used as destination\nfor transmitted BFD packets.  The default is 169.254.1.0","summary":"PATCH - network-topology - Controller - interface-bfd","requestBody":{"description":"interface-bfd","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:interface-bfd":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-bfd","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-bfd"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bfd-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd name/key"}]},"delete":{"description":"BFD configuration for a particular interface.\nBFD, defined in RFC 5880 and RFC 5881, allows point-to-point\ndetection of connectivity failures by occasional transmission of\nBFD control messages.\n\nbfd : enable: optional string, either true or false\nTrue to enable BFD on this Interface. If not specified, BFD\nwill be disabled by default.\n\nbfd : min_rx: optional string\ncontaining an integer, at least 1.\nThe shortest interval, in milliseconds, at which this BFD session\noffers to receive BFD control messages.  The remote endpoint may\nchoose to send messages at a slower rate.  Defaults to 1000.\n\nbfd : min_tx: optional string\ncontaining an integer, at least 1.\nThe shortest interval, in milliseconds, at which this BFD session is\nwilling to transmit BFD control messages.  Messages will actually be\ntransmitted at a slower rate if the remote endpoint is not willing to\nreceive as quickly as specified.  Defaults to 100.\n\nbfd : decay_min_rx: optional string\ncontaining an integer\nAn alternate receive interval, in milliseconds, that must be greater\nthan or equal to bfd:min_rx.  The implementation switches from\nbfd:min_rx to bfd:decay_min_rx when there is no obvious incoming\ndata traffic at the interface, to reduce the CPU and bandwidth cost\nof monitoring an idle interface.  This feature may be disabled by\nsetting a value of 0. This feature is reset whenever bfd:decay_min_rx\nbfd:min_rx changes.\n\nbfd : forwarding_if_rx: optional string, either true or false\nWhen true, traffic received on the Interface is used to\nindicate the capability of packet I/O. BFD control packets are\nstill transmitted and received.  At least one BFD control\npacket must be received every 100 * bfd:min_rx amount of time.\nOtherwise, even if traffic are received, the bfd-status:forwarding\nwill be false.\n\nbfd : cpath_down: optional string, either true or false\nSet to true to notify the remote endpoint that traffic should not be\nforwarded to this system for some reason other than a connectivity\nfailure on the interface being monitored.  The typical underlying\nreason is concatenated path down, that is, that connectivity\nbeyond the local system is down.  Defaults to false.\n\nbfd : cpath_down: optional string, either true or false\nSet to true to notify the remote endpoint that traffic should not be\nforwarded to this system for some reason other than a connectivity\nfailure on the interface being monitored.  The typical underlying\nreason is concatenated path down, that is, that connectivity\nbeyond the local system is down.  Defaults to false.\n\nbfd : check_tnl_key: optional string, either true or false\nSet to true to make BFD accept only control messages with a tunnel\nkey of zero.  By default, BFD accepts control messages with any\ntunnel key.\n\nbfd : bfd_local_dst_mac: optional string, mac address\nSet to an Ethernet address in the form xx:xx:xx:xx:xx:xx\nto set the MAC used as destination for transmitted BFD packets. The\ndefault is 00:23:20:00:00:01\n\nbfd : bfd_remote_dst_mac: optional string, mac address\nSet to an Ethernet address in the form xx:xx:xx:xx:xx:xx\nto set the MAC used for checking the destination of received BFD packets.\nPackets with different destination MAC will not be considered as BFD packets.\nIf not specified the destination MAC address of received BFD packets\nare not checked.\n\nbfd : bfd_src_ip: optional string, ip address\nSet to an IPv4 address to set the IP address used as source\nfor transmitted BFD packets.  The default is 169.254.1.1\n\nbfd : bfd_dst_ip: optional string, ip address\nSet to an IPv4 address to set the IP address used as destination\nfor transmitted BFD packets.  The default is 169.254.1.0","summary":"DELETE - Controller - network-topology - interface-bfd","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bfd-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd name/key"}]},"get":{"description":"BFD configuration for a particular interface.\nBFD, defined in RFC 5880 and RFC 5881, allows point-to-point\ndetection of connectivity failures by occasional transmission of\nBFD control messages.\n\nbfd : enable: optional string, either true or false\nTrue to enable BFD on this Interface. If not specified, BFD\nwill be disabled by default.\n\nbfd : min_rx: optional string\ncontaining an integer, at least 1.\nThe shortest interval, in milliseconds, at which this BFD session\noffers to receive BFD control messages.  The remote endpoint may\nchoose to send messages at a slower rate.  Defaults to 1000.\n\nbfd : min_tx: optional string\ncontaining an integer, at least 1.\nThe shortest interval, in milliseconds, at which this BFD session is\nwilling to transmit BFD control messages.  Messages will actually be\ntransmitted at a slower rate if the remote endpoint is not willing to\nreceive as quickly as specified.  Defaults to 100.\n\nbfd : decay_min_rx: optional string\ncontaining an integer\nAn alternate receive interval, in milliseconds, that must be greater\nthan or equal to bfd:min_rx.  The implementation switches from\nbfd:min_rx to bfd:decay_min_rx when there is no obvious incoming\ndata traffic at the interface, to reduce the CPU and bandwidth cost\nof monitoring an idle interface.  This feature may be disabled by\nsetting a value of 0. This feature is reset whenever bfd:decay_min_rx\nbfd:min_rx changes.\n\nbfd : forwarding_if_rx: optional string, either true or false\nWhen true, traffic received on the Interface is used to\nindicate the capability of packet I/O. BFD control packets are\nstill transmitted and received.  At least one BFD control\npacket must be received every 100 * bfd:min_rx amount of time.\nOtherwise, even if traffic are received, the bfd-status:forwarding\nwill be false.\n\nbfd : cpath_down: optional string, either true or false\nSet to true to notify the remote endpoint that traffic should not be\nforwarded to this system for some reason other than a connectivity\nfailure on the interface being monitored.  The typical underlying\nreason is concatenated path down, that is, that connectivity\nbeyond the local system is down.  Defaults to false.\n\nbfd : cpath_down: optional string, either true or false\nSet to true to notify the remote endpoint that traffic should not be\nforwarded to this system for some reason other than a connectivity\nfailure on the interface being monitored.  The typical underlying\nreason is concatenated path down, that is, that connectivity\nbeyond the local system is down.  Defaults to false.\n\nbfd : check_tnl_key: optional string, either true or false\nSet to true to make BFD accept only control messages with a tunnel\nkey of zero.  By default, BFD accepts control messages with any\ntunnel key.\n\nbfd : bfd_local_dst_mac: optional string, mac address\nSet to an Ethernet address in the form xx:xx:xx:xx:xx:xx\nto set the MAC used as destination for transmitted BFD packets. The\ndefault is 00:23:20:00:00:01\n\nbfd : bfd_remote_dst_mac: optional string, mac address\nSet to an Ethernet address in the form xx:xx:xx:xx:xx:xx\nto set the MAC used for checking the destination of received BFD packets.\nPackets with different destination MAC will not be considered as BFD packets.\nIf not specified the destination MAC address of received BFD packets\nare not checked.\n\nbfd : bfd_src_ip: optional string, ip address\nSet to an IPv4 address to set the IP address used as source\nfor transmitted BFD packets.  The default is 169.254.1.1\n\nbfd : bfd_dst_ip: optional string, ip address\nSet to an IPv4 address to set the IP address used as destination\nfor transmitted BFD packets.  The default is 169.254.1.0","summary":"GET - Controller - network-topology - interface-bfd","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-bfd"}},"application/json":{"schema":{"properties":{"interface-bfd":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-bfd","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bfd-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/ovsdb:interface-bfd-status={bfd-status-key}":{"put":{"description":"BFD status for a particular interface.\nThe switch sets key-value pairs in the bfd_status column to\nreport the status of BFD on this interface.  When BFD is not\nenabled, with bfd:enable, the switch clears all key-value\npairs from bfd_status.\n\nbfd_status : state: optional string, one of [admin_down, down, init, up]\nReports the state of the BFD session.  The BFD session is fully\nhealthy and negotiated if UP.\n\nbfd_status : forwarding: optional string, true or false\nReports whether the BFD session believes this Interface\nmay be used to forward traffic.  Typically this means\nthe local session is signaling UP, and the remote\nsystem isn't signaling a problem such as concatenated path down.\n\nbfd_status : diagnostic: optional string\nA diagnostic code specifying the local system's reason for the\nlast change in session state. The error messages are defined in\nsection 4.1 of [RFC 5880].\n\nbfd_status : remote_state: optional string, one of [admin_down, down, init, up]\nReports the state of the remote endpoint's BFD session.\n\nbfd_status : remote_diagnostic: optional string\nA diagnostic code specifying the remote system's reason for the\nlast change in session state. The error messages are defined in\nsection 4.1 of [RFC 5880].\n\nbfd_status : flap_count: optional string,\ncontaining an integer, minimum 0\nCounts the number of bfd_status:forwarding flaps since start.\nA flap is considered as a change of the bfd_status:forwarding value.","summary":"PUT - network-topology - Controller - interface-bfd-status","requestBody":{"description":"interface-bfd-status","content":{"application/json":{"schema":{"properties":{"ovsdb:interface-bfd-status":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-bfd-status","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-bfd-status"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bfd-status-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-status name/key"}]},"patch":{"description":"BFD status for a particular interface.\nThe switch sets key-value pairs in the bfd_status column to\nreport the status of BFD on this interface.  When BFD is not\nenabled, with bfd:enable, the switch clears all key-value\npairs from bfd_status.\n\nbfd_status : state: optional string, one of [admin_down, down, init, up]\nReports the state of the BFD session.  The BFD session is fully\nhealthy and negotiated if UP.\n\nbfd_status : forwarding: optional string, true or false\nReports whether the BFD session believes this Interface\nmay be used to forward traffic.  Typically this means\nthe local session is signaling UP, and the remote\nsystem isn't signaling a problem such as concatenated path down.\n\nbfd_status : diagnostic: optional string\nA diagnostic code specifying the local system's reason for the\nlast change in session state. The error messages are defined in\nsection 4.1 of [RFC 5880].\n\nbfd_status : remote_state: optional string, one of [admin_down, down, init, up]\nReports the state of the remote endpoint's BFD session.\n\nbfd_status : remote_diagnostic: optional string\nA diagnostic code specifying the remote system's reason for the\nlast change in session state. The error messages are defined in\nsection 4.1 of [RFC 5880].\n\nbfd_status : flap_count: optional string,\ncontaining an integer, minimum 0\nCounts the number of bfd_status:forwarding flaps since start.\nA flap is considered as a change of the bfd_status:forwarding value.","summary":"PATCH - network-topology - Controller - interface-bfd-status","requestBody":{"description":"interface-bfd-status","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:interface-bfd-status":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-bfd-status","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-bfd-status"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bfd-status-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-status name/key"}]},"delete":{"description":"BFD status for a particular interface.\nThe switch sets key-value pairs in the bfd_status column to\nreport the status of BFD on this interface.  When BFD is not\nenabled, with bfd:enable, the switch clears all key-value\npairs from bfd_status.\n\nbfd_status : state: optional string, one of [admin_down, down, init, up]\nReports the state of the BFD session.  The BFD session is fully\nhealthy and negotiated if UP.\n\nbfd_status : forwarding: optional string, true or false\nReports whether the BFD session believes this Interface\nmay be used to forward traffic.  Typically this means\nthe local session is signaling UP, and the remote\nsystem isn't signaling a problem such as concatenated path down.\n\nbfd_status : diagnostic: optional string\nA diagnostic code specifying the local system's reason for the\nlast change in session state. The error messages are defined in\nsection 4.1 of [RFC 5880].\n\nbfd_status : remote_state: optional string, one of [admin_down, down, init, up]\nReports the state of the remote endpoint's BFD session.\n\nbfd_status : remote_diagnostic: optional string\nA diagnostic code specifying the remote system's reason for the\nlast change in session state. The error messages are defined in\nsection 4.1 of [RFC 5880].\n\nbfd_status : flap_count: optional string,\ncontaining an integer, minimum 0\nCounts the number of bfd_status:forwarding flaps since start.\nA flap is considered as a change of the bfd_status:forwarding value.","summary":"DELETE - Controller - network-topology - interface-bfd-status","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bfd-status-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-status name/key"}]},"get":{"description":"BFD status for a particular interface.\nThe switch sets key-value pairs in the bfd_status column to\nreport the status of BFD on this interface.  When BFD is not\nenabled, with bfd:enable, the switch clears all key-value\npairs from bfd_status.\n\nbfd_status : state: optional string, one of [admin_down, down, init, up]\nReports the state of the BFD session.  The BFD session is fully\nhealthy and negotiated if UP.\n\nbfd_status : forwarding: optional string, true or false\nReports whether the BFD session believes this Interface\nmay be used to forward traffic.  Typically this means\nthe local session is signaling UP, and the remote\nsystem isn't signaling a problem such as concatenated path down.\n\nbfd_status : diagnostic: optional string\nA diagnostic code specifying the local system's reason for the\nlast change in session state. The error messages are defined in\nsection 4.1 of [RFC 5880].\n\nbfd_status : remote_state: optional string, one of [admin_down, down, init, up]\nReports the state of the remote endpoint's BFD session.\n\nbfd_status : remote_diagnostic: optional string\nA diagnostic code specifying the remote system's reason for the\nlast change in session state. The error messages are defined in\nsection 4.1 of [RFC 5880].\n\nbfd_status : flap_count: optional string,\ncontaining an integer, minimum 0\nCounts the number of bfd_status:forwarding flaps since start.\nA flap is considered as a change of the bfd_status:forwarding value.","summary":"GET - Controller - network-topology - interface-bfd-status","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-bfd-status"}},"application/json":{"schema":{"properties":{"interface-bfd-status":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-bfd-status","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bfd-status-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-status name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/ovsdb:qos-entry={qos-key}":{"put":{"description":"","summary":"PUT - network-topology - Controller - qos-entry","requestBody":{"description":"qos-entry","content":{"application/json":{"schema":{"properties":{"ovsdb:qos-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_qos-entry","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_qos-entry"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"qos-key","in":"path","required":true,"schema":{"type":"integer"},"description":"Fixed key to reference the QoS entry in MD-SAL."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - qos-entry","requestBody":{"description":"qos-entry","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:qos-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_qos-entry","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_qos-entry"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"qos-key","in":"path","required":true,"schema":{"type":"integer"},"description":"Fixed key to reference the QoS entry in MD-SAL."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - qos-entry","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"qos-key","in":"path","required":true,"schema":{"type":"integer"},"description":"Fixed key to reference the QoS entry in MD-SAL."}]},"get":{"description":"","summary":"GET - Controller - network-topology - qos-entry","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_qos-entry"}},"application/json":{"schema":{"properties":{"qos-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_qos-entry","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"qos-key","in":"path","required":true,"schema":{"type":"integer"},"description":"Fixed key to reference the QoS entry in MD-SAL."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/termination-point={tp-id}/l3-unicast-igp-topology:igp-termination-point-attributes":{"put":{"description":"","summary":"PUT - network-topology - Controller - igp-termination-point-attributes","requestBody":{"description":"igp-termination-point-attributes","content":{"application/json":{"schema":{"properties":{"l3-unicast-igp-topology:igp-termination-point-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_igp-termination-point-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_igp-termination-point-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - igp-termination-point-attributes","requestBody":{"description":"igp-termination-point-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"l3-unicast-igp-topology:igp-termination-point-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_igp-termination-point-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_igp-termination-point-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - igp-termination-point-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - network-topology - igp-termination-point-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_igp-termination-point-attributes"}},"application/json":{"schema":{"properties":{"igp-termination-point-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_igp-termination-point-attributes","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tp-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-pcep-topology-stats:pcep-session-state":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - pcep-session-state","requestBody":{"description":"peer-capabilities","content":{"application/json":{"schema":{"properties":{"peer-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-capabilities","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-capabilities"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"put":{"description":"","summary":"PUT - network-topology - Controller - pcep-session-state","requestBody":{"description":"pcep-session-state","content":{"application/json":{"schema":{"properties":{"network-pcep-topology-stats:pcep-session-state":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - pcep-session-state","requestBody":{"description":"pcep-session-state","content":{"application/yang-data+json":{"schema":{"properties":{"network-pcep-topology-stats:pcep-session-state":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - pcep-session-state","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - pcep-session-state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state"}},"application/json":{"schema":{"properties":{"pcep-session-state":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-pcep-topology-stats:pcep-session-state/peer-capabilities":{"put":{"description":"Remote peer's (PCC) advertised capabilities.","summary":"PUT - network-topology - Controller - peer-capabilities","requestBody":{"description":"peer-capabilities","content":{"application/json":{"schema":{"properties":{"network-pcep-topology-stats:peer-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-capabilities","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-capabilities"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"Remote peer's (PCC) advertised capabilities.","summary":"PATCH - network-topology - Controller - peer-capabilities","requestBody":{"description":"peer-capabilities","content":{"application/yang-data+json":{"schema":{"properties":{"network-pcep-topology-stats:peer-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-capabilities","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-capabilities"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"Remote peer's (PCC) advertised capabilities.","summary":"DELETE - Controller - network-topology - peer-capabilities","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"Remote peer's (PCC) advertised capabilities.","summary":"GET - Controller - network-topology - peer-capabilities","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-capabilities"}},"application/json":{"schema":{"properties":{"peer-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-capabilities","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-pcep-topology-stats:pcep-session-state/messages":{"post":{"description":"The statistics of PCEP received/sent messages from the PCE point of view.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - messages","requestBody":{"description":"error-messages","content":{"application/json":{"schema":{"properties":{"error-messages":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"put":{"description":"The statistics of PCEP received/sent messages from the PCE point of view.","summary":"PUT - network-topology - Controller - messages","requestBody":{"description":"messages","content":{"application/json":{"schema":{"properties":{"network-pcep-topology-stats:messages":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"The statistics of PCEP received/sent messages from the PCE point of view.","summary":"PATCH - network-topology - Controller - messages","requestBody":{"description":"messages","content":{"application/yang-data+json":{"schema":{"properties":{"network-pcep-topology-stats:messages":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"The statistics of PCEP received/sent messages from the PCE point of view.","summary":"DELETE - Controller - network-topology - messages","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"The statistics of PCEP received/sent messages from the PCE point of view.","summary":"GET - Controller - network-topology - messages","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages"}},"application/json":{"schema":{"properties":{"messages":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-pcep-topology-stats:pcep-session-state/messages/error-messages":{"post":{"description":"The message statistics of received/sent PCErr messages.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - error-messages","requestBody":{"description":"last-received-error","content":{"application/json":{"schema":{"properties":{"last-received-error":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-received-error","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-received-error"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"put":{"description":"The message statistics of received/sent PCErr messages.","summary":"PUT - network-topology - Controller - error-messages","requestBody":{"description":"error-messages","content":{"application/json":{"schema":{"properties":{"network-pcep-topology-stats:error-messages":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"The message statistics of received/sent PCErr messages.","summary":"PATCH - network-topology - Controller - error-messages","requestBody":{"description":"error-messages","content":{"application/yang-data+json":{"schema":{"properties":{"network-pcep-topology-stats:error-messages":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"The message statistics of received/sent PCErr messages.","summary":"DELETE - Controller - network-topology - error-messages","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"The message statistics of received/sent PCErr messages.","summary":"GET - Controller - network-topology - error-messages","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages"}},"application/json":{"schema":{"properties":{"error-messages":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-pcep-topology-stats:pcep-session-state/messages/error-messages/last-received-error":{"put":{"description":"Type/value tuple of last received error.","summary":"PUT - network-topology - Controller - last-received-error","requestBody":{"description":"last-received-error","content":{"application/json":{"schema":{"properties":{"network-pcep-topology-stats:last-received-error":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-received-error","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-received-error"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"Type/value tuple of last received error.","summary":"PATCH - network-topology - Controller - last-received-error","requestBody":{"description":"last-received-error","content":{"application/yang-data+json":{"schema":{"properties":{"network-pcep-topology-stats:last-received-error":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-received-error","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-received-error"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"Type/value tuple of last received error.","summary":"DELETE - Controller - network-topology - last-received-error","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"Type/value tuple of last received error.","summary":"GET - Controller - network-topology - last-received-error","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-received-error"}},"application/json":{"schema":{"properties":{"last-received-error":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-received-error","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-pcep-topology-stats:pcep-session-state/messages/error-messages/last-sent-error":{"put":{"description":"Type/value tuple of last sent error.","summary":"PUT - network-topology - Controller - last-sent-error","requestBody":{"description":"last-sent-error","content":{"application/json":{"schema":{"properties":{"network-pcep-topology-stats:last-sent-error":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-sent-error","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-sent-error"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"Type/value tuple of last sent error.","summary":"PATCH - network-topology - Controller - last-sent-error","requestBody":{"description":"last-sent-error","content":{"application/yang-data+json":{"schema":{"properties":{"network-pcep-topology-stats:last-sent-error":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-sent-error","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-sent-error"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"Type/value tuple of last sent error.","summary":"DELETE - Controller - network-topology - last-sent-error","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"Type/value tuple of last sent error.","summary":"GET - Controller - network-topology - last-sent-error","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-sent-error"}},"application/json":{"schema":{"properties":{"last-sent-error":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-sent-error","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-pcep-topology-stats:pcep-session-state/messages/reply-time":{"put":{"description":"Measures time elapsed from request's send to reply's received.","summary":"PUT - network-topology - Controller - reply-time","requestBody":{"description":"reply-time","content":{"application/json":{"schema":{"properties":{"network-pcep-topology-stats:reply-time":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_reply-time","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_reply-time"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"Measures time elapsed from request's send to reply's received.","summary":"PATCH - network-topology - Controller - reply-time","requestBody":{"description":"reply-time","content":{"application/yang-data+json":{"schema":{"properties":{"network-pcep-topology-stats:reply-time":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_reply-time","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_reply-time"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"Measures time elapsed from request's send to reply's received.","summary":"DELETE - Controller - network-topology - reply-time","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"Measures time elapsed from request's send to reply's received.","summary":"GET - Controller - network-topology - reply-time","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_reply-time"}},"application/json":{"schema":{"properties":{"reply-time":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_reply-time","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-pcep-topology-stats:pcep-session-state/local-pref":{"put":{"description":"The local (PCE) preferences.","summary":"PUT - network-topology - Controller - local-pref","requestBody":{"description":"local-pref","content":{"application/json":{"schema":{"properties":{"network-pcep-topology-stats:local-pref":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_local-pref","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_local-pref"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"The local (PCE) preferences.","summary":"PATCH - network-topology - Controller - local-pref","requestBody":{"description":"local-pref","content":{"application/yang-data+json":{"schema":{"properties":{"network-pcep-topology-stats:local-pref":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_local-pref","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_local-pref"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"The local (PCE) preferences.","summary":"DELETE - Controller - network-topology - local-pref","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"The local (PCE) preferences.","summary":"GET - Controller - network-topology - local-pref","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_local-pref"}},"application/json":{"schema":{"properties":{"local-pref":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_local-pref","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-pcep-topology-stats:pcep-session-state/peer-pref":{"put":{"description":"The remote peer (PCC) preferences.","summary":"PUT - network-topology - Controller - peer-pref","requestBody":{"description":"peer-pref","content":{"application/json":{"schema":{"properties":{"network-pcep-topology-stats:peer-pref":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-pref","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-pref"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"The remote peer (PCC) preferences.","summary":"PATCH - network-topology - Controller - peer-pref","requestBody":{"description":"peer-pref","content":{"application/yang-data+json":{"schema":{"properties":{"network-pcep-topology-stats:peer-pref":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-pref","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-pref"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"The remote peer (PCC) preferences.","summary":"DELETE - Controller - network-topology - peer-pref","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"The remote peer (PCC) preferences.","summary":"GET - Controller - network-topology - peer-pref","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-pref"}},"application/json":{"schema":{"properties":{"peer-pref":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-pref","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/overlay:supported-tunnel-entry":{"put":{"description":"","summary":"PUT - network-topology - Controller - supported-tunnel-entry","requestBody":{"description":"supported-tunnel-entry","content":{"application/json":{"schema":{"properties":{"overlay:supported-tunnel-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supported-tunnel-entry","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supported-tunnel-entry"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - supported-tunnel-entry","requestBody":{"description":"supported-tunnel-entry","content":{"application/yang-data+json":{"schema":{"properties":{"overlay:supported-tunnel-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supported-tunnel-entry","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supported-tunnel-entry"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - supported-tunnel-entry","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - supported-tunnel-entry","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supported-tunnel-entry"}},"application/json":{"schema":{"properties":{"supported-tunnel-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supported-tunnel-entry","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/overlay:supported-tunnel-entry/ip-port-locator-entry":{"put":{"description":"","summary":"PUT - network-topology - Controller - ip-port-locator-entry","requestBody":{"description":"ip-port-locator-entry","content":{"application/json":{"schema":{"properties":{"overlay:ip-port-locator-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supported-tunnel-entry_ip-port-locator-entry","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supported-tunnel-entry_ip-port-locator-entry"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - ip-port-locator-entry","requestBody":{"description":"ip-port-locator-entry","content":{"application/yang-data+json":{"schema":{"properties":{"overlay:ip-port-locator-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supported-tunnel-entry_ip-port-locator-entry","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supported-tunnel-entry_ip-port-locator-entry"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - ip-port-locator-entry","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - ip-port-locator-entry","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supported-tunnel-entry_ip-port-locator-entry"}},"application/json":{"schema":{"properties":{"ip-port-locator-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supported-tunnel-entry_ip-port-locator-entry","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-optional:ignore-missing-schema-sources":{"put":{"description":"Allows mount point to reconnect on the 'missing schema sources' error.\nWARNING - enabling the reconnection on the 'missing schema sources' error can lead\nto unexpected errors at runtime.","summary":"PUT - network-topology - Controller - ignore-missing-schema-sources","requestBody":{"description":"ignore-missing-schema-sources","content":{"application/json":{"schema":{"properties":{"netconf-node-optional:ignore-missing-schema-sources":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_ignore-missing-schema-sources","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_ignore-missing-schema-sources"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"Allows mount point to reconnect on the 'missing schema sources' error.\nWARNING - enabling the reconnection on the 'missing schema sources' error can lead\nto unexpected errors at runtime.","summary":"PATCH - network-topology - Controller - ignore-missing-schema-sources","requestBody":{"description":"ignore-missing-schema-sources","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-node-optional:ignore-missing-schema-sources":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_ignore-missing-schema-sources","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_ignore-missing-schema-sources"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"Allows mount point to reconnect on the 'missing schema sources' error.\nWARNING - enabling the reconnection on the 'missing schema sources' error can lead\nto unexpected errors at runtime.","summary":"DELETE - Controller - network-topology - ignore-missing-schema-sources","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"Allows mount point to reconnect on the 'missing schema sources' error.\nWARNING - enabling the reconnection on the 'missing schema sources' error can lead\nto unexpected errors at runtime.","summary":"GET - Controller - network-topology - ignore-missing-schema-sources","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_ignore-missing-schema-sources"}},"application/json":{"schema":{"properties":{"ignore-missing-schema-sources":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_ignore-missing-schema-sources","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:protocol-entry={protocol}":{"put":{"description":"","summary":"PUT - network-topology - Controller - protocol-entry","requestBody":{"description":"protocol-entry","content":{"application/json":{"schema":{"properties":{"ovsdb:protocol-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_protocol-entry","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_protocol-entry"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"protocol","in":"path","required":true,"schema":{"type":"string"},"description":"Protocol bridge should seek to speak to its controller"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - protocol-entry","requestBody":{"description":"protocol-entry","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:protocol-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_protocol-entry","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_protocol-entry"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"protocol","in":"path","required":true,"schema":{"type":"string"},"description":"Protocol bridge should seek to speak to its controller"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - protocol-entry","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"protocol","in":"path","required":true,"schema":{"type":"string"},"description":"Protocol bridge should seek to speak to its controller"}]},"get":{"description":"","summary":"GET - Controller - network-topology - protocol-entry","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_protocol-entry"}},"application/json":{"schema":{"properties":{"protocol-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_protocol-entry","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"protocol","in":"path","required":true,"schema":{"type":"string"},"description":"Protocol bridge should seek to speak to its controller"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:controller-entry={target}":{"put":{"description":"Bridge controller info","summary":"PUT - network-topology - Controller - controller-entry","requestBody":{"description":"controller-entry","content":{"application/json":{"schema":{"properties":{"ovsdb:controller-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_controller-entry","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_controller-entry"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"target","in":"path","required":true,"schema":{"type":"string"},"description":"Uri telling bridge how to connect to controller"}]},"patch":{"description":"Bridge controller info","summary":"PATCH - network-topology - Controller - controller-entry","requestBody":{"description":"controller-entry","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:controller-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_controller-entry","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_controller-entry"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"target","in":"path","required":true,"schema":{"type":"string"},"description":"Uri telling bridge how to connect to controller"}]},"delete":{"description":"Bridge controller info","summary":"DELETE - Controller - network-topology - controller-entry","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"target","in":"path","required":true,"schema":{"type":"string"},"description":"Uri telling bridge how to connect to controller"}]},"get":{"description":"Bridge controller info","summary":"GET - Controller - network-topology - controller-entry","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_controller-entry"}},"application/json":{"schema":{"properties":{"controller-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_controller-entry","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"target","in":"path","required":true,"schema":{"type":"string"},"description":"Uri telling bridge how to connect to controller"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:bridge-external-ids={bridge-external-id-key}":{"put":{"description":"Key-value pairs for use by external frameworks that integrate\nwith Open vSwitch.\n\nexternal_ids : bridge-id: optional string\n\nA unique identifier of the bridge. On Citrix XenServer this\nwill commonly be the same as external_ids:xs-network-uuids.\n\nexternal_ids : xs-network-uuids: optional string\n\nSemicolon-delimited set of universally unique identifier(s)\nfor the network with which this bridge is associated on a\nCitrix XenServer host. The network identifiers are RFC 4122\nUUIDs as displayed by, e.g., xe network-list.","summary":"PUT - network-topology - Controller - bridge-external-ids","requestBody":{"description":"bridge-external-ids","content":{"application/json":{"schema":{"properties":{"ovsdb:bridge-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_bridge-external-ids","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_bridge-external-ids"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"bridge-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"patch":{"description":"Key-value pairs for use by external frameworks that integrate\nwith Open vSwitch.\n\nexternal_ids : bridge-id: optional string\n\nA unique identifier of the bridge. On Citrix XenServer this\nwill commonly be the same as external_ids:xs-network-uuids.\n\nexternal_ids : xs-network-uuids: optional string\n\nSemicolon-delimited set of universally unique identifier(s)\nfor the network with which this bridge is associated on a\nCitrix XenServer host. The network identifiers are RFC 4122\nUUIDs as displayed by, e.g., xe network-list.","summary":"PATCH - network-topology - Controller - bridge-external-ids","requestBody":{"description":"bridge-external-ids","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:bridge-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_bridge-external-ids","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_bridge-external-ids"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"bridge-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"delete":{"description":"Key-value pairs for use by external frameworks that integrate\nwith Open vSwitch.\n\nexternal_ids : bridge-id: optional string\n\nA unique identifier of the bridge. On Citrix XenServer this\nwill commonly be the same as external_ids:xs-network-uuids.\n\nexternal_ids : xs-network-uuids: optional string\n\nSemicolon-delimited set of universally unique identifier(s)\nfor the network with which this bridge is associated on a\nCitrix XenServer host. The network identifiers are RFC 4122\nUUIDs as displayed by, e.g., xe network-list.","summary":"DELETE - Controller - network-topology - bridge-external-ids","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"bridge-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"get":{"description":"Key-value pairs for use by external frameworks that integrate\nwith Open vSwitch.\n\nexternal_ids : bridge-id: optional string\n\nA unique identifier of the bridge. On Citrix XenServer this\nwill commonly be the same as external_ids:xs-network-uuids.\n\nexternal_ids : xs-network-uuids: optional string\n\nSemicolon-delimited set of universally unique identifier(s)\nfor the network with which this bridge is associated on a\nCitrix XenServer host. The network identifiers are RFC 4122\nUUIDs as displayed by, e.g., xe network-list.","summary":"GET - Controller - network-topology - bridge-external-ids","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_bridge-external-ids"}},"application/json":{"schema":{"properties":{"bridge-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_bridge-external-ids","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"bridge-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:bridge-other-configs={bridge-other-config-key}":{"put":{"description":"Key-value pairs for configuring rarely used features.\n\nother_config : hwaddr: optional string\nAn Ethernet address in the form xx:xx:xx:xx:xx:xx to set the\nhardware address of the local port and influence the datapath\nID.\n\nother_config : forward-bpdu: optional string\neither true or false. Option to allow forwarding of BPDU frames when NORMAL\naction is invoked. Frames with reserved Ethernet\naddresses (e.g. STP BPDU) will be forwarded when this option\nis enabled and the switch is not providing that functionality.\n\nother_config : mac-aging-time: optional string\ncontaining an integer, at least 1 The maximum number of seconds to retain a\nMAC learning entry for which no packets have been seen. The\ndefault is currently 300 seconds (5 minutes). The value, if\nspecified, is forced into a reasonable range, currently 15\n  to 3600 seconds.\n\nother_config : mac-table-size: optional string\ncontaining an integer, at least 1 The maximum number of MAC addresses to\nlearn. The default is currently 2048. The value, if\nspecified, is forced into a reasonable range, currently 10\nto 1,000,000.\n\nother_config : datapath-id: optional string\nExactly 16 hex digits to set the OpenFlow datapath ID to a\nspecific value. May not be all-zero.\n\nother_config : dp-desc: optional string\nHuman readable description of datapath. It it a maximum\n256 byte-long free-form string to describe the datapath for\ndebugging purposes.\n\nother_config : disable-in-band: optional string\neither true or false\nIf set to true, disable in-band control on the bridge\nregardless of controller and manager settings.\n\nother_config : in-band-queue: optional string\ncontaining an integer, in range 0 to 4,294,967,295 A queue ID as a\nnonnegative integer.\n\nother_config : stp-system-id: optional string\nThe bridge's STP identifier (the lower 48 bits of the\nbridge-id) in the form xx:xx:xx:xx:xx:xx. By default, the\nidentifier is the MAC address of the bridge.\n\nother_config : stp-priority: optional string\ncontaining an integer, in range 0 to 65,535 The bridge's relative priority\nvalue for determining the root bridge (the upper 16 bits of\nthe bridgeid).  A bridge with the lowest bridge-id is elected\nthe root. By default, the priority is 0x8000.\n\nother_config : stp-hello-time: optional string\ncontaining an integer, in range 1 to 10 The interval between transmissions\nof hello messages by designated ports, in seconds. By default\nthe hello interval is 2 seconds.\n\nother_config : stp-max-age: optional string\ncontaining an integer, in range 6 to 40 The maximum age of the information\ntransmitted by the bridge when it is the root bridge, in\nseconds.  By default, the maximum age is 20 seconds.\n\nother_config : stp-forward-delay: optional string\ncontaining an integer, in range 4 to 30 The delay to wait between\ntransitioning root and designated ports to forwarding, in\nseconds. By default, the forwarding delay is 15 seconds.\n\nother_config : mcast-snooping-aging-time: optional string,\ncontaining an integer, at least 1 The maximum number of\nseconds to retain a multicast snooping entry for which no\npackets have been seen. The default is currently 300\nseconds (5 minutes). The value, if specified, is forced into\na reasonable range, currently 15 to 3600 seconds.\n\nother_config : mcast-snooping-table-size: optional string,\ncontaining an integer, at least 1 The maximum number of\nmulticast snooping addresses to learn. The default is\ncurrently 2048.  The value, if specified, is forced into a\nreasonable range, currently 10 to 1,000,000.\n\nother_config : mcast-snooping-disable-flood-unregistered:\noptional string, either true or false If set to false,\nunregistered multicast packets are forwarded to all ports.\nIf set to true, unregistered multicast packets are forwarded\nto ports connected to multicast routers.","summary":"PUT - network-topology - Controller - bridge-other-configs","requestBody":{"description":"bridge-other-configs","content":{"application/json":{"schema":{"properties":{"ovsdb:bridge-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_bridge-other-configs","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_bridge-other-configs"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"bridge-other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"bridge-other-config name/key"}]},"patch":{"description":"Key-value pairs for configuring rarely used features.\n\nother_config : hwaddr: optional string\nAn Ethernet address in the form xx:xx:xx:xx:xx:xx to set the\nhardware address of the local port and influence the datapath\nID.\n\nother_config : forward-bpdu: optional string\neither true or false. Option to allow forwarding of BPDU frames when NORMAL\naction is invoked. Frames with reserved Ethernet\naddresses (e.g. STP BPDU) will be forwarded when this option\nis enabled and the switch is not providing that functionality.\n\nother_config : mac-aging-time: optional string\ncontaining an integer, at least 1 The maximum number of seconds to retain a\nMAC learning entry for which no packets have been seen. The\ndefault is currently 300 seconds (5 minutes). The value, if\nspecified, is forced into a reasonable range, currently 15\n  to 3600 seconds.\n\nother_config : mac-table-size: optional string\ncontaining an integer, at least 1 The maximum number of MAC addresses to\nlearn. The default is currently 2048. The value, if\nspecified, is forced into a reasonable range, currently 10\nto 1,000,000.\n\nother_config : datapath-id: optional string\nExactly 16 hex digits to set the OpenFlow datapath ID to a\nspecific value. May not be all-zero.\n\nother_config : dp-desc: optional string\nHuman readable description of datapath. It it a maximum\n256 byte-long free-form string to describe the datapath for\ndebugging purposes.\n\nother_config : disable-in-band: optional string\neither true or false\nIf set to true, disable in-band control on the bridge\nregardless of controller and manager settings.\n\nother_config : in-band-queue: optional string\ncontaining an integer, in range 0 to 4,294,967,295 A queue ID as a\nnonnegative integer.\n\nother_config : stp-system-id: optional string\nThe bridge's STP identifier (the lower 48 bits of the\nbridge-id) in the form xx:xx:xx:xx:xx:xx. By default, the\nidentifier is the MAC address of the bridge.\n\nother_config : stp-priority: optional string\ncontaining an integer, in range 0 to 65,535 The bridge's relative priority\nvalue for determining the root bridge (the upper 16 bits of\nthe bridgeid).  A bridge with the lowest bridge-id is elected\nthe root. By default, the priority is 0x8000.\n\nother_config : stp-hello-time: optional string\ncontaining an integer, in range 1 to 10 The interval between transmissions\nof hello messages by designated ports, in seconds. By default\nthe hello interval is 2 seconds.\n\nother_config : stp-max-age: optional string\ncontaining an integer, in range 6 to 40 The maximum age of the information\ntransmitted by the bridge when it is the root bridge, in\nseconds.  By default, the maximum age is 20 seconds.\n\nother_config : stp-forward-delay: optional string\ncontaining an integer, in range 4 to 30 The delay to wait between\ntransitioning root and designated ports to forwarding, in\nseconds. By default, the forwarding delay is 15 seconds.\n\nother_config : mcast-snooping-aging-time: optional string,\ncontaining an integer, at least 1 The maximum number of\nseconds to retain a multicast snooping entry for which no\npackets have been seen. The default is currently 300\nseconds (5 minutes). The value, if specified, is forced into\na reasonable range, currently 15 to 3600 seconds.\n\nother_config : mcast-snooping-table-size: optional string,\ncontaining an integer, at least 1 The maximum number of\nmulticast snooping addresses to learn. The default is\ncurrently 2048.  The value, if specified, is forced into a\nreasonable range, currently 10 to 1,000,000.\n\nother_config : mcast-snooping-disable-flood-unregistered:\noptional string, either true or false If set to false,\nunregistered multicast packets are forwarded to all ports.\nIf set to true, unregistered multicast packets are forwarded\nto ports connected to multicast routers.","summary":"PATCH - network-topology - Controller - bridge-other-configs","requestBody":{"description":"bridge-other-configs","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:bridge-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_bridge-other-configs","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_bridge-other-configs"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"bridge-other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"bridge-other-config name/key"}]},"delete":{"description":"Key-value pairs for configuring rarely used features.\n\nother_config : hwaddr: optional string\nAn Ethernet address in the form xx:xx:xx:xx:xx:xx to set the\nhardware address of the local port and influence the datapath\nID.\n\nother_config : forward-bpdu: optional string\neither true or false. Option to allow forwarding of BPDU frames when NORMAL\naction is invoked. Frames with reserved Ethernet\naddresses (e.g. STP BPDU) will be forwarded when this option\nis enabled and the switch is not providing that functionality.\n\nother_config : mac-aging-time: optional string\ncontaining an integer, at least 1 The maximum number of seconds to retain a\nMAC learning entry for which no packets have been seen. The\ndefault is currently 300 seconds (5 minutes). The value, if\nspecified, is forced into a reasonable range, currently 15\n  to 3600 seconds.\n\nother_config : mac-table-size: optional string\ncontaining an integer, at least 1 The maximum number of MAC addresses to\nlearn. The default is currently 2048. The value, if\nspecified, is forced into a reasonable range, currently 10\nto 1,000,000.\n\nother_config : datapath-id: optional string\nExactly 16 hex digits to set the OpenFlow datapath ID to a\nspecific value. May not be all-zero.\n\nother_config : dp-desc: optional string\nHuman readable description of datapath. It it a maximum\n256 byte-long free-form string to describe the datapath for\ndebugging purposes.\n\nother_config : disable-in-band: optional string\neither true or false\nIf set to true, disable in-band control on the bridge\nregardless of controller and manager settings.\n\nother_config : in-band-queue: optional string\ncontaining an integer, in range 0 to 4,294,967,295 A queue ID as a\nnonnegative integer.\n\nother_config : stp-system-id: optional string\nThe bridge's STP identifier (the lower 48 bits of the\nbridge-id) in the form xx:xx:xx:xx:xx:xx. By default, the\nidentifier is the MAC address of the bridge.\n\nother_config : stp-priority: optional string\ncontaining an integer, in range 0 to 65,535 The bridge's relative priority\nvalue for determining the root bridge (the upper 16 bits of\nthe bridgeid).  A bridge with the lowest bridge-id is elected\nthe root. By default, the priority is 0x8000.\n\nother_config : stp-hello-time: optional string\ncontaining an integer, in range 1 to 10 The interval between transmissions\nof hello messages by designated ports, in seconds. By default\nthe hello interval is 2 seconds.\n\nother_config : stp-max-age: optional string\ncontaining an integer, in range 6 to 40 The maximum age of the information\ntransmitted by the bridge when it is the root bridge, in\nseconds.  By default, the maximum age is 20 seconds.\n\nother_config : stp-forward-delay: optional string\ncontaining an integer, in range 4 to 30 The delay to wait between\ntransitioning root and designated ports to forwarding, in\nseconds. By default, the forwarding delay is 15 seconds.\n\nother_config : mcast-snooping-aging-time: optional string,\ncontaining an integer, at least 1 The maximum number of\nseconds to retain a multicast snooping entry for which no\npackets have been seen. The default is currently 300\nseconds (5 minutes). The value, if specified, is forced into\na reasonable range, currently 15 to 3600 seconds.\n\nother_config : mcast-snooping-table-size: optional string,\ncontaining an integer, at least 1 The maximum number of\nmulticast snooping addresses to learn. The default is\ncurrently 2048.  The value, if specified, is forced into a\nreasonable range, currently 10 to 1,000,000.\n\nother_config : mcast-snooping-disable-flood-unregistered:\noptional string, either true or false If set to false,\nunregistered multicast packets are forwarded to all ports.\nIf set to true, unregistered multicast packets are forwarded\nto ports connected to multicast routers.","summary":"DELETE - Controller - network-topology - bridge-other-configs","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"bridge-other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"bridge-other-config name/key"}]},"get":{"description":"Key-value pairs for configuring rarely used features.\n\nother_config : hwaddr: optional string\nAn Ethernet address in the form xx:xx:xx:xx:xx:xx to set the\nhardware address of the local port and influence the datapath\nID.\n\nother_config : forward-bpdu: optional string\neither true or false. Option to allow forwarding of BPDU frames when NORMAL\naction is invoked. Frames with reserved Ethernet\naddresses (e.g. STP BPDU) will be forwarded when this option\nis enabled and the switch is not providing that functionality.\n\nother_config : mac-aging-time: optional string\ncontaining an integer, at least 1 The maximum number of seconds to retain a\nMAC learning entry for which no packets have been seen. The\ndefault is currently 300 seconds (5 minutes). The value, if\nspecified, is forced into a reasonable range, currently 15\n  to 3600 seconds.\n\nother_config : mac-table-size: optional string\ncontaining an integer, at least 1 The maximum number of MAC addresses to\nlearn. The default is currently 2048. The value, if\nspecified, is forced into a reasonable range, currently 10\nto 1,000,000.\n\nother_config : datapath-id: optional string\nExactly 16 hex digits to set the OpenFlow datapath ID to a\nspecific value. May not be all-zero.\n\nother_config : dp-desc: optional string\nHuman readable description of datapath. It it a maximum\n256 byte-long free-form string to describe the datapath for\ndebugging purposes.\n\nother_config : disable-in-band: optional string\neither true or false\nIf set to true, disable in-band control on the bridge\nregardless of controller and manager settings.\n\nother_config : in-band-queue: optional string\ncontaining an integer, in range 0 to 4,294,967,295 A queue ID as a\nnonnegative integer.\n\nother_config : stp-system-id: optional string\nThe bridge's STP identifier (the lower 48 bits of the\nbridge-id) in the form xx:xx:xx:xx:xx:xx. By default, the\nidentifier is the MAC address of the bridge.\n\nother_config : stp-priority: optional string\ncontaining an integer, in range 0 to 65,535 The bridge's relative priority\nvalue for determining the root bridge (the upper 16 bits of\nthe bridgeid).  A bridge with the lowest bridge-id is elected\nthe root. By default, the priority is 0x8000.\n\nother_config : stp-hello-time: optional string\ncontaining an integer, in range 1 to 10 The interval between transmissions\nof hello messages by designated ports, in seconds. By default\nthe hello interval is 2 seconds.\n\nother_config : stp-max-age: optional string\ncontaining an integer, in range 6 to 40 The maximum age of the information\ntransmitted by the bridge when it is the root bridge, in\nseconds.  By default, the maximum age is 20 seconds.\n\nother_config : stp-forward-delay: optional string\ncontaining an integer, in range 4 to 30 The delay to wait between\ntransitioning root and designated ports to forwarding, in\nseconds. By default, the forwarding delay is 15 seconds.\n\nother_config : mcast-snooping-aging-time: optional string,\ncontaining an integer, at least 1 The maximum number of\nseconds to retain a multicast snooping entry for which no\npackets have been seen. The default is currently 300\nseconds (5 minutes). The value, if specified, is forced into\na reasonable range, currently 15 to 3600 seconds.\n\nother_config : mcast-snooping-table-size: optional string,\ncontaining an integer, at least 1 The maximum number of\nmulticast snooping addresses to learn. The default is\ncurrently 2048.  The value, if specified, is forced into a\nreasonable range, currently 10 to 1,000,000.\n\nother_config : mcast-snooping-disable-flood-unregistered:\noptional string, either true or false If set to false,\nunregistered multicast packets are forwarded to all ports.\nIf set to true, unregistered multicast packets are forwarded\nto ports connected to multicast routers.","summary":"GET - Controller - network-topology - bridge-other-configs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_bridge-other-configs"}},"application/json":{"schema":{"properties":{"bridge-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_bridge-other-configs","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"bridge-other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"bridge-other-config name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:management-ips={management-ips-key}":{"put":{"description":"","summary":"PUT - network-topology - Controller - management-ips","requestBody":{"description":"management-ips","content":{"application/json":{"schema":{"properties":{"hwvtep:management-ips":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_management-ips","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_management-ips"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"management-ips-key","in":"path","required":true,"schema":{"type":"string"},"description":"Management IP address of the switch"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - management-ips","requestBody":{"description":"management-ips","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:management-ips":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_management-ips","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_management-ips"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"management-ips-key","in":"path","required":true,"schema":{"type":"string"},"description":"Management IP address of the switch"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - management-ips","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"management-ips-key","in":"path","required":true,"schema":{"type":"string"},"description":"Management IP address of the switch"}]},"get":{"description":"","summary":"GET - Controller - network-topology - management-ips","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_management-ips"}},"application/json":{"schema":{"properties":{"management-ips":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_management-ips","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"management-ips-key","in":"path","required":true,"schema":{"type":"string"},"description":"Management IP address of the switch"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:tunnel-ips={tunnel-ips-key}":{"put":{"description":"","summary":"PUT - network-topology - Controller - tunnel-ips","requestBody":{"description":"tunnel-ips","content":{"application/json":{"schema":{"properties":{"hwvtep:tunnel-ips":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnel-ips","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnel-ips"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tunnel-ips-key","in":"path","required":true,"schema":{"type":"string"},"description":"Management IP address of the switch"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - tunnel-ips","requestBody":{"description":"tunnel-ips","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:tunnel-ips":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnel-ips","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnel-ips"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tunnel-ips-key","in":"path","required":true,"schema":{"type":"string"},"description":"Management IP address of the switch"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - tunnel-ips","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tunnel-ips-key","in":"path","required":true,"schema":{"type":"string"},"description":"Management IP address of the switch"}]},"get":{"description":"","summary":"GET - Controller - network-topology - tunnel-ips","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnel-ips"}},"application/json":{"schema":{"properties":{"tunnel-ips":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnel-ips","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"tunnel-ips-key","in":"path","required":true,"schema":{"type":"string"},"description":"Management IP address of the switch"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:tunnels={local-locator-ref},{remote-locator-ref}":{"put":{"description":"","summary":"PUT - network-topology - Controller - tunnels","requestBody":{"description":"tunnels","content":{"application/json":{"schema":{"properties":{"hwvtep:tunnels":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - tunnels","requestBody":{"description":"tunnels","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:tunnels":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - tunnels","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"}]},"get":{"description":"","summary":"GET - Controller - network-topology - tunnels","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels"}},"application/json":{"schema":{"properties":{"tunnels":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:tunnels={local-locator-ref},{remote-locator-ref}/bfd-local-configs={bfd-local-config-key}":{"put":{"description":"Local configuation attributes for BFD","summary":"PUT - network-topology - Controller - bfd-local-configs","requestBody":{"description":"bfd-local-configs","content":{"application/json":{"schema":{"properties":{"hwvtep:bfd-local-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-local-configs","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-local-configs"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"bfd-local-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-local-config name/key"}]},"patch":{"description":"Local configuation attributes for BFD","summary":"PATCH - network-topology - Controller - bfd-local-configs","requestBody":{"description":"bfd-local-configs","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:bfd-local-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-local-configs","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-local-configs"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"bfd-local-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-local-config name/key"}]},"delete":{"description":"Local configuation attributes for BFD","summary":"DELETE - Controller - network-topology - bfd-local-configs","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"bfd-local-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-local-config name/key"}]},"get":{"description":"Local configuation attributes for BFD","summary":"GET - Controller - network-topology - bfd-local-configs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-local-configs"}},"application/json":{"schema":{"properties":{"bfd-local-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-local-configs","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"bfd-local-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-local-config name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:tunnels={local-locator-ref},{remote-locator-ref}/bfd-remote-configs={bfd-remote-config-key}":{"put":{"description":"Remote configuration attributes for BFD","summary":"PUT - network-topology - Controller - bfd-remote-configs","requestBody":{"description":"bfd-remote-configs","content":{"application/json":{"schema":{"properties":{"hwvtep:bfd-remote-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-remote-configs","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-remote-configs"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"bfd-remote-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-remote-config name/key"}]},"patch":{"description":"Remote configuration attributes for BFD","summary":"PATCH - network-topology - Controller - bfd-remote-configs","requestBody":{"description":"bfd-remote-configs","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:bfd-remote-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-remote-configs","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-remote-configs"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"bfd-remote-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-remote-config name/key"}]},"delete":{"description":"Remote configuration attributes for BFD","summary":"DELETE - Controller - network-topology - bfd-remote-configs","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"bfd-remote-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-remote-config name/key"}]},"get":{"description":"Remote configuration attributes for BFD","summary":"GET - Controller - network-topology - bfd-remote-configs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-remote-configs"}},"application/json":{"schema":{"properties":{"bfd-remote-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-remote-configs","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"bfd-remote-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-remote-config name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:tunnels={local-locator-ref},{remote-locator-ref}/bfd-params={bfd-param-key}":{"put":{"description":"Parameters to configure and enable BFD","summary":"PUT - network-topology - Controller - bfd-params","requestBody":{"description":"bfd-params","content":{"application/json":{"schema":{"properties":{"hwvtep:bfd-params":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-params","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-params"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"bfd-param-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-param name/key"}]},"patch":{"description":"Parameters to configure and enable BFD","summary":"PATCH - network-topology - Controller - bfd-params","requestBody":{"description":"bfd-params","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:bfd-params":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-params","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-params"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"bfd-param-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-param name/key"}]},"delete":{"description":"Parameters to configure and enable BFD","summary":"DELETE - Controller - network-topology - bfd-params","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"bfd-param-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-param name/key"}]},"get":{"description":"Parameters to configure and enable BFD","summary":"GET - Controller - network-topology - bfd-params","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-params"}},"application/json":{"schema":{"properties":{"bfd-params":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-params","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"bfd-param-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-param name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:tunnels={local-locator-ref},{remote-locator-ref}/bfd-status={bfd-status-key}":{"get":{"description":"runtime status of BFD on this tunnel","summary":"GET - Controller - network-topology - bfd-status","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-status"}},"application/json":{"schema":{"properties":{"bfd-status":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-status","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"local-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"remote-locator-ref","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the physical locator to reach this entry"},{"name":"bfd-status-key","in":"path","required":true,"schema":{"type":"string"},"description":"bfd-status name/key"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:switch-fault-status={switch-fault-status-key}":{"get":{"description":"","summary":"GET - Controller - network-topology - switch-fault-status","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_switch-fault-status"}},"application/json":{"schema":{"properties":{"switch-fault-status":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_switch-fault-status","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"switch-fault-status-key","in":"path","required":true,"schema":{"type":"string"},"description":"switch-fault-status name/key"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/l3-unicast-igp-topology:igp-node-attributes":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - igp-node-attributes","requestBody":{"description":"prefix","content":{"application/json":{"schema":{"properties":{"prefix":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"put":{"description":"","summary":"PUT - network-topology - Controller - igp-node-attributes","requestBody":{"description":"igp-node-attributes","content":{"application/json":{"schema":{"properties":{"l3-unicast-igp-topology:igp-node-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - igp-node-attributes","requestBody":{"description":"igp-node-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"l3-unicast-igp-topology:igp-node-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - igp-node-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - igp-node-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes"}},"application/json":{"schema":{"properties":{"igp-node-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/l3-unicast-igp-topology:igp-node-attributes/prefix={prefix}":{"put":{"description":"","summary":"PUT - network-topology - Controller - prefix","requestBody":{"description":"prefix","content":{"application/json":{"schema":{"properties":{"l3-unicast-igp-topology:prefix":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - prefix","requestBody":{"description":"prefix","content":{"application/yang-data+json":{"schema":{"properties":{"l3-unicast-igp-topology:prefix":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - prefix","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - network-topology - prefix","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix"}},"application/json":{"schema":{"properties":{"prefix":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/l3-unicast-igp-topology:igp-node-attributes/prefix={prefix}/ospf-topology:ospf-prefix-attributes":{"put":{"description":"","summary":"PUT - network-topology - Controller - ospf-prefix-attributes","requestBody":{"description":"ospf-prefix-attributes","content":{"application/json":{"schema":{"properties":{"ospf-topology:ospf-prefix-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix_ospf-prefix-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix_ospf-prefix-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - ospf-prefix-attributes","requestBody":{"description":"ospf-prefix-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:ospf-prefix-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix_ospf-prefix-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix_ospf-prefix-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - ospf-prefix-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - network-topology - ospf-prefix-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix_ospf-prefix-attributes"}},"application/json":{"schema":{"properties":{"ospf-prefix-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix_ospf-prefix-attributes","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/l3-unicast-igp-topology:igp-node-attributes/ospf-topology:ospf-node-attributes":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - ospf-node-attributes","requestBody":{"description":"ted","content":{"application/json":{"schema":{"properties":{"ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"put":{"description":"","summary":"PUT - network-topology - Controller - ospf-node-attributes","requestBody":{"description":"ospf-node-attributes","content":{"application/json":{"schema":{"properties":{"ospf-topology:ospf-node-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - ospf-node-attributes","requestBody":{"description":"ospf-node-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:ospf-node-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - ospf-node-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - ospf-node-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes"}},"application/json":{"schema":{"properties":{"ospf-node-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/l3-unicast-igp-topology:igp-node-attributes/ospf-topology:ospf-node-attributes/ted":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - ted","requestBody":{"description":"ipv4-local-address","content":{"application/json":{"schema":{"properties":{"ipv4-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv4-local-address","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv4-local-address"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"put":{"description":"","summary":"PUT - network-topology - Controller - ted","requestBody":{"description":"ted","content":{"application/json":{"schema":{"properties":{"ospf-topology:ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - ted","requestBody":{"description":"ted","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - ted","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - ted","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted"}},"application/json":{"schema":{"properties":{"ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/l3-unicast-igp-topology:igp-node-attributes/ospf-topology:ospf-node-attributes/ted/ipv4-local-address={ipv4-prefix}":{"put":{"description":"List of IPv4 Local Address(OSPF). RFC 5786","summary":"PUT - network-topology - Controller - ipv4-local-address","requestBody":{"description":"ipv4-local-address","content":{"application/json":{"schema":{"properties":{"ospf-topology:ipv4-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv4-local-address","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv4-local-address"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv4-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv4 address for the node"}]},"patch":{"description":"List of IPv4 Local Address(OSPF). RFC 5786","summary":"PATCH - network-topology - Controller - ipv4-local-address","requestBody":{"description":"ipv4-local-address","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:ipv4-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv4-local-address","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv4-local-address"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv4-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv4 address for the node"}]},"delete":{"description":"List of IPv4 Local Address(OSPF). RFC 5786","summary":"DELETE - Controller - network-topology - ipv4-local-address","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv4-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv4 address for the node"}]},"get":{"description":"List of IPv4 Local Address(OSPF). RFC 5786","summary":"GET - Controller - network-topology - ipv4-local-address","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv4-local-address"}},"application/json":{"schema":{"properties":{"ipv4-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv4-local-address","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv4-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv4 address for the node"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/l3-unicast-igp-topology:igp-node-attributes/ospf-topology:ospf-node-attributes/ted/ipv6-local-address={ipv6-prefix}":{"put":{"description":"List of IPv6 Local Address.","summary":"PUT - network-topology - Controller - ipv6-local-address","requestBody":{"description":"ipv6-local-address","content":{"application/json":{"schema":{"properties":{"ospf-topology:ipv6-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv6-local-address","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv6-local-address"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv6-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv6 address for the node"}]},"patch":{"description":"List of IPv6 Local Address.","summary":"PATCH - network-topology - Controller - ipv6-local-address","requestBody":{"description":"ipv6-local-address","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:ipv6-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv6-local-address","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv6-local-address"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv6-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv6 address for the node"}]},"delete":{"description":"List of IPv6 Local Address.","summary":"DELETE - Controller - network-topology - ipv6-local-address","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv6-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv6 address for the node"}]},"get":{"description":"List of IPv6 Local Address.","summary":"GET - Controller - network-topology - ipv6-local-address","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv6-local-address"}},"application/json":{"schema":{"properties":{"ipv6-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv6-local-address","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv6-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv6 address for the node"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/l3-unicast-igp-topology:igp-node-attributes/isis-topology:isis-node-attributes":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - isis-node-attributes","requestBody":{"description":"iso","content":{"application/json":{"schema":{"properties":{"iso":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_iso","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_iso"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"put":{"description":"","summary":"PUT - network-topology - Controller - isis-node-attributes","requestBody":{"description":"isis-node-attributes","content":{"application/json":{"schema":{"properties":{"isis-topology:isis-node-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - isis-node-attributes","requestBody":{"description":"isis-node-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:isis-node-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - isis-node-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - isis-node-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes"}},"application/json":{"schema":{"properties":{"isis-node-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/l3-unicast-igp-topology:igp-node-attributes/isis-topology:isis-node-attributes/iso":{"put":{"description":"","summary":"PUT - network-topology - Controller - iso","requestBody":{"description":"iso","content":{"application/json":{"schema":{"properties":{"isis-topology:iso":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_iso","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_iso"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - iso","requestBody":{"description":"iso","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:iso":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_iso","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_iso"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - iso","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - iso","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_iso"}},"application/json":{"schema":{"properties":{"iso":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_iso","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/l3-unicast-igp-topology:igp-node-attributes/isis-topology:isis-node-attributes/ted":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - ted","requestBody":{"description":"ipv4-local-address","content":{"application/json":{"schema":{"properties":{"ipv4-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv4-local-address","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv4-local-address"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"put":{"description":"","summary":"PUT - network-topology - Controller - ted","requestBody":{"description":"ted","content":{"application/json":{"schema":{"properties":{"isis-topology:ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - ted","requestBody":{"description":"ted","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - ted","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - ted","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted"}},"application/json":{"schema":{"properties":{"ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/l3-unicast-igp-topology:igp-node-attributes/isis-topology:isis-node-attributes/ted/ipv4-local-address={ipv4-prefix}":{"put":{"description":"List of IPv4 Local Address(OSPF). RFC 5786","summary":"PUT - network-topology - Controller - ipv4-local-address","requestBody":{"description":"ipv4-local-address","content":{"application/json":{"schema":{"properties":{"isis-topology:ipv4-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv4-local-address","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv4-local-address"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv4-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv4 address for the node"}]},"patch":{"description":"List of IPv4 Local Address(OSPF). RFC 5786","summary":"PATCH - network-topology - Controller - ipv4-local-address","requestBody":{"description":"ipv4-local-address","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:ipv4-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv4-local-address","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv4-local-address"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv4-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv4 address for the node"}]},"delete":{"description":"List of IPv4 Local Address(OSPF). RFC 5786","summary":"DELETE - Controller - network-topology - ipv4-local-address","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv4-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv4 address for the node"}]},"get":{"description":"List of IPv4 Local Address(OSPF). RFC 5786","summary":"GET - Controller - network-topology - ipv4-local-address","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv4-local-address"}},"application/json":{"schema":{"properties":{"ipv4-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv4-local-address","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv4-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv4 address for the node"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/l3-unicast-igp-topology:igp-node-attributes/isis-topology:isis-node-attributes/ted/ipv6-local-address={ipv6-prefix}":{"put":{"description":"List of IPv6 Local Address.","summary":"PUT - network-topology - Controller - ipv6-local-address","requestBody":{"description":"ipv6-local-address","content":{"application/json":{"schema":{"properties":{"isis-topology:ipv6-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv6-local-address","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv6-local-address"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv6-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv6 address for the node"}]},"patch":{"description":"List of IPv6 Local Address.","summary":"PATCH - network-topology - Controller - ipv6-local-address","requestBody":{"description":"ipv6-local-address","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:ipv6-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv6-local-address","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv6-local-address"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv6-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv6 address for the node"}]},"delete":{"description":"List of IPv6 Local Address.","summary":"DELETE - Controller - network-topology - ipv6-local-address","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv6-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv6 address for the node"}]},"get":{"description":"List of IPv6 Local Address.","summary":"GET - Controller - network-topology - ipv6-local-address","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv6-local-address"}},"application/json":{"schema":{"properties":{"ipv6-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv6-local-address","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"ipv6-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Local IPv6 address for the node"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:connection-info":{"put":{"description":"","summary":"PUT - network-topology - Controller - connection-info","requestBody":{"description":"connection-info","content":{"application/json":{"schema":{"properties":{"ovsdb:connection-info":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_connection-info","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_connection-info"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - connection-info","requestBody":{"description":"connection-info","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:connection-info":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_connection-info","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_connection-info"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - connection-info","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - connection-info","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_connection-info"}},"application/json":{"schema":{"properties":{"connection-info":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_connection-info","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:managed-node-entry={bridge-ref}":{"put":{"description":"","summary":"PUT - network-topology - Controller - managed-node-entry","requestBody":{"description":"managed-node-entry","content":{"application/json":{"schema":{"properties":{"ovsdb:managed-node-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managed-node-entry","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managed-node-entry"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"bridge-ref","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - managed-node-entry","requestBody":{"description":"managed-node-entry","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:managed-node-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managed-node-entry","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managed-node-entry"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"bridge-ref","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - managed-node-entry","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"bridge-ref","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - network-topology - managed-node-entry","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managed-node-entry"}},"application/json":{"schema":{"properties":{"managed-node-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managed-node-entry","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"bridge-ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:datapath-type-entry={datapath-type}":{"put":{"description":"","summary":"PUT - network-topology - Controller - datapath-type-entry","requestBody":{"description":"datapath-type-entry","content":{"application/json":{"schema":{"properties":{"ovsdb:datapath-type-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_datapath-type-entry","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_datapath-type-entry"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"datapath-type","in":"path","required":true,"schema":{"type":"string"},"description":"Datapath types supported by OVSDB node"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - datapath-type-entry","requestBody":{"description":"datapath-type-entry","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:datapath-type-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_datapath-type-entry","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_datapath-type-entry"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"datapath-type","in":"path","required":true,"schema":{"type":"string"},"description":"Datapath types supported by OVSDB node"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - datapath-type-entry","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"datapath-type","in":"path","required":true,"schema":{"type":"string"},"description":"Datapath types supported by OVSDB node"}]},"get":{"description":"","summary":"GET - Controller - network-topology - datapath-type-entry","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_datapath-type-entry"}},"application/json":{"schema":{"properties":{"datapath-type-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_datapath-type-entry","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"datapath-type","in":"path","required":true,"schema":{"type":"string"},"description":"Datapath types supported by OVSDB node"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:interface-type-entry={interface-type}":{"put":{"description":"","summary":"PUT - network-topology - Controller - interface-type-entry","requestBody":{"description":"interface-type-entry","content":{"application/json":{"schema":{"properties":{"ovsdb:interface-type-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_interface-type-entry","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_interface-type-entry"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"interface-type","in":"path","required":true,"schema":{"type":"string"},"description":"Interface types supported by OVSDB node"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - interface-type-entry","requestBody":{"description":"interface-type-entry","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:interface-type-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_interface-type-entry","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_interface-type-entry"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"interface-type","in":"path","required":true,"schema":{"type":"string"},"description":"Interface types supported by OVSDB node"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - interface-type-entry","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"interface-type","in":"path","required":true,"schema":{"type":"string"},"description":"Interface types supported by OVSDB node"}]},"get":{"description":"","summary":"GET - Controller - network-topology - interface-type-entry","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_interface-type-entry"}},"application/json":{"schema":{"properties":{"interface-type-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_interface-type-entry","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"interface-type","in":"path","required":true,"schema":{"type":"string"},"description":"Interface types supported by OVSDB node"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:openvswitch-external-ids={external-id-key}":{"put":{"description":"Key-value pairs for use by external frameworks that integrate\nwith Open vSwitch.\n\nexternal_ids : system-id: optional string\nA unique identifier for the Open vSwitch's physical host.\nThe form of the identifier depends on the type of the host.\nOn a Citrix XenServer, this will likely be the same as\nexternal_ids:xs-system-uuid.\n\nexternal_ids : xs-system-uuid: optional string\nThe Citrix XenServer universally unique identifier for the\nphysical host as displayed by xe-host-list.","summary":"PUT - network-topology - Controller - openvswitch-external-ids","requestBody":{"description":"openvswitch-external-ids","content":{"application/json":{"schema":{"properties":{"ovsdb:openvswitch-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_openvswitch-external-ids","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_openvswitch-external-ids"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"patch":{"description":"Key-value pairs for use by external frameworks that integrate\nwith Open vSwitch.\n\nexternal_ids : system-id: optional string\nA unique identifier for the Open vSwitch's physical host.\nThe form of the identifier depends on the type of the host.\nOn a Citrix XenServer, this will likely be the same as\nexternal_ids:xs-system-uuid.\n\nexternal_ids : xs-system-uuid: optional string\nThe Citrix XenServer universally unique identifier for the\nphysical host as displayed by xe-host-list.","summary":"PATCH - network-topology - Controller - openvswitch-external-ids","requestBody":{"description":"openvswitch-external-ids","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:openvswitch-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_openvswitch-external-ids","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_openvswitch-external-ids"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"delete":{"description":"Key-value pairs for use by external frameworks that integrate\nwith Open vSwitch.\n\nexternal_ids : system-id: optional string\nA unique identifier for the Open vSwitch's physical host.\nThe form of the identifier depends on the type of the host.\nOn a Citrix XenServer, this will likely be the same as\nexternal_ids:xs-system-uuid.\n\nexternal_ids : xs-system-uuid: optional string\nThe Citrix XenServer universally unique identifier for the\nphysical host as displayed by xe-host-list.","summary":"DELETE - Controller - network-topology - openvswitch-external-ids","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"get":{"description":"Key-value pairs for use by external frameworks that integrate\nwith Open vSwitch.\n\nexternal_ids : system-id: optional string\nA unique identifier for the Open vSwitch's physical host.\nThe form of the identifier depends on the type of the host.\nOn a Citrix XenServer, this will likely be the same as\nexternal_ids:xs-system-uuid.\n\nexternal_ids : xs-system-uuid: optional string\nThe Citrix XenServer universally unique identifier for the\nphysical host as displayed by xe-host-list.","summary":"GET - Controller - network-topology - openvswitch-external-ids","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_openvswitch-external-ids"}},"application/json":{"schema":{"properties":{"openvswitch-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_openvswitch-external-ids","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:openvswitch-other-configs={other-config-key}":{"put":{"description":"Key-value pairs for configuring rarely used features.\n\nother_config : stats-update-interval: optional string\nThis option will affect the update of the statistics column\nin the following tables: Port, Interface , Mirror.\n\nother_config : flow-restore-wait: optional string\neither true or false When ovs-vswitchd starts up, it has an empty flow\ntable and therefore it handles all arriving packets in its\ndefault fashion according to its configuration, by\ndropping them or sending them to an OpenFlow controller or\nswitching them as a standalone switch.\n\nother_config : flow-limit: optional string\ncontaining an integer, at least 0. The maximum number of flows allowed in\nthe datapath flow table.\n\nother_config : n-dpdk-rxqs: optional string\ncontaining an integer, at least 1 Specifies the number of rx queues to be\ncreated for each dpdk interface. If not specified or\nspecified to 0, one rx queue will be created for each dpdk\ninterface by default.\n\nother_config : pmd-cpu-mask: optional string\nSpecifies CPU mask for setting the cpu affinity of\nPMD (Poll Mode Driver) threads. Value should be in the form\nof hex string, similar to the dpdk EAL '-c COREMASK' option\ninput or the 'taskset' mask input.\n\nother_config : n-handler-threads: optional string\ncontaining an integer, at least 1 Specifies the number of threads for\nsoftware datapaths to use for handling new flows. The default\nthe number of online CPU cores minus the number of\nrevalidators.\n\nother_config : n-revalidator-threads: optional string,\ncontaining an integer, at least 1 Specifies the number of\nthreads for software datapaths to use for revalidating flows\nin the datapath.\n\nother_config : enable-statistics: optional string\neither ture or false. Set this value to true to enable populating the\nstatistics column or to false to explicitly disable it.","summary":"PUT - network-topology - Controller - openvswitch-other-configs","requestBody":{"description":"openvswitch-other-configs","content":{"application/json":{"schema":{"properties":{"ovsdb:openvswitch-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_openvswitch-other-configs","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_openvswitch-other-configs"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"other-config name/key"}]},"patch":{"description":"Key-value pairs for configuring rarely used features.\n\nother_config : stats-update-interval: optional string\nThis option will affect the update of the statistics column\nin the following tables: Port, Interface , Mirror.\n\nother_config : flow-restore-wait: optional string\neither true or false When ovs-vswitchd starts up, it has an empty flow\ntable and therefore it handles all arriving packets in its\ndefault fashion according to its configuration, by\ndropping them or sending them to an OpenFlow controller or\nswitching them as a standalone switch.\n\nother_config : flow-limit: optional string\ncontaining an integer, at least 0. The maximum number of flows allowed in\nthe datapath flow table.\n\nother_config : n-dpdk-rxqs: optional string\ncontaining an integer, at least 1 Specifies the number of rx queues to be\ncreated for each dpdk interface. If not specified or\nspecified to 0, one rx queue will be created for each dpdk\ninterface by default.\n\nother_config : pmd-cpu-mask: optional string\nSpecifies CPU mask for setting the cpu affinity of\nPMD (Poll Mode Driver) threads. Value should be in the form\nof hex string, similar to the dpdk EAL '-c COREMASK' option\ninput or the 'taskset' mask input.\n\nother_config : n-handler-threads: optional string\ncontaining an integer, at least 1 Specifies the number of threads for\nsoftware datapaths to use for handling new flows. The default\nthe number of online CPU cores minus the number of\nrevalidators.\n\nother_config : n-revalidator-threads: optional string,\ncontaining an integer, at least 1 Specifies the number of\nthreads for software datapaths to use for revalidating flows\nin the datapath.\n\nother_config : enable-statistics: optional string\neither ture or false. Set this value to true to enable populating the\nstatistics column or to false to explicitly disable it.","summary":"PATCH - network-topology - Controller - openvswitch-other-configs","requestBody":{"description":"openvswitch-other-configs","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:openvswitch-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_openvswitch-other-configs","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_openvswitch-other-configs"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"other-config name/key"}]},"delete":{"description":"Key-value pairs for configuring rarely used features.\n\nother_config : stats-update-interval: optional string\nThis option will affect the update of the statistics column\nin the following tables: Port, Interface , Mirror.\n\nother_config : flow-restore-wait: optional string\neither true or false When ovs-vswitchd starts up, it has an empty flow\ntable and therefore it handles all arriving packets in its\ndefault fashion according to its configuration, by\ndropping them or sending them to an OpenFlow controller or\nswitching them as a standalone switch.\n\nother_config : flow-limit: optional string\ncontaining an integer, at least 0. The maximum number of flows allowed in\nthe datapath flow table.\n\nother_config : n-dpdk-rxqs: optional string\ncontaining an integer, at least 1 Specifies the number of rx queues to be\ncreated for each dpdk interface. If not specified or\nspecified to 0, one rx queue will be created for each dpdk\ninterface by default.\n\nother_config : pmd-cpu-mask: optional string\nSpecifies CPU mask for setting the cpu affinity of\nPMD (Poll Mode Driver) threads. Value should be in the form\nof hex string, similar to the dpdk EAL '-c COREMASK' option\ninput or the 'taskset' mask input.\n\nother_config : n-handler-threads: optional string\ncontaining an integer, at least 1 Specifies the number of threads for\nsoftware datapaths to use for handling new flows. The default\nthe number of online CPU cores minus the number of\nrevalidators.\n\nother_config : n-revalidator-threads: optional string,\ncontaining an integer, at least 1 Specifies the number of\nthreads for software datapaths to use for revalidating flows\nin the datapath.\n\nother_config : enable-statistics: optional string\neither ture or false. Set this value to true to enable populating the\nstatistics column or to false to explicitly disable it.","summary":"DELETE - Controller - network-topology - openvswitch-other-configs","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"other-config name/key"}]},"get":{"description":"Key-value pairs for configuring rarely used features.\n\nother_config : stats-update-interval: optional string\nThis option will affect the update of the statistics column\nin the following tables: Port, Interface , Mirror.\n\nother_config : flow-restore-wait: optional string\neither true or false When ovs-vswitchd starts up, it has an empty flow\ntable and therefore it handles all arriving packets in its\ndefault fashion according to its configuration, by\ndropping them or sending them to an OpenFlow controller or\nswitching them as a standalone switch.\n\nother_config : flow-limit: optional string\ncontaining an integer, at least 0. The maximum number of flows allowed in\nthe datapath flow table.\n\nother_config : n-dpdk-rxqs: optional string\ncontaining an integer, at least 1 Specifies the number of rx queues to be\ncreated for each dpdk interface. If not specified or\nspecified to 0, one rx queue will be created for each dpdk\ninterface by default.\n\nother_config : pmd-cpu-mask: optional string\nSpecifies CPU mask for setting the cpu affinity of\nPMD (Poll Mode Driver) threads. Value should be in the form\nof hex string, similar to the dpdk EAL '-c COREMASK' option\ninput or the 'taskset' mask input.\n\nother_config : n-handler-threads: optional string\ncontaining an integer, at least 1 Specifies the number of threads for\nsoftware datapaths to use for handling new flows. The default\nthe number of online CPU cores minus the number of\nrevalidators.\n\nother_config : n-revalidator-threads: optional string,\ncontaining an integer, at least 1 Specifies the number of\nthreads for software datapaths to use for revalidating flows\nin the datapath.\n\nother_config : enable-statistics: optional string\neither ture or false. Set this value to true to enable populating the\nstatistics column or to false to explicitly disable it.","summary":"GET - Controller - network-topology - openvswitch-other-configs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_openvswitch-other-configs"}},"application/json":{"schema":{"properties":{"openvswitch-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_openvswitch-other-configs","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"other-config name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:manager-entry={target}":{"get":{"description":"Node managers info","summary":"GET - Controller - network-topology - manager-entry","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_manager-entry"}},"application/json":{"schema":{"properties":{"manager-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_manager-entry","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"target","in":"path","required":true,"schema":{"type":"string"},"description":"Uri that user set to connect to the controller"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:qos-entries={qos-id}":{"put":{"description":"","summary":"PUT - network-topology - Controller - qos-entries","requestBody":{"description":"qos-entries","content":{"application/json":{"schema":{"properties":{"ovsdb:qos-entries":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - qos-entries","requestBody":{"description":"qos-entries","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:qos-entries":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - qos-entries","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."}]},"get":{"description":"","summary":"GET - Controller - network-topology - qos-entries","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries"}},"application/json":{"schema":{"properties":{"qos-entries":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:qos-entries={qos-id}/queue-list={queue-number}":{"put":{"description":"The list of queues used by the QoS","summary":"PUT - network-topology - Controller - queue-list","requestBody":{"description":"queue-list","content":{"application/json":{"schema":{"properties":{"ovsdb:queue-list":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_queue-list","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_queue-list"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."},{"name":"queue-number","in":"path","required":true,"schema":{"type":"integer"},"description":"The queue number of the record in the QoS entry"}]},"patch":{"description":"The list of queues used by the QoS","summary":"PATCH - network-topology - Controller - queue-list","requestBody":{"description":"queue-list","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:queue-list":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_queue-list","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_queue-list"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."},{"name":"queue-number","in":"path","required":true,"schema":{"type":"integer"},"description":"The queue number of the record in the QoS entry"}]},"delete":{"description":"The list of queues used by the QoS","summary":"DELETE - Controller - network-topology - queue-list","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."},{"name":"queue-number","in":"path","required":true,"schema":{"type":"integer"},"description":"The queue number of the record in the QoS entry"}]},"get":{"description":"The list of queues used by the QoS","summary":"GET - Controller - network-topology - queue-list","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_queue-list"}},"application/json":{"schema":{"properties":{"queue-list":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_queue-list","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."},{"name":"queue-number","in":"path","required":true,"schema":{"type":"integer"},"description":"The queue number of the record in the QoS entry"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:qos-entries={qos-id}/qos-external-ids={qos-external-id-key}":{"put":{"description":"","summary":"PUT - network-topology - Controller - qos-external-ids","requestBody":{"description":"qos-external-ids","content":{"application/json":{"schema":{"properties":{"ovsdb:qos-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_qos-external-ids","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_qos-external-ids"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."},{"name":"qos-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"qos external-id name/key"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - qos-external-ids","requestBody":{"description":"qos-external-ids","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:qos-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_qos-external-ids","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_qos-external-ids"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."},{"name":"qos-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"qos external-id name/key"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - qos-external-ids","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."},{"name":"qos-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"qos external-id name/key"}]},"get":{"description":"","summary":"GET - Controller - network-topology - qos-external-ids","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_qos-external-ids"}},"application/json":{"schema":{"properties":{"qos-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_qos-external-ids","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."},{"name":"qos-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"qos external-id name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:qos-entries={qos-id}/qos-other-config={other-config-key}":{"put":{"description":"\nother_config : max-rate\noptional string, containing an integer.","summary":"PUT - network-topology - Controller - qos-other-config","requestBody":{"description":"qos-other-config","content":{"application/json":{"schema":{"properties":{"ovsdb:qos-other-config":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_qos-other-config","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_qos-other-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"qos-other-config name/key"}]},"patch":{"description":"\nother_config : max-rate\noptional string, containing an integer.","summary":"PATCH - network-topology - Controller - qos-other-config","requestBody":{"description":"qos-other-config","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:qos-other-config":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_qos-other-config","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_qos-other-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"qos-other-config name/key"}]},"delete":{"description":"\nother_config : max-rate\noptional string, containing an integer.","summary":"DELETE - Controller - network-topology - qos-other-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"qos-other-config name/key"}]},"get":{"description":"\nother_config : max-rate\noptional string, containing an integer.","summary":"GET - Controller - network-topology - qos-other-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_qos-other-config"}},"application/json":{"schema":{"properties":{"qos-other-config":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_qos-other-config","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"qos-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for QoS entries in the MD-SAL."},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"qos-other-config name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:queues={queue-id}":{"put":{"description":"","summary":"PUT - network-topology - Controller - queues","requestBody":{"description":"queues","content":{"application/json":{"schema":{"properties":{"ovsdb:queues":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for Queue entries in the MD-SAL."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - queues","requestBody":{"description":"queues","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:queues":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for Queue entries in the MD-SAL."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - queues","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for Queue entries in the MD-SAL."}]},"get":{"description":"","summary":"GET - Controller - network-topology - queues","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues"}},"application/json":{"schema":{"properties":{"queues":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for Queue entries in the MD-SAL."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:queues={queue-id}/queues-external-ids={queues-external-id-key}":{"put":{"description":"","summary":"PUT - network-topology - Controller - queues-external-ids","requestBody":{"description":"queues-external-ids","content":{"application/json":{"schema":{"properties":{"ovsdb:queues-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues_queues-external-ids","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues_queues-external-ids"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for Queue entries in the MD-SAL."},{"name":"queues-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"queues external-id name/key"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - queues-external-ids","requestBody":{"description":"queues-external-ids","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:queues-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues_queues-external-ids","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues_queues-external-ids"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for Queue entries in the MD-SAL."},{"name":"queues-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"queues external-id name/key"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - queues-external-ids","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for Queue entries in the MD-SAL."},{"name":"queues-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"queues external-id name/key"}]},"get":{"description":"","summary":"GET - Controller - network-topology - queues-external-ids","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues_queues-external-ids"}},"application/json":{"schema":{"properties":{"queues-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues_queues-external-ids","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for Queue entries in the MD-SAL."},{"name":"queues-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"queues external-id name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:queues={queue-id}/queues-other-config={queue-other-config-key}":{"put":{"description":"\nConfiguration for linux-htb QoS:\n\nother_config : min-rate optional string\ncontaining an integer, at least 1.\nMinimum guaranteed bandwidth, in bit/s.\n\nother_config : max-rate optional string\ncontaining an integer, at least 1.\nMaximum allowed bandwidth, in bit/s. Optional. If specified, the queue's rate will not be allowed\nto exceed the specified value, even if excess bandwidth is available. If unspecified, defaults to no\nlimit.\n\nother_config : burst optional string\ncontaining an integer, at least 1.\nBurst size, in bits. This is the maximum amount of ''credits'' that a queue can accumulate while it\nis idle. Optional. Details of the linux-htb implementation require a minimum burst size, so a\ntoo-small burst will be silently ignored.\n\nother_config : priority optional string.\ncontaining an integer, in range 0 to 4,294,967,295.\nA queue with a smaller priority will receive all the excess bandwidth that it can use before a\nqueue with a larger value receives any. Specific priority values are unimportant; only relative\nordering matters. Defaults to 0 if unspecified.\n\nConfiguration for linux-htb QoS:\n\nother_config : min-rate optional string\ncontaining an integer, at least 1.\nMinimum guaranteed bandwidth, in bit/s.\n\nother_config : max-rate optional string\ncontaining an integer, at least 1.\nMaximum allowed bandwidth, in bit/s. Optional. If specified, the queue's rate will not be allowed\nto exceed the specified value, even if excess bandwidth is available. If unspecified, defaults to no\nlimit..","summary":"PUT - network-topology - Controller - queues-other-config","requestBody":{"description":"queues-other-config","content":{"application/json":{"schema":{"properties":{"ovsdb:queues-other-config":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues_queues-other-config","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues_queues-other-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for Queue entries in the MD-SAL."},{"name":"queue-other-config-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"\nConfiguration for linux-htb QoS:\n\nother_config : min-rate optional string\ncontaining an integer, at least 1.\nMinimum guaranteed bandwidth, in bit/s.\n\nother_config : max-rate optional string\ncontaining an integer, at least 1.\nMaximum allowed bandwidth, in bit/s. Optional. If specified, the queue's rate will not be allowed\nto exceed the specified value, even if excess bandwidth is available. If unspecified, defaults to no\nlimit.\n\nother_config : burst optional string\ncontaining an integer, at least 1.\nBurst size, in bits. This is the maximum amount of ''credits'' that a queue can accumulate while it\nis idle. Optional. Details of the linux-htb implementation require a minimum burst size, so a\ntoo-small burst will be silently ignored.\n\nother_config : priority optional string.\ncontaining an integer, in range 0 to 4,294,967,295.\nA queue with a smaller priority will receive all the excess bandwidth that it can use before a\nqueue with a larger value receives any. Specific priority values are unimportant; only relative\nordering matters. Defaults to 0 if unspecified.\n\nConfiguration for linux-htb QoS:\n\nother_config : min-rate optional string\ncontaining an integer, at least 1.\nMinimum guaranteed bandwidth, in bit/s.\n\nother_config : max-rate optional string\ncontaining an integer, at least 1.\nMaximum allowed bandwidth, in bit/s. Optional. If specified, the queue's rate will not be allowed\nto exceed the specified value, even if excess bandwidth is available. If unspecified, defaults to no\nlimit..","summary":"PATCH - network-topology - Controller - queues-other-config","requestBody":{"description":"queues-other-config","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:queues-other-config":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues_queues-other-config","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues_queues-other-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for Queue entries in the MD-SAL."},{"name":"queue-other-config-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"\nConfiguration for linux-htb QoS:\n\nother_config : min-rate optional string\ncontaining an integer, at least 1.\nMinimum guaranteed bandwidth, in bit/s.\n\nother_config : max-rate optional string\ncontaining an integer, at least 1.\nMaximum allowed bandwidth, in bit/s. Optional. If specified, the queue's rate will not be allowed\nto exceed the specified value, even if excess bandwidth is available. If unspecified, defaults to no\nlimit.\n\nother_config : burst optional string\ncontaining an integer, at least 1.\nBurst size, in bits. This is the maximum amount of ''credits'' that a queue can accumulate while it\nis idle. Optional. Details of the linux-htb implementation require a minimum burst size, so a\ntoo-small burst will be silently ignored.\n\nother_config : priority optional string.\ncontaining an integer, in range 0 to 4,294,967,295.\nA queue with a smaller priority will receive all the excess bandwidth that it can use before a\nqueue with a larger value receives any. Specific priority values are unimportant; only relative\nordering matters. Defaults to 0 if unspecified.\n\nConfiguration for linux-htb QoS:\n\nother_config : min-rate optional string\ncontaining an integer, at least 1.\nMinimum guaranteed bandwidth, in bit/s.\n\nother_config : max-rate optional string\ncontaining an integer, at least 1.\nMaximum allowed bandwidth, in bit/s. Optional. If specified, the queue's rate will not be allowed\nto exceed the specified value, even if excess bandwidth is available. If unspecified, defaults to no\nlimit..","summary":"DELETE - Controller - network-topology - queues-other-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for Queue entries in the MD-SAL."},{"name":"queue-other-config-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"\nConfiguration for linux-htb QoS:\n\nother_config : min-rate optional string\ncontaining an integer, at least 1.\nMinimum guaranteed bandwidth, in bit/s.\n\nother_config : max-rate optional string\ncontaining an integer, at least 1.\nMaximum allowed bandwidth, in bit/s. Optional. If specified, the queue's rate will not be allowed\nto exceed the specified value, even if excess bandwidth is available. If unspecified, defaults to no\nlimit.\n\nother_config : burst optional string\ncontaining an integer, at least 1.\nBurst size, in bits. This is the maximum amount of ''credits'' that a queue can accumulate while it\nis idle. Optional. Details of the linux-htb implementation require a minimum burst size, so a\ntoo-small burst will be silently ignored.\n\nother_config : priority optional string.\ncontaining an integer, in range 0 to 4,294,967,295.\nA queue with a smaller priority will receive all the excess bandwidth that it can use before a\nqueue with a larger value receives any. Specific priority values are unimportant; only relative\nordering matters. Defaults to 0 if unspecified.\n\nConfiguration for linux-htb QoS:\n\nother_config : min-rate optional string\ncontaining an integer, at least 1.\nMinimum guaranteed bandwidth, in bit/s.\n\nother_config : max-rate optional string\ncontaining an integer, at least 1.\nMaximum allowed bandwidth, in bit/s. Optional. If specified, the queue's rate will not be allowed\nto exceed the specified value, even if excess bandwidth is available. If unspecified, defaults to no\nlimit..","summary":"GET - Controller - network-topology - queues-other-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues_queues-other-config"}},"application/json":{"schema":{"properties":{"queues-other-config":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues_queues-other-config","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for Queue entries in the MD-SAL."},{"name":"queue-other-config-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:autoattach={autoattach-id}":{"put":{"description":"","summary":"PUT - network-topology - Controller - autoattach","requestBody":{"description":"autoattach","content":{"application/json":{"schema":{"properties":{"ovsdb:autoattach":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"autoattach-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for AutoAttach table in the MD-SAL."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - autoattach","requestBody":{"description":"autoattach","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:autoattach":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"autoattach-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for AutoAttach table in the MD-SAL."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - autoattach","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"autoattach-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for AutoAttach table in the MD-SAL."}]},"get":{"description":"","summary":"GET - Controller - network-topology - autoattach","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach"}},"application/json":{"schema":{"properties":{"autoattach":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"autoattach-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for AutoAttach table in the MD-SAL."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:autoattach={autoattach-id}/mappings={mappings-key}":{"put":{"description":"Map  of integer-integer pairs, key in range 0 to 16,777,215,\nvalue in range 0 to 4,095. A mapping from SPB network Individual Service\nIdentifier  (ISID) to VLAN id.","summary":"PUT - network-topology - Controller - mappings","requestBody":{"description":"mappings","content":{"application/json":{"schema":{"properties":{"ovsdb:mappings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach_mappings","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach_mappings"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"autoattach-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for AutoAttach table in the MD-SAL."},{"name":"mappings-key","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"Map  of integer-integer pairs, key in range 0 to 16,777,215,\nvalue in range 0 to 4,095. A mapping from SPB network Individual Service\nIdentifier  (ISID) to VLAN id.","summary":"PATCH - network-topology - Controller - mappings","requestBody":{"description":"mappings","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:mappings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach_mappings","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach_mappings"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"autoattach-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for AutoAttach table in the MD-SAL."},{"name":"mappings-key","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"Map  of integer-integer pairs, key in range 0 to 16,777,215,\nvalue in range 0 to 4,095. A mapping from SPB network Individual Service\nIdentifier  (ISID) to VLAN id.","summary":"DELETE - Controller - network-topology - mappings","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"autoattach-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for AutoAttach table in the MD-SAL."},{"name":"mappings-key","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"Map  of integer-integer pairs, key in range 0 to 16,777,215,\nvalue in range 0 to 4,095. A mapping from SPB network Individual Service\nIdentifier  (ISID) to VLAN id.","summary":"GET - Controller - network-topology - mappings","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach_mappings"}},"application/json":{"schema":{"properties":{"mappings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach_mappings","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"autoattach-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for AutoAttach table in the MD-SAL."},{"name":"mappings-key","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/ovsdb:autoattach={autoattach-id}/autoattach-external-ids={autoattach-external-id-key}":{"put":{"description":"Key-value pairs for use by external frameworks that integrate with\nOpen vSwitch, rather than by Open vSwitch itself.","summary":"PUT - network-topology - Controller - autoattach-external-ids","requestBody":{"description":"autoattach-external-ids","content":{"application/json":{"schema":{"properties":{"ovsdb:autoattach-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach_autoattach-external-ids","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach_autoattach-external-ids"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"autoattach-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for AutoAttach table in the MD-SAL."},{"name":"autoattach-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"patch":{"description":"Key-value pairs for use by external frameworks that integrate with\nOpen vSwitch, rather than by Open vSwitch itself.","summary":"PATCH - network-topology - Controller - autoattach-external-ids","requestBody":{"description":"autoattach-external-ids","content":{"application/yang-data+json":{"schema":{"properties":{"ovsdb:autoattach-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach_autoattach-external-ids","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach_autoattach-external-ids"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"autoattach-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for AutoAttach table in the MD-SAL."},{"name":"autoattach-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"delete":{"description":"Key-value pairs for use by external frameworks that integrate with\nOpen vSwitch, rather than by Open vSwitch itself.","summary":"DELETE - Controller - network-topology - autoattach-external-ids","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"autoattach-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for AutoAttach table in the MD-SAL."},{"name":"autoattach-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"}]},"get":{"description":"Key-value pairs for use by external frameworks that integrate with\nOpen vSwitch, rather than by Open vSwitch itself.","summary":"GET - Controller - network-topology - autoattach-external-ids","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach_autoattach-external-ids"}},"application/json":{"schema":{"properties":{"autoattach-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach_autoattach-external-ids","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"autoattach-id","in":"path","required":true,"schema":{"type":"string"},"description":"An identifier used for AutoAttach table in the MD-SAL."},{"name":"autoattach-external-id-key","in":"path","required":true,"schema":{"type":"string"},"description":"external-id name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-sr:segments={segment-id}":{"put":{"description":"","summary":"PUT - network-topology - Controller - segments","requestBody":{"description":"segments","content":{"application/json":{"schema":{"properties":{"network-topology-sr:segments":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_segments","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_segments"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"segment-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - segments","requestBody":{"description":"segments","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology-sr:segments":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_segments","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_segments"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"segment-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - segments","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"segment-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - network-topology - segments","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_segments"}},"application/json":{"schema":{"properties":{"segments":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_segments","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"segment-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/pcep-server:configured-lsp={name}":{"put":{"description":"List of Configured LSP per PCC","summary":"PUT - network-topology - Controller - configured-lsp","requestBody":{"description":"configured-lsp","content":{"application/json":{"schema":{"properties":{"pcep-server:configured-lsp":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"List of Configured LSP per PCC","summary":"PATCH - network-topology - Controller - configured-lsp","requestBody":{"description":"configured-lsp","content":{"application/yang-data+json":{"schema":{"properties":{"pcep-server:configured-lsp":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"List of Configured LSP per PCC","summary":"DELETE - Controller - network-topology - configured-lsp","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"List of Configured LSP per PCC","summary":"GET - Controller - network-topology - configured-lsp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp"}},"application/json":{"schema":{"properties":{"configured-lsp":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/pcep-server:configured-lsp={name}/intended-path":{"post":{"description":"Intended Path constraints\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - intended-path","requestBody":{"description":"constraints","content":{"application/json":{"schema":{"properties":{"constraints":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"Intended Path constraints","summary":"PUT - network-topology - Controller - intended-path","requestBody":{"description":"intended-path","content":{"application/json":{"schema":{"properties":{"pcep-server:intended-path":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Intended Path constraints","summary":"PATCH - network-topology - Controller - intended-path","requestBody":{"description":"intended-path","content":{"application/yang-data+json":{"schema":{"properties":{"pcep-server:intended-path":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Intended Path constraints","summary":"DELETE - Controller - network-topology - intended-path","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Intended Path constraints","summary":"GET - Controller - network-topology - intended-path","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path"}},"application/json":{"schema":{"properties":{"intended-path":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/pcep-server:configured-lsp={name}/intended-path/constraints":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - constraints","requestBody":{"description":"include-route","content":{"application/json":{"schema":{"properties":{"include-route":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_include-route","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_include-route"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"","summary":"PUT - network-topology - Controller - constraints","requestBody":{"description":"constraints","content":{"application/json":{"schema":{"properties":{"pcep-server:constraints":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - constraints","requestBody":{"description":"constraints","content":{"application/yang-data+json":{"schema":{"properties":{"pcep-server:constraints":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - constraints","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - network-topology - constraints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints"}},"application/json":{"schema":{"properties":{"constraints":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/pcep-server:configured-lsp={name}/intended-path/constraints/include-route":{"put":{"description":"Speficy routes which must be included in the computed path, i.e. IRO","summary":"PUT - network-topology - Controller - include-route","requestBody":{"description":"include-route","content":{"application/json":{"schema":{"properties":{"pcep-server:include-route":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_include-route","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_include-route"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Speficy routes which must be included in the computed path, i.e. IRO","summary":"PATCH - network-topology - Controller - include-route","requestBody":{"description":"include-route","content":{"application/yang-data+json":{"schema":{"properties":{"pcep-server:include-route":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_include-route","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_include-route"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Speficy routes which must be included in the computed path, i.e. IRO","summary":"DELETE - Controller - network-topology - include-route","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Speficy routes which must be included in the computed path, i.e. IRO","summary":"GET - Controller - network-topology - include-route","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_include-route"}},"application/json":{"schema":{"properties":{"include-route":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_include-route","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/pcep-server:configured-lsp={name}/intended-path/constraints/exclude-route":{"put":{"description":"Speficy routes which must be excluded in the computed path, i.e. XRO","summary":"PUT - network-topology - Controller - exclude-route","requestBody":{"description":"exclude-route","content":{"application/json":{"schema":{"properties":{"pcep-server:exclude-route":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_exclude-route","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_exclude-route"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Speficy routes which must be excluded in the computed path, i.e. XRO","summary":"PATCH - network-topology - Controller - exclude-route","requestBody":{"description":"exclude-route","content":{"application/yang-data+json":{"schema":{"properties":{"pcep-server:exclude-route":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_exclude-route","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_exclude-route"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Speficy routes which must be excluded in the computed path, i.e. XRO","summary":"DELETE - Controller - network-topology - exclude-route","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Speficy routes which must be excluded in the computed path, i.e. XRO","summary":"GET - Controller - network-topology - exclude-route","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_exclude-route"}},"application/json":{"schema":{"properties":{"exclude-route":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_exclude-route","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/pcep-server:configured-lsp={name}/computed-path":{"get":{"description":"","summary":"GET - Controller - network-topology - computed-path","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_computed-path"}},"application/json":{"schema":{"properties":{"computed-path":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_computed-path","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/pcep-server:configured-lsp={name}/computed-path/path-description":{"get":{"description":"","summary":"GET - Controller - network-topology - path-description","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_computed-path_path-description"}},"application/json":{"schema":{"properties":{"path-description":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_computed-path_path-description","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:session-config":{"put":{"description":"","summary":"PUT - network-topology - Controller - session-config","requestBody":{"description":"session-config","content":{"application/json":{"schema":{"properties":{"network-topology-pcep:session-config":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_session-config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_session-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - session-config","requestBody":{"description":"session-config","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology-pcep:session-config":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_session-config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_session-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - session-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - session-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_session-config"}},"application/json":{"schema":{"properties":{"session-config":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_session-config","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client":{"get":{"description":"PCC-related run-time information. This container is only\npresent when the node is connected through PCEP in a PCC\nrole.","summary":"GET - Controller - network-topology - path-computation-client","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client"}},"application/json":{"schema":{"properties":{"path-computation-client":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/stateful-tlv":{"get":{"description":"","summary":"GET - Controller - network-topology - stateful-tlv","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_stateful-tlv"}},"application/json":{"schema":{"properties":{"stateful-tlv":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_stateful-tlv","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/stateful-tlv/odl-pcep-ietf-stateful:stateful":{"get":{"description":"","summary":"GET - Controller - network-topology - stateful","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_stateful-tlv_stateful"}},"application/json":{"schema":{"properties":{"stateful":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_stateful-tlv_stateful","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}":{"get":{"description":"","summary":"GET - Controller - network-topology - reported-lsp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp"}},"application/json":{"schema":{"properties":{"reported-lsp":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}":{"get":{"description":"","summary":"GET - Controller - network-topology - path","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path"}},"application/json":{"schema":{"properties":{"path":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/ero":{"get":{"description":"","summary":"GET - Controller - network-topology - ero","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_ero"}},"application/json":{"schema":{"properties":{"ero":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_ero","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/ero/subobject":{"get":{"description":"","summary":"GET - Controller - network-topology - subobject","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_ero_subobject"}},"application/json":{"schema":{"properties":{"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_ero_subobject","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/metrics":{"get":{"description":"","summary":"GET - Controller - network-topology - metrics","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_metrics"}},"application/json":{"schema":{"properties":{"metrics":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_metrics","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/metrics/metric":{"get":{"description":"","summary":"GET - Controller - network-topology - metric","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_metrics_metric"}},"application/json":{"schema":{"properties":{"metric":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_metrics_metric","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/lspa":{"get":{"description":"","summary":"GET - Controller - network-topology - lspa","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa"}},"application/json":{"schema":{"properties":{"lspa":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/lspa/tlvs":{"get":{"description":"","summary":"GET - Controller - network-topology - tlvs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa_tlvs"}},"application/json":{"schema":{"properties":{"tlvs":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa_tlvs","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/lspa/tlvs/vendor-information-tlv":{"get":{"description":"VENDOR-INFORMATION-TLV","summary":"GET - Controller - network-topology - vendor-information-tlv","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa_tlvs_vendor-information-tlv"}},"application/json":{"schema":{"properties":{"vendor-information-tlv":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa_tlvs_vendor-information-tlv","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/of":{"get":{"description":"","summary":"GET - Controller - network-topology - of","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of"}},"application/json":{"schema":{"properties":{"of":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/of/tlvs":{"get":{"description":"","summary":"GET - Controller - network-topology - tlvs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of_tlvs"}},"application/json":{"schema":{"properties":{"tlvs":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of_tlvs","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/of/tlvs/vendor-information-tlv":{"get":{"description":"VENDOR-INFORMATION-TLV","summary":"GET - Controller - network-topology - vendor-information-tlv","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of_tlvs_vendor-information-tlv"}},"application/json":{"schema":{"properties":{"vendor-information-tlv":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of_tlvs_vendor-information-tlv","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/class-type":{"get":{"description":"","summary":"GET - Controller - network-topology - class-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_class-type"}},"application/json":{"schema":{"properties":{"class-type":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_class-type","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/bandwidth":{"get":{"description":"","summary":"GET - Controller - network-topology - bandwidth","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_bandwidth"}},"application/json":{"schema":{"properties":{"bandwidth":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_bandwidth","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/reoptimization-bandwidth":{"get":{"description":"","summary":"GET - Controller - network-topology - reoptimization-bandwidth","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_reoptimization-bandwidth"}},"application/json":{"schema":{"properties":{"reoptimization-bandwidth":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_reoptimization-bandwidth","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/xro":{"get":{"description":"","summary":"GET - Controller - network-topology - xro","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_xro"}},"application/json":{"schema":{"properties":{"xro":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_xro","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/xro/subobject":{"get":{"description":"","summary":"GET - Controller - network-topology - subobject","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_xro_subobject"}},"application/json":{"schema":{"properties":{"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_xro_subobject","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/iro":{"get":{"description":"","summary":"GET - Controller - network-topology - iro","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_iro"}},"application/json":{"schema":{"properties":{"iro":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_iro","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/iro/subobject":{"get":{"description":"","summary":"GET - Controller - network-topology - subobject","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_iro_subobject"}},"application/json":{"schema":{"properties":{"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_iro_subobject","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/rro":{"get":{"description":"","summary":"GET - Controller - network-topology - rro","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_rro"}},"application/json":{"schema":{"properties":{"rro":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_rro","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/rro/subobject":{"get":{"description":"","summary":"GET - Controller - network-topology - subobject","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_rro_subobject"}},"application/json":{"schema":{"properties":{"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_rro_subobject","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/odl-pcep-ietf-stateful:path-setup-type":{"get":{"description":"","summary":"GET - Controller - network-topology - path-setup-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_path-setup-type"}},"application/json":{"schema":{"properties":{"path-setup-type":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_path-setup-type","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/odl-pcep-ietf-stateful:lsp":{"get":{"description":"","summary":"GET - Controller - network-topology - lsp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp"}},"application/json":{"schema":{"properties":{"lsp":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/odl-pcep-ietf-stateful:lsp/tlvs":{"get":{"description":"","summary":"GET - Controller - network-topology - tlvs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs"}},"application/json":{"schema":{"properties":{"tlvs":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/odl-pcep-ietf-stateful:lsp/tlvs/vendor-information-tlv":{"get":{"description":"VENDOR-INFORMATION-TLV","summary":"GET - Controller - network-topology - vendor-information-tlv","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_vendor-information-tlv"}},"application/json":{"schema":{"properties":{"vendor-information-tlv":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_vendor-information-tlv","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/odl-pcep-ietf-stateful:lsp/tlvs/sr-policy-lsp":{"get":{"description":"","summary":"GET - Controller - network-topology - sr-policy-lsp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_sr-policy-lsp"}},"application/json":{"schema":{"properties":{"sr-policy-lsp":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_sr-policy-lsp","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/odl-pcep-ietf-stateful:lsp/tlvs/sr-policy-lsp/invalidation":{"get":{"description":"","summary":"GET - Controller - network-topology - invalidation","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_sr-policy-lsp_invalidation"}},"application/json":{"schema":{"properties":{"invalidation":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_sr-policy-lsp_invalidation","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/odl-pcep-ietf-stateful:lsp/tlvs/path-binding":{"get":{"description":"","summary":"GET - Controller - network-topology - path-binding","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_path-binding"}},"application/json":{"schema":{"properties":{"path-binding":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_path-binding","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/odl-pcep-ietf-stateful:lsp/tlvs/path-binding/flags":{"get":{"description":"","summary":"GET - Controller - network-topology - flags","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_path-binding_flags"}},"application/json":{"schema":{"properties":{"flags":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_path-binding_flags","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/odl-pcep-ietf-stateful:lsp/tlvs/lsp-error-code":{"get":{"description":"","summary":"GET - Controller - network-topology - lsp-error-code","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-error-code"}},"application/json":{"schema":{"properties":{"lsp-error-code":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-error-code","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/odl-pcep-ietf-stateful:lsp/tlvs/symbolic-path-name":{"get":{"description":"","summary":"GET - Controller - network-topology - symbolic-path-name","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_symbolic-path-name"}},"application/json":{"schema":{"properties":{"symbolic-path-name":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_symbolic-path-name","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/odl-pcep-ietf-stateful:lsp/tlvs/lsp-identifiers":{"get":{"description":"","summary":"GET - Controller - network-topology - lsp-identifiers","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-identifiers"}},"application/json":{"schema":{"properties":{"lsp-identifiers":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-identifiers","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/odl-pcep-ietf-stateful:lsp/tlvs/rsvp-error-spec":{"get":{"description":"","summary":"GET - Controller - network-topology - rsvp-error-spec","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_rsvp-error-spec"}},"application/json":{"schema":{"properties":{"rsvp-error-spec":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_rsvp-error-spec","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/path={lsp-id}/odl-pcep-ietf-stateful:lsp/tlvs/odl-pcep-sync-optimizations:lsp-db-version":{"get":{"description":"","summary":"GET - Controller - network-topology - lsp-db-version","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-db-version"}},"application/json":{"schema":{"properties":{"lsp-db-version":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-db-version","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"lsp-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/metadata":{"get":{"description":"Container for external metadata attached to the LSP. Contents of this container\nare not propagated onto the router itself, so it is persisted only while the LSP\nis present.","summary":"GET - Controller - network-topology - metadata","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_metadata"}},"application/json":{"schema":{"properties":{"metadata":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_metadata","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/association-group":{"get":{"description":"","summary":"GET - Controller - network-topology - association-group","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_association-group"}},"application/json":{"schema":{"properties":{"association-group":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_association-group","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/reported-lsp={name}/association-group/association-tlvs":{"get":{"description":"Base Association TLVs definition","summary":"GET - Controller - network-topology - association-tlvs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_association-group_association-tlvs"}},"application/json":{"schema":{"properties":{"association-tlvs":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_association-group_association-tlvs","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/odl-pcep-sync-optimizations:lsp-db-version":{"get":{"description":"","summary":"GET - Controller - network-topology - lsp-db-version","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_lsp-db-version"}},"application/json":{"schema":{"properties":{"lsp-db-version":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_lsp-db-version","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/pcep-server:configured-lsp={name}":{"get":{"description":"List of Configured LSP per PCC","summary":"GET - Controller - network-topology - configured-lsp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp"}},"application/json":{"schema":{"properties":{"configured-lsp":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/pcep-server:configured-lsp={name}/intended-path":{"get":{"description":"Intended Path constraints","summary":"GET - Controller - network-topology - intended-path","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path"}},"application/json":{"schema":{"properties":{"intended-path":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/pcep-server:configured-lsp={name}/intended-path/constraints":{"get":{"description":"","summary":"GET - Controller - network-topology - constraints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints"}},"application/json":{"schema":{"properties":{"constraints":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/pcep-server:configured-lsp={name}/intended-path/constraints/include-route":{"get":{"description":"Speficy routes which must be included in the computed path, i.e. IRO","summary":"GET - Controller - network-topology - include-route","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints_include-route"}},"application/json":{"schema":{"properties":{"include-route":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints_include-route","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/pcep-server:configured-lsp={name}/intended-path/constraints/exclude-route":{"get":{"description":"Speficy routes which must be excluded in the computed path, i.e. XRO","summary":"GET - Controller - network-topology - exclude-route","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints_exclude-route"}},"application/json":{"schema":{"properties":{"exclude-route":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints_exclude-route","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/pcep-server:configured-lsp={name}/computed-path":{"get":{"description":"","summary":"GET - Controller - network-topology - computed-path","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_computed-path"}},"application/json":{"schema":{"properties":{"computed-path":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_computed-path","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/network-topology-pcep:path-computation-client/pcep-server:configured-lsp={name}/computed-path/path-description":{"get":{"description":"","summary":"GET - Controller - network-topology - path-description","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_computed-path_path-description"}},"application/json":{"schema":{"properties":{"path-description":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_computed-path_path-description","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:connection-info":{"put":{"description":"","summary":"PUT - network-topology - Controller - connection-info","requestBody":{"description":"connection-info","content":{"application/json":{"schema":{"properties":{"hwvtep:connection-info":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_connection-info","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_connection-info"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - connection-info","requestBody":{"description":"connection-info","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:connection-info":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_connection-info","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_connection-info"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - connection-info","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - connection-info","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_connection-info"}},"application/json":{"schema":{"properties":{"connection-info":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_connection-info","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:managers={target}":{"put":{"description":"","summary":"PUT - network-topology - Controller - managers","requestBody":{"description":"managers","content":{"application/json":{"schema":{"properties":{"hwvtep:managers":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managers","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managers"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"target","in":"path","required":true,"schema":{"type":"string"},"description":"Uri indicating connection method to the Manager"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - managers","requestBody":{"description":"managers","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:managers":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managers","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managers"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"target","in":"path","required":true,"schema":{"type":"string"},"description":"Uri indicating connection method to the Manager"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - managers","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"target","in":"path","required":true,"schema":{"type":"string"},"description":"Uri indicating connection method to the Manager"}]},"get":{"description":"","summary":"GET - Controller - network-topology - managers","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managers"}},"application/json":{"schema":{"properties":{"managers":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managers","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"target","in":"path","required":true,"schema":{"type":"string"},"description":"Uri indicating connection method to the Manager"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:managers={target}/manager-other-configs={other-config-key}":{"put":{"description":"Key-value pairs for configuring rarely used features.\nother_config : dscp : optional string\ncontains an integer, in the range 0 - 63. DSCP value to be used when establishing a connection to the switch. Default value of 48 if none specified.","summary":"PUT - network-topology - Controller - manager-other-configs","requestBody":{"description":"manager-other-configs","content":{"application/json":{"schema":{"properties":{"hwvtep:manager-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managers_manager-other-configs","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managers_manager-other-configs"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"target","in":"path","required":true,"schema":{"type":"string"},"description":"Uri indicating connection method to the Manager"},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"other-config name/key"}]},"patch":{"description":"Key-value pairs for configuring rarely used features.\nother_config : dscp : optional string\ncontains an integer, in the range 0 - 63. DSCP value to be used when establishing a connection to the switch. Default value of 48 if none specified.","summary":"PATCH - network-topology - Controller - manager-other-configs","requestBody":{"description":"manager-other-configs","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:manager-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managers_manager-other-configs","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managers_manager-other-configs"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"target","in":"path","required":true,"schema":{"type":"string"},"description":"Uri indicating connection method to the Manager"},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"other-config name/key"}]},"delete":{"description":"Key-value pairs for configuring rarely used features.\nother_config : dscp : optional string\ncontains an integer, in the range 0 - 63. DSCP value to be used when establishing a connection to the switch. Default value of 48 if none specified.","summary":"DELETE - Controller - network-topology - manager-other-configs","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"target","in":"path","required":true,"schema":{"type":"string"},"description":"Uri indicating connection method to the Manager"},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"other-config name/key"}]},"get":{"description":"Key-value pairs for configuring rarely used features.\nother_config : dscp : optional string\ncontains an integer, in the range 0 - 63. DSCP value to be used when establishing a connection to the switch. Default value of 48 if none specified.","summary":"GET - Controller - network-topology - manager-other-configs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managers_manager-other-configs"}},"application/json":{"schema":{"properties":{"manager-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managers_manager-other-configs","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"target","in":"path","required":true,"schema":{"type":"string"},"description":"Uri indicating connection method to the Manager"},{"name":"other-config-key","in":"path","required":true,"schema":{"type":"string"},"description":"other-config name/key"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:switches={switch-ref}":{"put":{"description":"List of physical switches managed by this node","summary":"PUT - network-topology - Controller - switches","requestBody":{"description":"switches","content":{"application/json":{"schema":{"properties":{"hwvtep:switches":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_switches","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_switches"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"switch-ref","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"List of physical switches managed by this node","summary":"PATCH - network-topology - Controller - switches","requestBody":{"description":"switches","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:switches":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_switches","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_switches"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"switch-ref","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"List of physical switches managed by this node","summary":"DELETE - Controller - network-topology - switches","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"switch-ref","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"List of physical switches managed by this node","summary":"GET - Controller - network-topology - switches","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_switches"}},"application/json":{"schema":{"properties":{"switches":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_switches","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"switch-ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:logical-switches={hwvtep-node-name}":{"put":{"description":"","summary":"PUT - network-topology - Controller - logical-switches","requestBody":{"description":"logical-switches","content":{"application/json":{"schema":{"properties":{"hwvtep:logical-switches":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-switches","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-switches"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - logical-switches","requestBody":{"description":"logical-switches","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:logical-switches":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-switches","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-switches"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - logical-switches","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"}]},"get":{"description":"","summary":"GET - Controller - network-topology - logical-switches","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-switches"}},"application/json":{"schema":{"properties":{"logical-switches":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-switches","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:local-ucast-macs={mac-entry-key},{logical-switch-ref}":{"put":{"description":"","summary":"PUT - network-topology - Controller - local-ucast-macs","requestBody":{"description":"local-ucast-macs","content":{"application/json":{"schema":{"properties":{"hwvtep:local-ucast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-ucast-macs","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-ucast-macs"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - local-ucast-macs","requestBody":{"description":"local-ucast-macs","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:local-ucast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-ucast-macs","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-ucast-macs"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - local-ucast-macs","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"get":{"description":"","summary":"GET - Controller - network-topology - local-ucast-macs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-ucast-macs"}},"application/json":{"schema":{"properties":{"local-ucast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-ucast-macs","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:remote-ucast-macs={mac-entry-key},{logical-switch-ref}":{"put":{"description":"","summary":"PUT - network-topology - Controller - remote-ucast-macs","requestBody":{"description":"remote-ucast-macs","content":{"application/json":{"schema":{"properties":{"hwvtep:remote-ucast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-ucast-macs","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-ucast-macs"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - remote-ucast-macs","requestBody":{"description":"remote-ucast-macs","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:remote-ucast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-ucast-macs","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-ucast-macs"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - remote-ucast-macs","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"get":{"description":"","summary":"GET - Controller - network-topology - remote-ucast-macs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-ucast-macs"}},"application/json":{"schema":{"properties":{"remote-ucast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-ucast-macs","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:local-mcast-macs={mac-entry-key},{logical-switch-ref}":{"put":{"description":"","summary":"PUT - network-topology - Controller - local-mcast-macs","requestBody":{"description":"local-mcast-macs","content":{"application/json":{"schema":{"properties":{"hwvtep:local-mcast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-mcast-macs","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-mcast-macs"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - local-mcast-macs","requestBody":{"description":"local-mcast-macs","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:local-mcast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-mcast-macs","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-mcast-macs"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - local-mcast-macs","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"get":{"description":"","summary":"GET - Controller - network-topology - local-mcast-macs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-mcast-macs"}},"application/json":{"schema":{"properties":{"local-mcast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-mcast-macs","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:local-mcast-macs={mac-entry-key},{logical-switch-ref}/locator-set":{"put":{"description":"","summary":"PUT - network-topology - Controller - locator-set","requestBody":{"description":"locator-set","content":{"application/json":{"schema":{"properties":{"hwvtep:locator-set":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-mcast-macs_locator-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-mcast-macs_locator-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - locator-set","requestBody":{"description":"locator-set","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:locator-set":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-mcast-macs_locator-set","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-mcast-macs_locator-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - locator-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"get":{"description":"","summary":"GET - Controller - network-topology - locator-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-mcast-macs_locator-set"}},"application/json":{"schema":{"properties":{"locator-set":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-mcast-macs_locator-set","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:remote-mcast-macs={mac-entry-key},{logical-switch-ref}":{"put":{"description":"","summary":"PUT - network-topology - Controller - remote-mcast-macs","requestBody":{"description":"remote-mcast-macs","content":{"application/json":{"schema":{"properties":{"hwvtep:remote-mcast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-mcast-macs","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-mcast-macs"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - remote-mcast-macs","requestBody":{"description":"remote-mcast-macs","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:remote-mcast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-mcast-macs","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-mcast-macs"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - remote-mcast-macs","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"get":{"description":"","summary":"GET - Controller - network-topology - remote-mcast-macs","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-mcast-macs"}},"application/json":{"schema":{"properties":{"remote-mcast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-mcast-macs","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:remote-mcast-macs={mac-entry-key},{logical-switch-ref}/locator-set":{"put":{"description":"","summary":"PUT - network-topology - Controller - locator-set","requestBody":{"description":"locator-set","content":{"application/json":{"schema":{"properties":{"hwvtep:locator-set":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-mcast-macs_locator-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-mcast-macs_locator-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - locator-set","requestBody":{"description":"locator-set","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:locator-set":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-mcast-macs_locator-set","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-mcast-macs_locator-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - locator-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"}]},"get":{"description":"","summary":"GET - Controller - network-topology - locator-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-mcast-macs_locator-set"}},"application/json":{"schema":{"properties":{"locator-set":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-mcast-macs_locator-set","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"mac-entry-key","in":"path","required":true,"schema":{"type":"string"},"description":"MAC address entry"},{"name":"logical-switch-ref","in":"path","required":true,"schema":{"type":"string"},"description":"The logical switch to which this mapping applies"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:logical-routers={hwvtep-node-name}":{"put":{"description":"","summary":"PUT - network-topology - Controller - logical-routers","requestBody":{"description":"logical-routers","content":{"application/json":{"schema":{"properties":{"hwvtep:logical-routers":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - logical-routers","requestBody":{"description":"logical-routers","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:logical-routers":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - logical-routers","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"}]},"get":{"description":"","summary":"GET - Controller - network-topology - logical-routers","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers"}},"application/json":{"schema":{"properties":{"logical-routers":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:logical-routers={hwvtep-node-name}/switch-bindings":{"put":{"description":"A map of IPv4 or IPv6 address prefix in CIDR\nnotation to logical switch. Multiple prefixes\nmay map to the same switch. By writing a 32-bit\n(or 128-bit for v6) address with a /N prefix\nlength, both the router's interface address and the\nsubnet  prefix  can be configured. For example,\n192.68.1.1/24 creates a /24 subnet for the logical\nswitch  attached to the interface and assigns the\naddress 192.68.1.1 to the router interface.","summary":"PUT - network-topology - Controller - switch-bindings","requestBody":{"description":"switch-bindings","content":{"application/json":{"schema":{"properties":{"hwvtep:switch-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_switch-bindings","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_switch-bindings"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"}]},"patch":{"description":"A map of IPv4 or IPv6 address prefix in CIDR\nnotation to logical switch. Multiple prefixes\nmay map to the same switch. By writing a 32-bit\n(or 128-bit for v6) address with a /N prefix\nlength, both the router's interface address and the\nsubnet  prefix  can be configured. For example,\n192.68.1.1/24 creates a /24 subnet for the logical\nswitch  attached to the interface and assigns the\naddress 192.68.1.1 to the router interface.","summary":"PATCH - network-topology - Controller - switch-bindings","requestBody":{"description":"switch-bindings","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:switch-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_switch-bindings","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_switch-bindings"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"}]},"delete":{"description":"A map of IPv4 or IPv6 address prefix in CIDR\nnotation to logical switch. Multiple prefixes\nmay map to the same switch. By writing a 32-bit\n(or 128-bit for v6) address with a /N prefix\nlength, both the router's interface address and the\nsubnet  prefix  can be configured. For example,\n192.68.1.1/24 creates a /24 subnet for the logical\nswitch  attached to the interface and assigns the\naddress 192.68.1.1 to the router interface.","summary":"DELETE - Controller - network-topology - switch-bindings","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"}]},"get":{"description":"A map of IPv4 or IPv6 address prefix in CIDR\nnotation to logical switch. Multiple prefixes\nmay map to the same switch. By writing a 32-bit\n(or 128-bit for v6) address with a /N prefix\nlength, both the router's interface address and the\nsubnet  prefix  can be configured. For example,\n192.68.1.1/24 creates a /24 subnet for the logical\nswitch  attached to the interface and assigns the\naddress 192.68.1.1 to the router interface.","summary":"GET - Controller - network-topology - switch-bindings","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_switch-bindings"}},"application/json":{"schema":{"properties":{"switch-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_switch-bindings","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:logical-routers={hwvtep-node-name}/static-routes":{"put":{"description":"map of string-string pairs. One or more static routes,\nmapping IP prefixes to next hop IP addresses.","summary":"PUT - network-topology - Controller - static-routes","requestBody":{"description":"static-routes","content":{"application/json":{"schema":{"properties":{"hwvtep:static-routes":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_static-routes","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_static-routes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"}]},"patch":{"description":"map of string-string pairs. One or more static routes,\nmapping IP prefixes to next hop IP addresses.","summary":"PATCH - network-topology - Controller - static-routes","requestBody":{"description":"static-routes","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:static-routes":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_static-routes","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_static-routes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"}]},"delete":{"description":"map of string-string pairs. One or more static routes,\nmapping IP prefixes to next hop IP addresses.","summary":"DELETE - Controller - network-topology - static-routes","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"}]},"get":{"description":"map of string-string pairs. One or more static routes,\nmapping IP prefixes to next hop IP addresses.","summary":"GET - Controller - network-topology - static-routes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_static-routes"}},"application/json":{"schema":{"properties":{"static-routes":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_static-routes","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:logical-routers={hwvtep-node-name}/acl-bindings={router-interface}":{"put":{"description":"map of string-ACL pairs. Maps ACLs to logical router\ninterfaces. The router interfaces are indicated\nusing IP address notation, and must be the same\ninterfaces created in the switch_binding column.\nFor example, an ACL could be associated with the\nlogical router interface with an address of\n192.68.1.1 as defined in the example above.","summary":"PUT - network-topology - Controller - acl-bindings","requestBody":{"description":"acl-bindings","content":{"application/json":{"schema":{"properties":{"hwvtep:acl-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_acl-bindings","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_acl-bindings"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"},{"name":"router-interface","in":"path","required":true,"schema":{"type":"string"},"description":"IPv4 or IPv6 address prefix in CIDR notation"}]},"patch":{"description":"map of string-ACL pairs. Maps ACLs to logical router\ninterfaces. The router interfaces are indicated\nusing IP address notation, and must be the same\ninterfaces created in the switch_binding column.\nFor example, an ACL could be associated with the\nlogical router interface with an address of\n192.68.1.1 as defined in the example above.","summary":"PATCH - network-topology - Controller - acl-bindings","requestBody":{"description":"acl-bindings","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:acl-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_acl-bindings","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_acl-bindings"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"},{"name":"router-interface","in":"path","required":true,"schema":{"type":"string"},"description":"IPv4 or IPv6 address prefix in CIDR notation"}]},"delete":{"description":"map of string-ACL pairs. Maps ACLs to logical router\ninterfaces. The router interfaces are indicated\nusing IP address notation, and must be the same\ninterfaces created in the switch_binding column.\nFor example, an ACL could be associated with the\nlogical router interface with an address of\n192.68.1.1 as defined in the example above.","summary":"DELETE - Controller - network-topology - acl-bindings","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"},{"name":"router-interface","in":"path","required":true,"schema":{"type":"string"},"description":"IPv4 or IPv6 address prefix in CIDR notation"}]},"get":{"description":"map of string-ACL pairs. Maps ACLs to logical router\ninterfaces. The router interfaces are indicated\nusing IP address notation, and must be the same\ninterfaces created in the switch_binding column.\nFor example, an ACL could be associated with the\nlogical router interface with an address of\n192.68.1.1 as defined in the example above.","summary":"GET - Controller - network-topology - acl-bindings","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_acl-bindings"}},"application/json":{"schema":{"properties":{"acl-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_acl-bindings","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"hwvtep-node-name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the node"},{"name":"router-interface","in":"path","required":true,"schema":{"type":"string"},"description":"IPv4 or IPv6 address prefix in CIDR notation"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:local-arp-sources={src-mac}":{"put":{"description":"","summary":"PUT - network-topology - Controller - local-arp-sources","requestBody":{"description":"local-arp-sources","content":{"application/json":{"schema":{"properties":{"hwvtep:local-arp-sources":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-arp-sources","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-arp-sources"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"src-mac","in":"path","required":true,"schema":{"type":"string"},"description":"Source mac to be used by given tep"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - local-arp-sources","requestBody":{"description":"local-arp-sources","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:local-arp-sources":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-arp-sources","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-arp-sources"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"src-mac","in":"path","required":true,"schema":{"type":"string"},"description":"Source mac to be used by given tep"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - local-arp-sources","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"src-mac","in":"path","required":true,"schema":{"type":"string"},"description":"Source mac to be used by given tep"}]},"get":{"description":"","summary":"GET - Controller - network-topology - local-arp-sources","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-arp-sources"}},"application/json":{"schema":{"properties":{"local-arp-sources":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-arp-sources","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"src-mac","in":"path","required":true,"schema":{"type":"string"},"description":"Source mac to be used by given tep"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:remote-arp-sources={src-mac}":{"put":{"description":"","summary":"PUT - network-topology - Controller - remote-arp-sources","requestBody":{"description":"remote-arp-sources","content":{"application/json":{"schema":{"properties":{"hwvtep:remote-arp-sources":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-arp-sources","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-arp-sources"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"src-mac","in":"path","required":true,"schema":{"type":"string"},"description":"Source mac to be used by given tep"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - remote-arp-sources","requestBody":{"description":"remote-arp-sources","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:remote-arp-sources":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-arp-sources","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-arp-sources"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"src-mac","in":"path","required":true,"schema":{"type":"string"},"description":"Source mac to be used by given tep"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - remote-arp-sources","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"src-mac","in":"path","required":true,"schema":{"type":"string"},"description":"Source mac to be used by given tep"}]},"get":{"description":"","summary":"GET - Controller - network-topology - remote-arp-sources","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-arp-sources"}},"application/json":{"schema":{"properties":{"remote-arp-sources":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-arp-sources","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"src-mac","in":"path","required":true,"schema":{"type":"string"},"description":"Source mac to be used by given tep"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:acls={acl-name}":{"put":{"description":"","summary":"PUT - network-topology - Controller - acls","requestBody":{"description":"acls","content":{"application/json":{"schema":{"properties":{"hwvtep:acls":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"acl-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the ACL"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - acls","requestBody":{"description":"acls","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:acls":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"acl-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the ACL"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - acls","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"acl-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the ACL"}]},"get":{"description":"","summary":"GET - Controller - network-topology - acls","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls"}},"application/json":{"schema":{"properties":{"acls":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"acl-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the ACL"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:acls={acl-name}/acl-entries":{"put":{"description":"","summary":"PUT - network-topology - Controller - acl-entries","requestBody":{"description":"acl-entries","content":{"application/json":{"schema":{"properties":{"hwvtep:acl-entries":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls_acl-entries","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls_acl-entries"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"acl-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the ACL"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - acl-entries","requestBody":{"description":"acl-entries","content":{"application/yang-data+json":{"schema":{"properties":{"hwvtep:acl-entries":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls_acl-entries","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls_acl-entries"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"acl-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the ACL"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - acl-entries","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"acl-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the ACL"}]},"get":{"description":"","summary":"GET - Controller - network-topology - acl-entries","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls_acl-entries"}},"application/json":{"schema":{"properties":{"acl-entries":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls_acl-entries","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"acl-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the ACL"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:acls={acl-name}/acl-entries/acle-fault-status={acle-fault-status-key}":{"get":{"description":"","summary":"GET - Controller - network-topology - acle-fault-status","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls_acl-entries_acle-fault-status"}},"application/json":{"schema":{"properties":{"acle-fault-status":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls_acl-entries_acle-fault-status","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"acl-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the ACL"},{"name":"acle-fault-status-key","in":"path","required":true,"schema":{"type":"string"},"description":"acle-fault-status name/key"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:acls={acl-name}/acl-fault-status={acl-fault-status-key}":{"get":{"description":"","summary":"GET - Controller - network-topology - acl-fault-status","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls_acl-fault-status"}},"application/json":{"schema":{"properties":{"acl-fault-status":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls_acl-fault-status","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"acl-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the ACL"},{"name":"acl-fault-status-key","in":"path","required":true,"schema":{"type":"string"},"description":"acl-fault-status name/key"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/hwvtep:logical-binding-stats={logical-binding-stats-uuid}":{"get":{"description":"","summary":"GET - Controller - network-topology - logical-binding-stats","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-binding-stats"}},"application/json":{"schema":{"properties":{"logical-binding-stats":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-binding-stats","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"logical-binding-stats-uuid","in":"path","required":true,"schema":{"type":"string"},"description":"A unique identifier of the logical binding stats"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-topology:netconf-node":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - netconf-node","requestBody":{"description":"netconf-node","content":{"application/json":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node"}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"put":{"description":"","summary":"PUT - network-topology - Controller - netconf-node","requestBody":{"description":"netconf-node","content":{"application/json":{"schema":{"properties":{"netconf-node-topology:netconf-node":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - netconf-node","requestBody":{"description":"netconf-node","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-node-topology:netconf-node":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - netconf-node","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - netconf-node","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node"}},"application/json":{"schema":{"properties":{"netconf-node":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-topology:netconf-node/clustered-connection-status":{"get":{"description":"","summary":"GET - Controller - network-topology - clustered-connection-status","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_clustered-connection-status"}},"application/json":{"schema":{"properties":{"clustered-connection-status":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_clustered-connection-status","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-topology:netconf-node/clustered-connection-status/node-status":{"get":{"description":"","summary":"GET - Controller - network-topology - node-status","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_clustered-connection-status_node-status"}},"application/json":{"schema":{"properties":{"node-status":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_clustered-connection-status_node-status","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-topology:netconf-node/available-capabilities":{"get":{"description":"","summary":"GET - Controller - network-topology - available-capabilities","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_available-capabilities"}},"application/json":{"schema":{"properties":{"available-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_available-capabilities","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-topology:netconf-node/available-capabilities/available-capability":{"get":{"description":"","summary":"GET - Controller - network-topology - available-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_available-capabilities_available-capability"}},"application/json":{"schema":{"properties":{"available-capability":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_available-capabilities_available-capability","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-topology:netconf-node/unavailable-capabilities":{"get":{"description":"","summary":"GET - Controller - network-topology - unavailable-capabilities","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_unavailable-capabilities"}},"application/json":{"schema":{"properties":{"unavailable-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_unavailable-capabilities","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-topology:netconf-node/unavailable-capabilities/unavailable-capability":{"get":{"description":"","summary":"GET - Controller - network-topology - unavailable-capability","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_unavailable-capabilities_unavailable-capability"}},"application/json":{"schema":{"properties":{"unavailable-capability":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_unavailable-capabilities_unavailable-capability","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-topology:netconf-node/pass-through":{"put":{"description":"When the underlying node is connected, its NETCONF context\nis available verbatim under this container through the\nmount extension.","summary":"PUT - network-topology - Controller - pass-through","requestBody":{"description":"pass-through","content":{"application/json":{"schema":{"properties":{"netconf-node-topology:pass-through":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_pass-through","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_pass-through"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"When the underlying node is connected, its NETCONF context\nis available verbatim under this container through the\nmount extension.","summary":"PATCH - network-topology - Controller - pass-through","requestBody":{"description":"pass-through","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-node-topology:pass-through":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_pass-through","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_pass-through"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"When the underlying node is connected, its NETCONF context\nis available verbatim under this container through the\nmount extension.","summary":"DELETE - Controller - network-topology - pass-through","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"When the underlying node is connected, its NETCONF context\nis available verbatim under this container through the\nmount extension.","summary":"GET - Controller - network-topology - pass-through","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_pass-through"}},"application/json":{"schema":{"properties":{"pass-through":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_pass-through","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-topology:netconf-node/negotiated-ssh-transport-parameters":{"get":{"description":"Transport parameters negotiated during device connection process","summary":"GET - Controller - network-topology - negotiated-ssh-transport-parameters","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_negotiated-ssh-transport-parameters"}},"application/json":{"schema":{"properties":{"negotiated-ssh-transport-parameters":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_negotiated-ssh-transport-parameters","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-topology:netconf-node/yang-library":{"put":{"description":"","summary":"PUT - network-topology - Controller - yang-library","requestBody":{"description":"yang-library","content":{"application/json":{"schema":{"properties":{"netconf-node-topology:yang-library":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_yang-library","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_yang-library"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - yang-library","requestBody":{"description":"yang-library","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-node-topology:yang-library":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_yang-library","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_yang-library"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - yang-library","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - yang-library","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_yang-library"}},"application/json":{"schema":{"properties":{"yang-library":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_yang-library","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-topology:netconf-node/protocol":{"put":{"description":"","summary":"PUT - network-topology - Controller - protocol","requestBody":{"description":"protocol","content":{"application/json":{"schema":{"properties":{"netconf-node-topology:protocol":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_protocol","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_protocol"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - protocol","requestBody":{"description":"protocol","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-node-topology:protocol":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_protocol","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_protocol"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - protocol","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - protocol","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_protocol"}},"application/json":{"schema":{"properties":{"protocol":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_protocol","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-topology:netconf-node/yang-module-capabilities":{"put":{"description":"","summary":"PUT - network-topology - Controller - yang-module-capabilities","requestBody":{"description":"yang-module-capabilities","content":{"application/json":{"schema":{"properties":{"netconf-node-topology:yang-module-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_yang-module-capabilities","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_yang-module-capabilities"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - yang-module-capabilities","requestBody":{"description":"yang-module-capabilities","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-node-topology:yang-module-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_yang-module-capabilities","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_yang-module-capabilities"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - yang-module-capabilities","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - yang-module-capabilities","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_yang-module-capabilities"}},"application/json":{"schema":{"properties":{"yang-module-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_yang-module-capabilities","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-topology:netconf-node/non-module-capabilities":{"put":{"description":"","summary":"PUT - network-topology - Controller - non-module-capabilities","requestBody":{"description":"non-module-capabilities","content":{"application/json":{"schema":{"properties":{"netconf-node-topology:non-module-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_non-module-capabilities","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_non-module-capabilities"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - non-module-capabilities","requestBody":{"description":"non-module-capabilities","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-node-topology:non-module-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_non-module-capabilities","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_non-module-capabilities"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - non-module-capabilities","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - non-module-capabilities","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_non-module-capabilities"}},"application/json":{"schema":{"properties":{"non-module-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_non-module-capabilities","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/node={node-id}/netconf-node-topology:netconf-node/odl-hello-message-capabilities":{"put":{"description":"","summary":"PUT - network-topology - Controller - odl-hello-message-capabilities","requestBody":{"description":"odl-hello-message-capabilities","content":{"application/json":{"schema":{"properties":{"netconf-node-topology:odl-hello-message-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_odl-hello-message-capabilities","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_odl-hello-message-capabilities"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - odl-hello-message-capabilities","requestBody":{"description":"odl-hello-message-capabilities","content":{"application/yang-data+json":{"schema":{"properties":{"netconf-node-topology:odl-hello-message-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_odl-hello-message-capabilities","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_odl-hello-message-capabilities"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - odl-hello-message-capabilities","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - odl-hello-message-capabilities","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_odl-hello-message-capabilities"}},"application/json":{"schema":{"properties":{"odl-hello-message-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_odl-hello-message-capabilities","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"node-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}":{"put":{"description":"\nA Network Link connects a by Local (Source) node and\na Remote (Destination) Network Nodes via a set of the\nnodes' termination points.\nAs it is possible to have several links between the same\nsource and destination nodes, and as a link could potentially\nbe re-homed between termination points, to ensure that we\nwould always know to distinguish between links, every link\nis identified by a dedicated link identifier.\nNote that a link models a point-to-point link, not a multipoint\nlink.\nLayering dependencies on links in underlay topologies are\nnot represented as the layering information of nodes and of\ntermination points is sufficient.\n","summary":"PUT - network-topology - Controller - link","requestBody":{"description":"link","content":{"application/json":{"schema":{"properties":{"network-topology:link":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"patch":{"description":"\nA Network Link connects a by Local (Source) node and\na Remote (Destination) Network Nodes via a set of the\nnodes' termination points.\nAs it is possible to have several links between the same\nsource and destination nodes, and as a link could potentially\nbe re-homed between termination points, to ensure that we\nwould always know to distinguish between links, every link\nis identified by a dedicated link identifier.\nNote that a link models a point-to-point link, not a multipoint\nlink.\nLayering dependencies on links in underlay topologies are\nnot represented as the layering information of nodes and of\ntermination points is sufficient.\n","summary":"PATCH - network-topology - Controller - link","requestBody":{"description":"link","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology:link":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"delete":{"description":"\nA Network Link connects a by Local (Source) node and\na Remote (Destination) Network Nodes via a set of the\nnodes' termination points.\nAs it is possible to have several links between the same\nsource and destination nodes, and as a link could potentially\nbe re-homed between termination points, to ensure that we\nwould always know to distinguish between links, every link\nis identified by a dedicated link identifier.\nNote that a link models a point-to-point link, not a multipoint\nlink.\nLayering dependencies on links in underlay topologies are\nnot represented as the layering information of nodes and of\ntermination points is sufficient.\n","summary":"DELETE - Controller - network-topology - link","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"get":{"description":"\nA Network Link connects a by Local (Source) node and\na Remote (Destination) Network Nodes via a set of the\nnodes' termination points.\nAs it is possible to have several links between the same\nsource and destination nodes, and as a link could potentially\nbe re-homed between termination points, to ensure that we\nwould always know to distinguish between links, every link\nis identified by a dedicated link identifier.\nNote that a link models a point-to-point link, not a multipoint\nlink.\nLayering dependencies on links in underlay topologies are\nnot represented as the layering information of nodes and of\ntermination points is sufficient.\n","summary":"GET - Controller - network-topology - link","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link"}},"application/json":{"schema":{"properties":{"link":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/source":{"put":{"description":"","summary":"PUT - network-topology - Controller - source","requestBody":{"description":"source","content":{"application/json":{"schema":{"properties":{"network-topology:source":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_source","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_source"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - source","requestBody":{"description":"source","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology:source":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_source","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_source"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - source","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - source","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_source"}},"application/json":{"schema":{"properties":{"source":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_source","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/destination":{"put":{"description":"","summary":"PUT - network-topology - Controller - destination","requestBody":{"description":"destination","content":{"application/json":{"schema":{"properties":{"network-topology:destination":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_destination","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_destination"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - destination","requestBody":{"description":"destination","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology:destination":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_destination","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_destination"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - destination","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - destination","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_destination"}},"application/json":{"schema":{"properties":{"destination":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_destination","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/supporting-link={link-ref}":{"put":{"description":"","summary":"PUT - network-topology - Controller - supporting-link","requestBody":{"description":"supporting-link","content":{"application/json":{"schema":{"properties":{"network-topology:supporting-link":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_supporting-link","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_supporting-link"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"link-ref","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - supporting-link","requestBody":{"description":"supporting-link","content":{"application/yang-data+json":{"schema":{"properties":{"network-topology:supporting-link":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_supporting-link","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_supporting-link"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"link-ref","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - supporting-link","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"link-ref","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - network-topology - supporting-link","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_supporting-link"}},"application/json":{"schema":{"properties":{"supporting-link":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_supporting-link","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"link-ref","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - igp-link-attributes","requestBody":{"description":"isis-link-attributes","content":{"application/json":{"schema":{"properties":{"isis-link-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"put":{"description":"","summary":"PUT - network-topology - Controller - igp-link-attributes","requestBody":{"description":"igp-link-attributes","content":{"application/json":{"schema":{"properties":{"l3-unicast-igp-topology:igp-link-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - igp-link-attributes","requestBody":{"description":"igp-link-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"l3-unicast-igp-topology:igp-link-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - igp-link-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - igp-link-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes"}},"application/json":{"schema":{"properties":{"igp-link-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/isis-topology:isis-link-attributes":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - isis-link-attributes","requestBody":{"description":"ted","content":{"application/json":{"schema":{"properties":{"ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"put":{"description":"","summary":"PUT - network-topology - Controller - isis-link-attributes","requestBody":{"description":"isis-link-attributes","content":{"application/json":{"schema":{"properties":{"isis-topology:isis-link-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - isis-link-attributes","requestBody":{"description":"isis-link-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:isis-link-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - isis-link-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - isis-link-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes"}},"application/json":{"schema":{"properties":{"isis-link-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/isis-topology:isis-link-attributes/ted":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - ted","requestBody":{"description":"unreserved-bandwidth","content":{"application/json":{"schema":{"properties":{"unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_unreserved-bandwidth","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_unreserved-bandwidth"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"put":{"description":"","summary":"PUT - network-topology - Controller - ted","requestBody":{"description":"ted","content":{"application/json":{"schema":{"properties":{"isis-topology:ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - ted","requestBody":{"description":"ted","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - ted","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - ted","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted"}},"application/json":{"schema":{"properties":{"ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/isis-topology:isis-link-attributes/ted/unreserved-bandwidth={priority}":{"put":{"description":"Unreserved bandwidth for 0-7 priority levels. Units in bytes per second","summary":"PUT - network-topology - Controller - unreserved-bandwidth","requestBody":{"description":"unreserved-bandwidth","content":{"application/json":{"schema":{"properties":{"isis-topology:unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_unreserved-bandwidth","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_unreserved-bandwidth"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"Unreserved bandwidth for 0-7 priority levels. Units in bytes per second","summary":"PATCH - network-topology - Controller - unreserved-bandwidth","requestBody":{"description":"unreserved-bandwidth","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_unreserved-bandwidth","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_unreserved-bandwidth"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"Unreserved bandwidth for 0-7 priority levels. Units in bytes per second","summary":"DELETE - Controller - network-topology - unreserved-bandwidth","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"Unreserved bandwidth for 0-7 priority levels. Units in bytes per second","summary":"GET - Controller - network-topology - unreserved-bandwidth","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_unreserved-bandwidth"}},"application/json":{"schema":{"properties":{"unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_unreserved-bandwidth","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/isis-topology:isis-link-attributes/ted/srlg":{"post":{"description":"Shared Risk Link Group Attributes\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - srlg","requestBody":{"description":"interface-switching-capabilities","content":{"application/json":{"schema":{"properties":{"interface-switching-capabilities":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"put":{"description":"Shared Risk Link Group Attributes","summary":"PUT - network-topology - Controller - srlg","requestBody":{"description":"srlg","content":{"application/json":{"schema":{"properties":{"isis-topology:srlg":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"patch":{"description":"Shared Risk Link Group Attributes","summary":"PATCH - network-topology - Controller - srlg","requestBody":{"description":"srlg","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:srlg":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"delete":{"description":"Shared Risk Link Group Attributes","summary":"DELETE - Controller - network-topology - srlg","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"get":{"description":"Shared Risk Link Group Attributes","summary":"GET - Controller - network-topology - srlg","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg"}},"application/json":{"schema":{"properties":{"srlg":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/isis-topology:isis-link-attributes/ted/srlg/interface-switching-capabilities={switching-capability}":{"put":{"description":"List of interface capabilities for this interface","summary":"PUT - network-topology - Controller - interface-switching-capabilities","requestBody":{"description":"interface-switching-capabilities","content":{"application/json":{"schema":{"properties":{"isis-topology:interface-switching-capabilities":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"patch":{"description":"List of interface capabilities for this interface","summary":"PATCH - network-topology - Controller - interface-switching-capabilities","requestBody":{"description":"interface-switching-capabilities","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:interface-switching-capabilities":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"delete":{"description":"List of interface capabilities for this interface","summary":"DELETE - Controller - network-topology - interface-switching-capabilities","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"get":{"description":"List of interface capabilities for this interface","summary":"GET - Controller - network-topology - interface-switching-capabilities","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities"}},"application/json":{"schema":{"properties":{"interface-switching-capabilities":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/isis-topology:isis-link-attributes/ted/srlg/interface-switching-capabilities={switching-capability}/max-lsp-bandwidth={priority}":{"put":{"description":"Maximum LSP Bandwidth at priorities 0-7","summary":"PUT - network-topology - Controller - max-lsp-bandwidth","requestBody":{"description":"max-lsp-bandwidth","content":{"application/json":{"schema":{"properties":{"isis-topology:max-lsp-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"Maximum LSP Bandwidth at priorities 0-7","summary":"PATCH - network-topology - Controller - max-lsp-bandwidth","requestBody":{"description":"max-lsp-bandwidth","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:max-lsp-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"Maximum LSP Bandwidth at priorities 0-7","summary":"DELETE - Controller - network-topology - max-lsp-bandwidth","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"Maximum LSP Bandwidth at priorities 0-7","summary":"GET - Controller - network-topology - max-lsp-bandwidth","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth"}},"application/json":{"schema":{"properties":{"max-lsp-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/isis-topology:isis-link-attributes/ted/srlg/interface-switching-capabilities={switching-capability}/packet-switch-capable":{"put":{"description":"Interface has packet-switching capabilities","summary":"PUT - network-topology - Controller - packet-switch-capable","requestBody":{"description":"packet-switch-capable","content":{"application/json":{"schema":{"properties":{"isis-topology:packet-switch-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"patch":{"description":"Interface has packet-switching capabilities","summary":"PATCH - network-topology - Controller - packet-switch-capable","requestBody":{"description":"packet-switch-capable","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:packet-switch-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"delete":{"description":"Interface has packet-switching capabilities","summary":"DELETE - Controller - network-topology - packet-switch-capable","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"get":{"description":"Interface has packet-switching capabilities","summary":"GET - Controller - network-topology - packet-switch-capable","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable"}},"application/json":{"schema":{"properties":{"packet-switch-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/isis-topology:isis-link-attributes/ted/srlg/interface-switching-capabilities={switching-capability}/time-division-multiplex-capable":{"put":{"description":"Interface has time-division multiplex capabilities","summary":"PUT - network-topology - Controller - time-division-multiplex-capable","requestBody":{"description":"time-division-multiplex-capable","content":{"application/json":{"schema":{"properties":{"isis-topology:time-division-multiplex-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"patch":{"description":"Interface has time-division multiplex capabilities","summary":"PATCH - network-topology - Controller - time-division-multiplex-capable","requestBody":{"description":"time-division-multiplex-capable","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:time-division-multiplex-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"delete":{"description":"Interface has time-division multiplex capabilities","summary":"DELETE - Controller - network-topology - time-division-multiplex-capable","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"get":{"description":"Interface has time-division multiplex capabilities","summary":"GET - Controller - network-topology - time-division-multiplex-capable","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable"}},"application/json":{"schema":{"properties":{"time-division-multiplex-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/isis-topology:isis-link-attributes/ted/srlg/srlg-values={srlg-value}":{"put":{"description":"List of Shared Risk Link Group this interface belongs to.","summary":"PUT - network-topology - Controller - srlg-values","requestBody":{"description":"srlg-values","content":{"application/json":{"schema":{"properties":{"isis-topology:srlg-values":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_srlg-values","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_srlg-values"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"srlg-value","in":"path","required":true,"schema":{"type":"integer"},"description":"Shared Risk Link Group value"}]},"patch":{"description":"List of Shared Risk Link Group this interface belongs to.","summary":"PATCH - network-topology - Controller - srlg-values","requestBody":{"description":"srlg-values","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:srlg-values":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_srlg-values","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_srlg-values"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"srlg-value","in":"path","required":true,"schema":{"type":"integer"},"description":"Shared Risk Link Group value"}]},"delete":{"description":"List of Shared Risk Link Group this interface belongs to.","summary":"DELETE - Controller - network-topology - srlg-values","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"srlg-value","in":"path","required":true,"schema":{"type":"integer"},"description":"Shared Risk Link Group value"}]},"get":{"description":"List of Shared Risk Link Group this interface belongs to.","summary":"GET - Controller - network-topology - srlg-values","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_srlg-values"}},"application/json":{"schema":{"properties":{"srlg-values":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_srlg-values","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"srlg-value","in":"path","required":true,"schema":{"type":"integer"},"description":"Shared Risk Link Group value"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/ospf-topology:ospf-link-attributes":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - ospf-link-attributes","requestBody":{"description":"ted","content":{"application/json":{"schema":{"properties":{"ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"put":{"description":"","summary":"PUT - network-topology - Controller - ospf-link-attributes","requestBody":{"description":"ospf-link-attributes","content":{"application/json":{"schema":{"properties":{"ospf-topology:ospf-link-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - ospf-link-attributes","requestBody":{"description":"ospf-link-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:ospf-link-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - ospf-link-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - ospf-link-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes"}},"application/json":{"schema":{"properties":{"ospf-link-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/ospf-topology:ospf-link-attributes/ted":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - ted","requestBody":{"description":"unreserved-bandwidth","content":{"application/json":{"schema":{"properties":{"unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_unreserved-bandwidth","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_unreserved-bandwidth"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"put":{"description":"","summary":"PUT - network-topology - Controller - ted","requestBody":{"description":"ted","content":{"application/json":{"schema":{"properties":{"ospf-topology:ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - ted","requestBody":{"description":"ted","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - ted","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"get":{"description":"","summary":"GET - Controller - network-topology - ted","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted"}},"application/json":{"schema":{"properties":{"ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/ospf-topology:ospf-link-attributes/ted/unreserved-bandwidth={priority}":{"put":{"description":"Unreserved bandwidth for 0-7 priority levels. Units in bytes per second","summary":"PUT - network-topology - Controller - unreserved-bandwidth","requestBody":{"description":"unreserved-bandwidth","content":{"application/json":{"schema":{"properties":{"ospf-topology:unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_unreserved-bandwidth","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_unreserved-bandwidth"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"Unreserved bandwidth for 0-7 priority levels. Units in bytes per second","summary":"PATCH - network-topology - Controller - unreserved-bandwidth","requestBody":{"description":"unreserved-bandwidth","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_unreserved-bandwidth","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_unreserved-bandwidth"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"Unreserved bandwidth for 0-7 priority levels. Units in bytes per second","summary":"DELETE - Controller - network-topology - unreserved-bandwidth","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"Unreserved bandwidth for 0-7 priority levels. Units in bytes per second","summary":"GET - Controller - network-topology - unreserved-bandwidth","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_unreserved-bandwidth"}},"application/json":{"schema":{"properties":{"unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_unreserved-bandwidth","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/ospf-topology:ospf-link-attributes/ted/srlg":{"post":{"description":"Shared Risk Link Group Attributes\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - srlg","requestBody":{"description":"interface-switching-capabilities","content":{"application/json":{"schema":{"properties":{"interface-switching-capabilities":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"put":{"description":"Shared Risk Link Group Attributes","summary":"PUT - network-topology - Controller - srlg","requestBody":{"description":"srlg","content":{"application/json":{"schema":{"properties":{"ospf-topology:srlg":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"patch":{"description":"Shared Risk Link Group Attributes","summary":"PATCH - network-topology - Controller - srlg","requestBody":{"description":"srlg","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:srlg":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"delete":{"description":"Shared Risk Link Group Attributes","summary":"DELETE - Controller - network-topology - srlg","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."}]},"get":{"description":"Shared Risk Link Group Attributes","summary":"GET - Controller - network-topology - srlg","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg"}},"application/json":{"schema":{"properties":{"srlg":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/ospf-topology:ospf-link-attributes/ted/srlg/interface-switching-capabilities={switching-capability}":{"put":{"description":"List of interface capabilities for this interface","summary":"PUT - network-topology - Controller - interface-switching-capabilities","requestBody":{"description":"interface-switching-capabilities","content":{"application/json":{"schema":{"properties":{"ospf-topology:interface-switching-capabilities":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"patch":{"description":"List of interface capabilities for this interface","summary":"PATCH - network-topology - Controller - interface-switching-capabilities","requestBody":{"description":"interface-switching-capabilities","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:interface-switching-capabilities":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"delete":{"description":"List of interface capabilities for this interface","summary":"DELETE - Controller - network-topology - interface-switching-capabilities","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"get":{"description":"List of interface capabilities for this interface","summary":"GET - Controller - network-topology - interface-switching-capabilities","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities"}},"application/json":{"schema":{"properties":{"interface-switching-capabilities":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/ospf-topology:ospf-link-attributes/ted/srlg/interface-switching-capabilities={switching-capability}/max-lsp-bandwidth={priority}":{"put":{"description":"Maximum LSP Bandwidth at priorities 0-7","summary":"PUT - network-topology - Controller - max-lsp-bandwidth","requestBody":{"description":"max-lsp-bandwidth","content":{"application/json":{"schema":{"properties":{"ospf-topology:max-lsp-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"Maximum LSP Bandwidth at priorities 0-7","summary":"PATCH - network-topology - Controller - max-lsp-bandwidth","requestBody":{"description":"max-lsp-bandwidth","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:max-lsp-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"Maximum LSP Bandwidth at priorities 0-7","summary":"DELETE - Controller - network-topology - max-lsp-bandwidth","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"Maximum LSP Bandwidth at priorities 0-7","summary":"GET - Controller - network-topology - max-lsp-bandwidth","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth"}},"application/json":{"schema":{"properties":{"max-lsp-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"},{"name":"priority","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/ospf-topology:ospf-link-attributes/ted/srlg/interface-switching-capabilities={switching-capability}/packet-switch-capable":{"put":{"description":"Interface has packet-switching capabilities","summary":"PUT - network-topology - Controller - packet-switch-capable","requestBody":{"description":"packet-switch-capable","content":{"application/json":{"schema":{"properties":{"ospf-topology:packet-switch-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"patch":{"description":"Interface has packet-switching capabilities","summary":"PATCH - network-topology - Controller - packet-switch-capable","requestBody":{"description":"packet-switch-capable","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:packet-switch-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"delete":{"description":"Interface has packet-switching capabilities","summary":"DELETE - Controller - network-topology - packet-switch-capable","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"get":{"description":"Interface has packet-switching capabilities","summary":"GET - Controller - network-topology - packet-switch-capable","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable"}},"application/json":{"schema":{"properties":{"packet-switch-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/ospf-topology:ospf-link-attributes/ted/srlg/interface-switching-capabilities={switching-capability}/time-division-multiplex-capable":{"put":{"description":"Interface has time-division multiplex capabilities","summary":"PUT - network-topology - Controller - time-division-multiplex-capable","requestBody":{"description":"time-division-multiplex-capable","content":{"application/json":{"schema":{"properties":{"ospf-topology:time-division-multiplex-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"patch":{"description":"Interface has time-division multiplex capabilities","summary":"PATCH - network-topology - Controller - time-division-multiplex-capable","requestBody":{"description":"time-division-multiplex-capable","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:time-division-multiplex-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"delete":{"description":"Interface has time-division multiplex capabilities","summary":"DELETE - Controller - network-topology - time-division-multiplex-capable","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"}]},"get":{"description":"Interface has time-division multiplex capabilities","summary":"GET - Controller - network-topology - time-division-multiplex-capable","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable"}},"application/json":{"schema":{"properties":{"time-division-multiplex-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"switching-capability","in":"path","required":true,"schema":{"type":"string"},"description":"Switching Capability for this interface"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/l3-unicast-igp-topology:igp-link-attributes/ospf-topology:ospf-link-attributes/ted/srlg/srlg-values={srlg-value}":{"put":{"description":"List of Shared Risk Link Group this interface belongs to.","summary":"PUT - network-topology - Controller - srlg-values","requestBody":{"description":"srlg-values","content":{"application/json":{"schema":{"properties":{"ospf-topology:srlg-values":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_srlg-values","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_srlg-values"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"srlg-value","in":"path","required":true,"schema":{"type":"integer"},"description":"Shared Risk Link Group value"}]},"patch":{"description":"List of Shared Risk Link Group this interface belongs to.","summary":"PATCH - network-topology - Controller - srlg-values","requestBody":{"description":"srlg-values","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:srlg-values":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_srlg-values","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_srlg-values"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"srlg-value","in":"path","required":true,"schema":{"type":"integer"},"description":"Shared Risk Link Group value"}]},"delete":{"description":"List of Shared Risk Link Group this interface belongs to.","summary":"DELETE - Controller - network-topology - srlg-values","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"srlg-value","in":"path","required":true,"schema":{"type":"integer"},"description":"Shared Risk Link Group value"}]},"get":{"description":"List of Shared Risk Link Group this interface belongs to.","summary":"GET - Controller - network-topology - srlg-values","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_srlg-values"}},"application/json":{"schema":{"properties":{"srlg-values":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_srlg-values","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"srlg-value","in":"path","required":true,"schema":{"type":"integer"},"description":"Shared Risk Link Group value"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/topology-tunnel:tunnel-types":{"get":{"description":"A tunnel can have multiple traits, each of\nwhich is indicated by a presence container\nunder this one. Such containers should not\ncarry any data.","summary":"GET - Controller - network-topology - tunnel-types","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_tunnel-types"}},"application/json":{"schema":{"properties":{"tunnel-types":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_tunnel-types","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/topology-tunnel:tunnel-types/topology-tunnel-p2p:p2p-tunnel":{"get":{"description":"","summary":"GET - Controller - network-topology - p2p-tunnel","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_tunnel-types_p2p-tunnel"}},"application/json":{"schema":{"properties":{"p2p-tunnel":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_tunnel-types_p2p-tunnel","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/link={link-id}/topology-tunnel:tunnel-types/topology-tunnel-pcep:pcep-tunnel":{"get":{"description":"","summary":"GET - Controller - network-topology - pcep-tunnel","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_tunnel-types_pcep-tunnel"}},"application/json":{"schema":{"properties":{"pcep-tunnel":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_tunnel-types_pcep-tunnel","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"link-id","in":"path","required":true,"schema":{"type":"string"},"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/l3-unicast-igp-topology:igp-topology-attributes":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - network-topology - igp-topology-attributes","requestBody":{"description":"ospf-topology-attributes","content":{"application/json":{"schema":{"properties":{"ospf-topology-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_ospf-topology-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_ospf-topology-attributes"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"put":{"description":"","summary":"PUT - network-topology - Controller - igp-topology-attributes","requestBody":{"description":"igp-topology-attributes","content":{"application/json":{"schema":{"properties":{"l3-unicast-igp-topology:igp-topology-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - igp-topology-attributes","requestBody":{"description":"igp-topology-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"l3-unicast-igp-topology:igp-topology-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - igp-topology-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - igp-topology-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes"}},"application/json":{"schema":{"properties":{"igp-topology-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/l3-unicast-igp-topology:igp-topology-attributes/ospf-topology:ospf-topology-attributes":{"put":{"description":"","summary":"PUT - network-topology - Controller - ospf-topology-attributes","requestBody":{"description":"ospf-topology-attributes","content":{"application/json":{"schema":{"properties":{"ospf-topology:ospf-topology-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_ospf-topology-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_ospf-topology-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - ospf-topology-attributes","requestBody":{"description":"ospf-topology-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"ospf-topology:ospf-topology-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_ospf-topology-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_ospf-topology-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - ospf-topology-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - ospf-topology-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_ospf-topology-attributes"}},"application/json":{"schema":{"properties":{"ospf-topology-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_ospf-topology-attributes","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/l3-unicast-igp-topology:igp-topology-attributes/isis-topology:isis-topology-attributes":{"put":{"description":"","summary":"PUT - network-topology - Controller - isis-topology-attributes","requestBody":{"description":"isis-topology-attributes","content":{"application/json":{"schema":{"properties":{"isis-topology:isis-topology-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_isis-topology-attributes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_isis-topology-attributes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"patch":{"description":"","summary":"PATCH - network-topology - Controller - isis-topology-attributes","requestBody":{"description":"isis-topology-attributes","content":{"application/yang-data+json":{"schema":{"properties":{"isis-topology:isis-topology-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_isis-topology-attributes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_isis-topology-attributes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"delete":{"description":"","summary":"DELETE - Controller - network-topology - isis-topology-attributes","responses":{"204":{"description":"Deleted"}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"}]},"get":{"description":"","summary":"GET - Controller - network-topology - isis-topology-attributes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_isis-topology-attributes"}},"application/json":{"schema":{"properties":{"isis-topology-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_isis-topology-attributes","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-tunnel:paths={path-id}":{"get":{"description":"","summary":"GET - Controller - network-topology - paths","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths"}},"application/json":{"schema":{"properties":{"paths":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"path-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-tunnel:paths={path-id}/path-types":{"get":{"description":"A path can have multiple traits, each\nof which is indicated by a presence\ncontainer under this one. Such\ncontainers should not carry any data.","summary":"GET - Controller - network-topology - path-types","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths_path-types"}},"application/json":{"schema":{"properties":{"path-types":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths_path-types","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"path-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-tunnel:paths={path-id}/path-types/topology-tunnel-sr:sr-tunnel":{"get":{"description":"","summary":"GET - Controller - network-topology - sr-tunnel","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths_path-types_sr-tunnel"}},"application/json":{"schema":{"properties":{"sr-tunnel":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths_path-types_sr-tunnel","type":"object"}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"path-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-tunnel:paths={path-id}/topology-tunnel-p2p:explicit-hops={order}":{"get":{"description":"","summary":"GET - Controller - network-topology - explicit-hops","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths_explicit-hops"}},"application/json":{"schema":{"properties":{"explicit-hops":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths_explicit-hops","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"path-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/network-topology:network-topology/topology={topology-id}/topology-tunnel:paths={path-id}/topology-tunnel-p2p:reported-hops={order}":{"get":{"description":"","summary":"GET - Controller - network-topology - reported-hops","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths_reported-hops"}},"application/json":{"schema":{"properties":{"reported-hops":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths_reported-hops","type":"object"}}}}}}}},"tags":["Controller network-topology"],"parameters":[{"name":"topology-id","in":"path","required":true,"schema":{"type":"string"},"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n"},{"name":"path-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/network-topology-pcep:add-lsp":{"post":{"description":"","summary":"POST - Controller - network-topology-pcep - add-lsp","requestBody":{"description":"add-lsp_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/network-topology-pcep_add-lsp_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_add-lsp_input"}}}},"responses":{"200":{"description":"RPC add-lsp success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_add-lsp_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_add-lsp_output"}}}}},"tags":["Controller network-topology-pcep"],"parameters":[]}},"/rests/operations/network-topology-pcep:remove-lsp":{"post":{"description":"","summary":"POST - Controller - network-topology-pcep - remove-lsp","requestBody":{"description":"remove-lsp_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/network-topology-pcep_remove-lsp_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_remove-lsp_input"}}}},"responses":{"200":{"description":"RPC remove-lsp success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_remove-lsp_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_remove-lsp_output"}}}}},"tags":["Controller network-topology-pcep"],"parameters":[]}},"/rests/operations/network-topology-pcep:update-lsp":{"post":{"description":"","summary":"POST - Controller - network-topology-pcep - update-lsp","requestBody":{"description":"update-lsp_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/network-topology-pcep_update-lsp_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_update-lsp_input"}}}},"responses":{"200":{"description":"RPC update-lsp success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_update-lsp_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_update-lsp_output"}}}}},"tags":["Controller network-topology-pcep"],"parameters":[]}},"/rests/operations/network-topology-pcep:ensure-lsp-operational":{"post":{"description":"Ensure that the target LSP is provisioned and has specified\noperational status.","summary":"POST - Controller - network-topology-pcep - ensure-lsp-operational","requestBody":{"description":"ensure-lsp-operational_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/network-topology-pcep_ensure-lsp-operational_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_ensure-lsp-operational_input"}}}},"responses":{"200":{"description":"RPC ensure-lsp-operational success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_ensure-lsp-operational_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_ensure-lsp-operational_output"}}}}},"tags":["Controller network-topology-pcep"],"parameters":[]}},"/rests/operations/network-topology-pcep:trigger-sync":{"post":{"description":"","summary":"POST - Controller - network-topology-pcep - trigger-sync","requestBody":{"description":"trigger-sync_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/network-topology-pcep_trigger-sync_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_trigger-sync_input"}}}},"responses":{"200":{"description":"RPC trigger-sync success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_trigger-sync_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_trigger-sync_output"}}}}},"tags":["Controller network-topology-pcep"],"parameters":[]}},"/rests/operations/network-topology-pcep:tear-down-session":{"post":{"description":"Closes the session between PCE and PCC.","summary":"POST - Controller - network-topology-pcep - tear-down-session","requestBody":{"description":"tear-down-session_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/network-topology-pcep_tear-down-session_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep_tear-down-session_input"}}}},"responses":{"204":{"description":"RPC tear-down-session success"}},"tags":["Controller network-topology-pcep"],"parameters":[]}},"/rests/operations/network-topology-pcep-programming:submit-add-lsp":{"post":{"description":"","summary":"POST - Controller - network-topology-pcep-programming - submit-add-lsp","requestBody":{"description":"submit-add-lsp_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-add-lsp_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-add-lsp_input"}}}},"responses":{"200":{"description":"RPC submit-add-lsp success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-add-lsp_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-add-lsp_output"}}}}},"tags":["Controller network-topology-pcep-programming"],"parameters":[]}},"/rests/operations/network-topology-pcep-programming:submit-remove-lsp":{"post":{"description":"","summary":"POST - Controller - network-topology-pcep-programming - submit-remove-lsp","requestBody":{"description":"submit-remove-lsp_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-remove-lsp_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-remove-lsp_input"}}}},"responses":{"200":{"description":"RPC submit-remove-lsp success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-remove-lsp_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-remove-lsp_output"}}}}},"tags":["Controller network-topology-pcep-programming"],"parameters":[]}},"/rests/operations/network-topology-pcep-programming:submit-update-lsp":{"post":{"description":"","summary":"POST - Controller - network-topology-pcep-programming - submit-update-lsp","requestBody":{"description":"submit-update-lsp_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-update-lsp_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-update-lsp_input"}}}},"responses":{"200":{"description":"RPC submit-update-lsp success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-update-lsp_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-update-lsp_output"}}}}},"tags":["Controller network-topology-pcep-programming"],"parameters":[]}},"/rests/operations/network-topology-pcep-programming:submit-ensure-lsp-operational":{"post":{"description":"","summary":"POST - Controller - network-topology-pcep-programming - submit-ensure-lsp-operational","requestBody":{"description":"submit-ensure-lsp-operational_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-ensure-lsp-operational_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-ensure-lsp-operational_input"}}}},"responses":{"200":{"description":"RPC submit-ensure-lsp-operational success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-ensure-lsp-operational_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-ensure-lsp-operational_output"}}}}},"tags":["Controller network-topology-pcep-programming"],"parameters":[]}},"/rests/operations/network-topology-pcep-programming:submit-trigger-sync":{"post":{"description":"","summary":"POST - Controller - network-topology-pcep-programming - submit-trigger-sync","requestBody":{"description":"submit-trigger-sync_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-trigger-sync_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-trigger-sync_input"}}}},"responses":{"200":{"description":"RPC submit-trigger-sync success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-trigger-sync_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/network-topology-pcep-programming_submit-trigger-sync_output"}}}}},"tags":["Controller network-topology-pcep-programming"],"parameters":[]}},"/rests/operations/node-config:set-config":{"post":{"description":"Sending initial configuration to device.","summary":"POST - Controller - node-config - set-config","requestBody":{"description":"set-config_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/node-config_set-config_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/node-config_set-config_input"}}}},"responses":{"200":{"description":"RPC set-config success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/node-config_set-config_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/node-config_set-config_output"}}}}},"tags":["Controller node-config"],"parameters":[]}},"/rests/operations/notifications:create-subscription":{"post":{"description":"The command to create a notification subscription. It\ntakes as argument the name of the notification stream\nand filter. Both of those options limit the content of\nthe subscription. In addition, there are two time-related\nparameters, startTime and stopTime, which can be used to\nselect the time interval of interest to the notification\nreplay feature.","summary":"POST - Controller - notifications - create-subscription","requestBody":{"description":"create-subscription_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/notifications_create-subscription_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/notifications_create-subscription_input"}}}},"responses":{"204":{"description":"RPC create-subscription success"}},"tags":["Controller notifications"],"parameters":[]}},"/rests/data/odl-bgp-peer-acceptor-config:bgp-peer-acceptor-config={config-name}":{"put":{"description":"","summary":"PUT - odl-bgp-peer-acceptor-config - Controller - bgp-peer-acceptor-config","requestBody":{"description":"bgp-peer-acceptor-config","content":{"application/json":{"schema":{"properties":{"odl-bgp-peer-acceptor-config:bgp-peer-acceptor-config":{"type":"array","items":{"$ref":"#/components/schemas/odl-bgp-peer-acceptor-config_bgp-peer-acceptor-config","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-bgp-peer-acceptor-config_bgp-peer-acceptor-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-bgp-peer-acceptor-config"],"parameters":[{"name":"config-name","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - odl-bgp-peer-acceptor-config - Controller - bgp-peer-acceptor-config","requestBody":{"description":"bgp-peer-acceptor-config","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-peer-acceptor-config:bgp-peer-acceptor-config":{"type":"array","items":{"$ref":"#/components/schemas/odl-bgp-peer-acceptor-config_bgp-peer-acceptor-config","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-bgp-peer-acceptor-config_bgp-peer-acceptor-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-bgp-peer-acceptor-config"],"parameters":[{"name":"config-name","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - odl-bgp-peer-acceptor-config - bgp-peer-acceptor-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-bgp-peer-acceptor-config"],"parameters":[{"name":"config-name","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - odl-bgp-peer-acceptor-config - bgp-peer-acceptor-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-bgp-peer-acceptor-config_bgp-peer-acceptor-config"}},"application/json":{"schema":{"properties":{"bgp-peer-acceptor-config":{"type":"array","items":{"$ref":"#/components/schemas/odl-bgp-peer-acceptor-config_bgp-peer-acceptor-config","type":"object"}}}}}}}},"tags":["Controller odl-bgp-peer-acceptor-config"],"parameters":[{"name":"config-name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-bmp-monitor-config:odl-bmp-monitors":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - odl-bmp-monitor-config - odl-bmp-monitors","requestBody":{"description":"bmp-monitor-config","content":{"application/json":{"schema":{"properties":{"bmp-monitor-config":{"type":"array","items":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[]},"put":{"description":"","summary":"PUT - odl-bmp-monitor-config - Controller - odl-bmp-monitors","requestBody":{"description":"odl-bmp-monitors","content":{"application/json":{"schema":{"properties":{"odl-bmp-monitor-config:odl-bmp-monitors":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[]},"patch":{"description":"","summary":"PATCH - odl-bmp-monitor-config - Controller - odl-bmp-monitors","requestBody":{"description":"odl-bmp-monitors","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bmp-monitor-config:odl-bmp-monitors":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - odl-bmp-monitor-config - odl-bmp-monitors","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - odl-bmp-monitor-config - odl-bmp-monitors","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors"}},"application/json":{"schema":{"properties":{"odl-bmp-monitors":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors","type":"object"}}}}}}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-bmp-monitor-config:odl-bmp-monitors/bmp-monitor-config={monitor-id}":{"put":{"description":"","summary":"PUT - odl-bmp-monitor-config - Controller - bmp-monitor-config","requestBody":{"description":"bmp-monitor-config","content":{"application/json":{"schema":{"properties":{"odl-bmp-monitor-config:bmp-monitor-config":{"type":"array","items":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - odl-bmp-monitor-config - Controller - bmp-monitor-config","requestBody":{"description":"bmp-monitor-config","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bmp-monitor-config:bmp-monitor-config":{"type":"array","items":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - odl-bmp-monitor-config - bmp-monitor-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - odl-bmp-monitor-config - bmp-monitor-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config"}},"application/json":{"schema":{"properties":{"bmp-monitor-config":{"type":"array","items":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config","type":"object"}}}}}}}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-bmp-monitor-config:odl-bmp-monitors/bmp-monitor-config={monitor-id}/server":{"put":{"description":"","summary":"PUT - odl-bmp-monitor-config - Controller - server","requestBody":{"description":"server","content":{"application/json":{"schema":{"properties":{"odl-bmp-monitor-config:server":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_server","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_server"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - odl-bmp-monitor-config - Controller - server","requestBody":{"description":"server","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bmp-monitor-config:server":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_server","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_server"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - odl-bmp-monitor-config - server","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - odl-bmp-monitor-config - server","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_server"}},"application/json":{"schema":{"properties":{"server":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_server","type":"object"}}}}}}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-bmp-monitor-config:odl-bmp-monitors/bmp-monitor-config={monitor-id}/monitored-router={address}":{"put":{"description":"","summary":"PUT - odl-bmp-monitor-config - Controller - monitored-router","requestBody":{"description":"monitored-router","content":{"application/json":{"schema":{"properties":{"odl-bmp-monitor-config:monitored-router":{"type":"array","items":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_monitored-router","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_monitored-router"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"address","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - odl-bmp-monitor-config - Controller - monitored-router","requestBody":{"description":"monitored-router","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bmp-monitor-config:monitored-router":{"type":"array","items":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_monitored-router","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_monitored-router"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"address","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - odl-bmp-monitor-config - monitored-router","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"address","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - odl-bmp-monitor-config - monitored-router","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_monitored-router"}},"application/json":{"schema":{"properties":{"monitored-router":{"type":"array","items":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_monitored-router","type":"object"}}}}}}}},"tags":["Controller odl-bmp-monitor-config"],"parameters":[{"name":"monitor-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"address","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/odl-device-notification:subscribe-device-notification":{"post":{"description":"Subscribe to notifications on specified device.","summary":"POST - Controller - odl-device-notification - subscribe-device-notification","requestBody":{"description":"subscribe-device-notification_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-device-notification_subscribe-device-notification_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-device-notification_subscribe-device-notification_input"}}}},"responses":{"200":{"description":"RPC subscribe-device-notification success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-device-notification_subscribe-device-notification_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-device-notification_subscribe-device-notification_output"}}}}},"tags":["Controller odl-device-notification"],"parameters":[]}},"/rests/operations/odl-entity-owners:get-entities":{"post":{"description":"","summary":"POST - Controller - odl-entity-owners - get-entities","requestBody":{"description":"get-entities_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners"},"type":"object"}}}},"responses":{"200":{"description":"RPC get-entities success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-entity-owners_get-entities_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-entity-owners_get-entities_output"}}}}},"tags":["Controller odl-entity-owners"],"parameters":[]}},"/rests/operations/odl-entity-owners:get-entity":{"post":{"description":"","summary":"POST - Controller - odl-entity-owners - get-entity","requestBody":{"description":"get-entity_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-entity-owners_get-entity_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-entity-owners_get-entity_input"}}}},"responses":{"200":{"description":"RPC get-entity success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-entity-owners_get-entity_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-entity-owners_get-entity_output"}}}}},"tags":["Controller odl-entity-owners"],"parameters":[]}},"/rests/operations/odl-entity-owners:get-entity-owner":{"post":{"description":"","summary":"POST - Controller - odl-entity-owners - get-entity-owner","requestBody":{"description":"get-entity-owner_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-entity-owners_get-entity-owner_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-entity-owners_get-entity-owner_input"}}}},"responses":{"200":{"description":"RPC get-entity-owner success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-entity-owners_get-entity-owner_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-entity-owners_get-entity-owner_output"}}}}},"tags":["Controller odl-entity-owners"],"parameters":[]}},"/rests/data/odl-general-entity:entity={name}":{"put":{"description":"","summary":"PUT - odl-general-entity - Controller - entity","requestBody":{"description":"entity","content":{"application/json":{"schema":{"properties":{"odl-general-entity:entity":{"type":"array","items":{"$ref":"#/components/schemas/odl-general-entity_entity","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-general-entity_entity"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-general-entity"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - odl-general-entity - Controller - entity","requestBody":{"description":"entity","content":{"application/yang-data+json":{"schema":{"properties":{"odl-general-entity:entity":{"type":"array","items":{"$ref":"#/components/schemas/odl-general-entity_entity","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-general-entity_entity"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-general-entity"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - odl-general-entity - entity","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-general-entity"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - odl-general-entity - entity","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-general-entity_entity"}},"application/json":{"schema":{"properties":{"entity":{"type":"array","items":{"$ref":"#/components/schemas/odl-general-entity_entity","type":"object"}}}}}}}},"tags":["Controller odl-general-entity"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/odl-lisp-sb:send-map-request":{"post":{"description":"","summary":"POST - Controller - odl-lisp-sb - send-map-request","requestBody":{"description":"send-map-request_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-lisp-sb_send-map-request_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-lisp-sb_send-map-request_input"}}}},"responses":{"204":{"description":"RPC send-map-request success"}},"tags":["Controller odl-lisp-sb"],"parameters":[]}},"/rests/operations/odl-lisp-sb:send-map-reply":{"post":{"description":"","summary":"POST - Controller - odl-lisp-sb - send-map-reply","requestBody":{"description":"send-map-reply_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-lisp-sb_send-map-reply_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-lisp-sb_send-map-reply_input"}}}},"responses":{"204":{"description":"RPC send-map-reply success"}},"tags":["Controller odl-lisp-sb"],"parameters":[]}},"/rests/operations/odl-lisp-sb:send-map-register":{"post":{"description":"","summary":"POST - Controller - odl-lisp-sb - send-map-register","requestBody":{"description":"send-map-register_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-lisp-sb_send-map-register_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-lisp-sb_send-map-register_input"}}}},"responses":{"204":{"description":"RPC send-map-register success"}},"tags":["Controller odl-lisp-sb"],"parameters":[]}},"/rests/operations/odl-lisp-sb:send-map-notify":{"post":{"description":"","summary":"POST - Controller - odl-lisp-sb - send-map-notify","requestBody":{"description":"send-map-notify_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-lisp-sb_send-map-notify_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-lisp-sb_send-map-notify_input"}}}},"responses":{"204":{"description":"RPC send-map-notify success"}},"tags":["Controller odl-lisp-sb"],"parameters":[]}},"/rests/operations/odl-lisp-sb:get-stats":{"post":{"description":"","summary":"POST - Controller - odl-lisp-sb - get-stats","requestBody":{"description":"get-stats_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:lfm:lisp-sb"},"type":"object"}}}},"responses":{"200":{"description":"RPC get-stats success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-lisp-sb_get-stats_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-lisp-sb_get-stats_output"}}}}},"tags":["Controller odl-lisp-sb"],"parameters":[]}},"/rests/operations/odl-lisp-sb:reset-stats":{"post":{"description":"","summary":"POST - Controller - odl-lisp-sb - reset-stats","requestBody":{"description":"reset-stats_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:lfm:lisp-sb"},"type":"object"}}}},"responses":{"204":{"description":"RPC reset-stats success"}},"tags":["Controller odl-lisp-sb"],"parameters":[]}},"/rests/operations/odl-mappingservice:add-key":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - add-key","requestBody":{"description":"add-key_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_add-key_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_add-key_input"}}}},"responses":{"204":{"description":"RPC add-key success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:get-key":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - get-key","requestBody":{"description":"get-key_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_get-key_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-key_input"}}}},"responses":{"200":{"description":"RPC get-key success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-key_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-key_output"}}}}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:update-key":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - update-key","requestBody":{"description":"update-key_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_update-key_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_update-key_input"}}}},"responses":{"204":{"description":"RPC update-key success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:remove-key":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - remove-key","requestBody":{"description":"remove-key_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_remove-key_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_remove-key_input"}}}},"responses":{"204":{"description":"RPC remove-key success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:add-mapping":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - add-mapping","requestBody":{"description":"add-mapping_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_add-mapping_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_add-mapping_input"}}}},"responses":{"204":{"description":"RPC add-mapping success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:get-mapping":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - get-mapping","requestBody":{"description":"get-mapping_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_get-mapping_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-mapping_input"}}}},"responses":{"200":{"description":"RPC get-mapping success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-mapping_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-mapping_output"}}}}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:get-mapping-with-xtr-id":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - get-mapping-with-xtr-id","requestBody":{"description":"get-mapping-with-xtr-id_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_get-mapping-with-xtr-id_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-mapping-with-xtr-id_input"}}}},"responses":{"200":{"description":"RPC get-mapping-with-xtr-id success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-mapping-with-xtr-id_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-mapping-with-xtr-id_output"}}}}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:update-mapping":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - update-mapping","requestBody":{"description":"update-mapping_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_update-mapping_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_update-mapping_input"}}}},"responses":{"204":{"description":"RPC update-mapping success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:remove-mapping":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - remove-mapping","requestBody":{"description":"remove-mapping_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_remove-mapping_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_remove-mapping_input"}}}},"responses":{"204":{"description":"RPC remove-mapping success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:add-keys":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - add-keys","requestBody":{"description":"add-keys_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_add-keys_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_add-keys_input"}}}},"responses":{"204":{"description":"RPC add-keys success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:get-keys":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - get-keys","requestBody":{"description":"get-keys_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_get-keys_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-keys_input"}}}},"responses":{"200":{"description":"RPC get-keys success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-keys_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-keys_output"}}}}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:update-keys":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - update-keys","requestBody":{"description":"update-keys_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_update-keys_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_update-keys_input"}}}},"responses":{"204":{"description":"RPC update-keys success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:remove-keys":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - remove-keys","requestBody":{"description":"remove-keys_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_remove-keys_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_remove-keys_input"}}}},"responses":{"204":{"description":"RPC remove-keys success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:add-mappings":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - add-mappings","requestBody":{"description":"add-mappings_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_add-mappings_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_add-mappings_input"}}}},"responses":{"204":{"description":"RPC add-mappings success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:get-mappings":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - get-mappings","requestBody":{"description":"get-mappings_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_get-mappings_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-mappings_input"}}}},"responses":{"200":{"description":"RPC get-mappings success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-mappings_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-mappings_output"}}}}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:update-mappings":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - update-mappings","requestBody":{"description":"update-mappings_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_update-mappings_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_update-mappings_input"}}}},"responses":{"204":{"description":"RPC update-mappings success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:remove-mappings":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - remove-mappings","requestBody":{"description":"remove-mappings_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mappingservice_remove-mappings_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_remove-mappings_input"}}}},"responses":{"204":{"description":"RPC remove-mappings success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:get-all-keys":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - get-all-keys","requestBody":{"description":"get-all-keys_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"},"type":"object"}}}},"responses":{"200":{"description":"RPC get-all-keys success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-all-keys_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-all-keys_output"}}}}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:get-all-mappings":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - get-all-mappings","requestBody":{"description":"get-all-mappings_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"},"type":"object"}}}},"responses":{"200":{"description":"RPC get-all-mappings success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-all-mappings_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_get-all-mappings_output"}}}}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:remove-all-keys":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - remove-all-keys","requestBody":{"description":"remove-all-keys_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"},"type":"object"}}}},"responses":{"204":{"description":"RPC remove-all-keys success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:remove-all-mappings":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - remove-all-mappings","requestBody":{"description":"remove-all-mappings_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"},"type":"object"}}}},"responses":{"204":{"description":"RPC remove-all-mappings success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/operations/odl-mappingservice:remove-all-operational-content":{"post":{"description":"","summary":"POST - Controller - odl-mappingservice - remove-all-operational-content","requestBody":{"description":"remove-all-operational-content_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"},"type":"object"}}}},"responses":{"204":{"description":"RPC remove-all-operational-content success"}},"tags":["Controller odl-mappingservice"],"parameters":[]}},"/rests/data/odl-mappingservice:mapping-database":{"post":{"description":"The LISP EID-to-RLOC mapping database\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - odl-mappingservice - mapping-database","requestBody":{"description":"virtual-network-identifier","content":{"application/json":{"schema":{"properties":{"virtual-network-identifier":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller odl-mappingservice"],"parameters":[]},"put":{"description":"The LISP EID-to-RLOC mapping database","summary":"PUT - odl-mappingservice - Controller - mapping-database","requestBody":{"description":"mapping-database","content":{"application/json":{"schema":{"properties":{"odl-mappingservice:mapping-database":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[]},"patch":{"description":"The LISP EID-to-RLOC mapping database","summary":"PATCH - odl-mappingservice - Controller - mapping-database","requestBody":{"description":"mapping-database","content":{"application/yang-data+json":{"schema":{"properties":{"odl-mappingservice:mapping-database":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[]},"delete":{"description":"The LISP EID-to-RLOC mapping database","summary":"DELETE - Controller - odl-mappingservice - mapping-database","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-mappingservice"],"parameters":[]},"get":{"description":"The LISP EID-to-RLOC mapping database","summary":"GET - Controller - odl-mappingservice - mapping-database","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database"}},"application/json":{"schema":{"properties":{"mapping-database":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database","type":"object"}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/virtual-network-identifier={vni}":{"put":{"description":"A list of Virtual Network Identifiers","summary":"PUT - odl-mappingservice - Controller - virtual-network-identifier","requestBody":{"description":"virtual-network-identifier","content":{"application/json":{"schema":{"properties":{"odl-mappingservice:virtual-network-identifier":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"}]},"patch":{"description":"A list of Virtual Network Identifiers","summary":"PATCH - odl-mappingservice - Controller - virtual-network-identifier","requestBody":{"description":"virtual-network-identifier","content":{"application/yang-data+json":{"schema":{"properties":{"odl-mappingservice:virtual-network-identifier":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"}]},"delete":{"description":"A list of Virtual Network Identifiers","summary":"DELETE - Controller - odl-mappingservice - virtual-network-identifier","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"}]},"get":{"description":"A list of Virtual Network Identifiers","summary":"GET - Controller - odl-mappingservice - virtual-network-identifier","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier"}},"application/json":{"schema":{"properties":{"virtual-network-identifier":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier","type":"object"}}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/virtual-network-identifier={vni}/mapping={eid-uri},{origin}":{"put":{"description":"A list of EID-to-RLOC mappings within the same Instance ID","summary":"PUT - odl-mappingservice - Controller - mapping","requestBody":{"description":"mapping","content":{"application/json":{"schema":{"properties":{"odl-mappingservice:mapping":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"}]},"patch":{"description":"A list of EID-to-RLOC mappings within the same Instance ID","summary":"PATCH - odl-mappingservice - Controller - mapping","requestBody":{"description":"mapping","content":{"application/yang-data+json":{"schema":{"properties":{"odl-mappingservice:mapping":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"}]},"delete":{"description":"A list of EID-to-RLOC mappings within the same Instance ID","summary":"DELETE - Controller - odl-mappingservice - mapping","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"}]},"get":{"description":"A list of EID-to-RLOC mappings within the same Instance ID","summary":"GET - Controller - odl-mappingservice - mapping","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping"}},"application/json":{"schema":{"properties":{"mapping":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping","type":"object"}}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/virtual-network-identifier={vni}/mapping={eid-uri},{origin}/xtr-id-mapping={xtr-id-uri}":{"get":{"description":"A list of xTR-IDs with their associated mappings","summary":"GET - Controller - odl-mappingservice - xtr-id-mapping","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping"}},"application/json":{"schema":{"properties":{"xtr-id-mapping":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping","type":"object"}}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"xtr-id-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/virtual-network-identifier={vni}/mapping={eid-uri},{origin}/xtr-id-mapping={xtr-id-uri}/mapping-record":{"get":{"description":"","summary":"GET - Controller - odl-mappingservice - mapping-record","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record"}},"application/json":{"schema":{"properties":{"mapping-record":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record","type":"object"}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"xtr-id-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/virtual-network-identifier={vni}/mapping={eid-uri},{origin}/xtr-id-mapping={xtr-id-uri}/mapping-record/eid":{"get":{"description":"","summary":"GET - Controller - odl-mappingservice - eid","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_eid"}},"application/json":{"schema":{"properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_eid","type":"object"}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"xtr-id-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/virtual-network-identifier={vni}/mapping={eid-uri},{origin}/xtr-id-mapping={xtr-id-uri}/mapping-record/LocatorRecord={locator-id}":{"get":{"description":"","summary":"GET - Controller - odl-mappingservice - LocatorRecord","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_LocatorRecord"}},"application/json":{"schema":{"properties":{"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_LocatorRecord","type":"object"}}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"xtr-id-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"locator-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/virtual-network-identifier={vni}/mapping={eid-uri},{origin}/xtr-id-mapping={xtr-id-uri}/mapping-record/LocatorRecord={locator-id}/rloc":{"get":{"description":"","summary":"GET - Controller - odl-mappingservice - rloc","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_LocatorRecord_rloc"}},"application/json":{"schema":{"properties":{"rloc":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_LocatorRecord_rloc","type":"object"}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"xtr-id-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"locator-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/virtual-network-identifier={vni}/mapping={eid-uri},{origin}/mapping-record":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - odl-mappingservice - mapping-record","requestBody":{"description":"eid","content":{"application/json":{"schema":{"properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_eid","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_eid"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"}]},"put":{"description":"","summary":"PUT - odl-mappingservice - Controller - mapping-record","requestBody":{"description":"mapping-record","content":{"application/json":{"schema":{"properties":{"odl-mappingservice:mapping-record":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"}]},"patch":{"description":"","summary":"PATCH - odl-mappingservice - Controller - mapping-record","requestBody":{"description":"mapping-record","content":{"application/yang-data+json":{"schema":{"properties":{"odl-mappingservice:mapping-record":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"}]},"delete":{"description":"","summary":"DELETE - Controller - odl-mappingservice - mapping-record","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"}]},"get":{"description":"","summary":"GET - Controller - odl-mappingservice - mapping-record","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record"}},"application/json":{"schema":{"properties":{"mapping-record":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record","type":"object"}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/virtual-network-identifier={vni}/mapping={eid-uri},{origin}/mapping-record/eid":{"put":{"description":"","summary":"PUT - odl-mappingservice - Controller - eid","requestBody":{"description":"eid","content":{"application/json":{"schema":{"properties":{"odl-mappingservice:eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_eid","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_eid"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"}]},"patch":{"description":"","summary":"PATCH - odl-mappingservice - Controller - eid","requestBody":{"description":"eid","content":{"application/yang-data+json":{"schema":{"properties":{"odl-mappingservice:eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_eid","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_eid"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"}]},"delete":{"description":"","summary":"DELETE - Controller - odl-mappingservice - eid","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"}]},"get":{"description":"","summary":"GET - Controller - odl-mappingservice - eid","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_eid"}},"application/json":{"schema":{"properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_eid","type":"object"}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/virtual-network-identifier={vni}/mapping={eid-uri},{origin}/mapping-record/LocatorRecord={locator-id}":{"put":{"description":"","summary":"PUT - odl-mappingservice - Controller - LocatorRecord","requestBody":{"description":"LocatorRecord","content":{"application/json":{"schema":{"properties":{"odl-mappingservice:LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"locator-id","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - odl-mappingservice - Controller - LocatorRecord","requestBody":{"description":"LocatorRecord","content":{"application/yang-data+json":{"schema":{"properties":{"odl-mappingservice:LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"locator-id","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - odl-mappingservice - LocatorRecord","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"locator-id","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - odl-mappingservice - LocatorRecord","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord"}},"application/json":{"schema":{"properties":{"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord","type":"object"}}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"locator-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/virtual-network-identifier={vni}/mapping={eid-uri},{origin}/mapping-record/LocatorRecord={locator-id}/rloc":{"put":{"description":"","summary":"PUT - odl-mappingservice - Controller - rloc","requestBody":{"description":"rloc","content":{"application/json":{"schema":{"properties":{"odl-mappingservice:rloc":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord_rloc","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord_rloc"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"locator-id","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - odl-mappingservice - Controller - rloc","requestBody":{"description":"rloc","content":{"application/yang-data+json":{"schema":{"properties":{"odl-mappingservice:rloc":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord_rloc","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord_rloc"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"locator-id","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - odl-mappingservice - rloc","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"locator-id","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - odl-mappingservice - rloc","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord_rloc"}},"application/json":{"schema":{"properties":{"rloc":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord_rloc","type":"object"}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"origin","in":"path","required":true,"schema":{"type":"string"},"description":"Mapping origin"},{"name":"locator-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/virtual-network-identifier={vni}/authentication-key={eid-uri}":{"put":{"description":"A list of authentication keys for EID prefixes within the same Virtual Network Identifier","summary":"PUT - odl-mappingservice - Controller - authentication-key","requestBody":{"description":"authentication-key","content":{"application/json":{"schema":{"properties":{"odl-mappingservice:authentication-key":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"A list of authentication keys for EID prefixes within the same Virtual Network Identifier","summary":"PATCH - odl-mappingservice - Controller - authentication-key","requestBody":{"description":"authentication-key","content":{"application/yang-data+json":{"schema":{"properties":{"odl-mappingservice:authentication-key":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"A list of authentication keys for EID prefixes within the same Virtual Network Identifier","summary":"DELETE - Controller - odl-mappingservice - authentication-key","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"A list of authentication keys for EID prefixes within the same Virtual Network Identifier","summary":"GET - Controller - odl-mappingservice - authentication-key","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key"}},"application/json":{"schema":{"properties":{"authentication-key":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key","type":"object"}}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/virtual-network-identifier={vni}/authentication-key={eid-uri}/mapping-authkey":{"put":{"description":"","summary":"PUT - odl-mappingservice - Controller - mapping-authkey","requestBody":{"description":"mapping-authkey","content":{"application/json":{"schema":{"properties":{"odl-mappingservice:mapping-authkey":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_mapping-authkey","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_mapping-authkey"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - odl-mappingservice - Controller - mapping-authkey","requestBody":{"description":"mapping-authkey","content":{"application/yang-data+json":{"schema":{"properties":{"odl-mappingservice:mapping-authkey":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_mapping-authkey","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_mapping-authkey"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - odl-mappingservice - mapping-authkey","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - odl-mappingservice - mapping-authkey","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_mapping-authkey"}},"application/json":{"schema":{"properties":{"mapping-authkey":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_mapping-authkey","type":"object"}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/virtual-network-identifier={vni}/authentication-key={eid-uri}/eid":{"put":{"description":"","summary":"PUT - odl-mappingservice - Controller - eid","requestBody":{"description":"eid","content":{"application/json":{"schema":{"properties":{"odl-mappingservice:eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_eid","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_eid"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - odl-mappingservice - Controller - eid","requestBody":{"description":"eid","content":{"application/yang-data+json":{"schema":{"properties":{"odl-mappingservice:eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_eid","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_eid"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - odl-mappingservice - eid","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - odl-mappingservice - eid","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_eid"}},"application/json":{"schema":{"properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_eid","type":"object"}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"vni","in":"path","required":true,"schema":{"type":"string"},"description":"The 24-bit Virtual Network Identifier"},{"name":"eid-uri","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mappingservice:mapping-database/last-updated":{"get":{"description":"","summary":"GET - Controller - odl-mappingservice - last-updated","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_last-updated"}},"application/json":{"schema":{"properties":{"last-updated":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_last-updated","type":"object"}}}}}}},"tags":["Controller odl-mappingservice"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mdsal-lowlevel-common:rpc-context={identifier}":{"get":{"description":"Routed RPCs need to be registered with a path.\nIt has to be an instance-identifier within an accessible model,\nbut the instance does not have to be present in data tree.\nThis is config false to signal users they do not need to create any instance.","summary":"GET - Controller - odl-mdsal-lowlevel-common - rpc-context","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-common_rpc-context"}},"application/json":{"schema":{"properties":{"rpc-context":{"type":"array","items":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-common_rpc-context","type":"object"}}}}}}}},"tags":["Controller odl-mdsal-lowlevel-common"],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"Users are free to refer to arbitrary strings\nif they are testing RPC regstrations to different paths."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/odl-mdsal-lowlevel-control:register-constant":{"post":{"description":"Upon receiving this, the member has to create llt:get-constant\nimplementation (global RPC). If the registration fails for any reason,\npropagate the corresponding error.","summary":"POST - Controller - odl-mdsal-lowlevel-control - register-constant","requestBody":{"description":"register-constant_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_register-constant_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_register-constant_input"}}}},"responses":{"204":{"description":"RPC register-constant success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:unregister-constant":{"post":{"description":"Upon receiving this, the member has to unregister\nany llt:get-constant implementations it has registered.\nIf no implementation has been registered, do nothing.","summary":"POST - Controller - odl-mdsal-lowlevel-control - unregister-constant","requestBody":{"description":"unregister-constant_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"},"type":"object"}}}},"responses":{"204":{"description":"RPC unregister-constant success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant":{"post":{"description":"Upon receiving this, the member has to create and register\na bound llt:get-contexted-constant implementation (routed RPC).\nIf the registration fails for any reason, propagate the corresponding error.","summary":"POST - Controller - odl-mdsal-lowlevel-control - register-bound-constant","requestBody":{"description":"register-bound-constant_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_register-bound-constant_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_register-bound-constant_input"}}}},"responses":{"204":{"description":"RPC register-bound-constant success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant":{"post":{"description":"Upon receiving this, the member has to unregister\nany llt:get-contexted-constant implementations bound to the context.\nIf no bound implementation for the context has been registered, do nothing.","summary":"POST - Controller - odl-mdsal-lowlevel-control - unregister-bound-constant","requestBody":{"description":"unregister-bound-constant_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_unregister-bound-constant_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_unregister-bound-constant_input"}}}},"responses":{"204":{"description":"RPC unregister-bound-constant success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant":{"post":{"description":"Upon receiving this, the member checks whether it has already registered\na singleton application, and fails if yes. If no, the member creates\nan application implementation based on the given constant\nand registers the implementation as a singleton application.\nIf the registration fails for any reason, propagate the corresponding error.\nIf the application is instantiated, it creates and registers\na llt:get-singleton-constant implementation, which returns the given costant.\nWhen the application instance is closed, it unregisters that\nllt:get-singleton-constant implementation.","summary":"POST - Controller - odl-mdsal-lowlevel-control - register-singleton-constant","requestBody":{"description":"register-singleton-constant_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_register-singleton-constant_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_register-singleton-constant_input"}}}},"responses":{"204":{"description":"RPC register-singleton-constant success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant":{"post":{"description":"Upon receiving this, the member checks whether it has currently registered\na singleton application, and fails if no. If yes, the member shall unregister\nthe application, presumably causing application instantiation on other member,\nand closing of the local application instance (unregistering llt:get-singleton-constant).\nIf the unregistration fails for any reason, propagate the corresponding error.","summary":"POST - Controller - odl-mdsal-lowlevel-control - unregister-singleton-constant","requestBody":{"description":"unregister-singleton-constant_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"},"type":"object"}}}},"responses":{"204":{"description":"RPC unregister-singleton-constant success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton":{"post":{"description":"Upon receiving this, the member checks whether it has already created\na 'flapping' application implementation and 'active' flag is set, and fails if yes.\nIf no, the member (creates a flapping application implementation,)\nsets the active flag, initializes local variable flap-count to 0,\nand registers the implementation as a singleton application.\nIf the registration fails for any reason, propagate the corresponding error.\nIf the application is instantiated, it immediatelly un-registers itself.\nWhen the application instance is closed, it increments flap-count\nand if active flag is set, re-registers the application implementation as a singleton.\nIf either un-registration or re-registration fails, 'active' flag is unset,\nflap-count is set to negative of its previous value (minus one in case of un-registration)\nto signal a failure has happened.","summary":"POST - Controller - odl-mdsal-lowlevel-control - register-flapping-singleton","requestBody":{"description":"register-flapping-singleton_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"},"type":"object"}}}},"responses":{"204":{"description":"RPC register-flapping-singleton success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton":{"post":{"description":"Upon receiving this, the member checks whether it has created\na flapping application, and fails if no. If yes, the member shall\nset the active flag to false and return the current flap-count value.","summary":"POST - Controller - odl-mdsal-lowlevel-control - unregister-flapping-singleton","requestBody":{"description":"unregister-flapping-singleton_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"},"type":"object"}}}},"responses":{"200":{"description":"RPC unregister-flapping-singleton success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_unregister-flapping-singleton_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_unregister-flapping-singleton_output"}}}}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:start-publish-notifications":{"post":{"description":"Upon receiving this, the member checks whether it is already in the middle of publishing,\nfor this id, and fails if yes. If no, the member shall clear any state tracking data possibly present\nfrom the previous call wth this id, and start publishing llt:id-sequence\nnotifications with the given id and sequence numbers increasing from 1.\nThe RPC shall return immediatelly before the first notification is published.\nThe publishing task stops on first error of after the given time.","summary":"POST - Controller - odl-mdsal-lowlevel-control - start-publish-notifications","requestBody":{"description":"start-publish-notifications_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_start-publish-notifications_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_start-publish-notifications_input"}}}},"responses":{"204":{"description":"RPC start-publish-notifications success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:check-publish-notifications":{"post":{"description":"Upon receiving this, the member shall immediatelly return\nthe current tracking data related to the current (or previous) task\nstarted by start-publish-notifications with this id.","summary":"POST - Controller - odl-mdsal-lowlevel-control - check-publish-notifications","requestBody":{"description":"check-publish-notifications_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_check-publish-notifications_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_check-publish-notifications_input"}}}},"responses":{"200":{"description":"RPC check-publish-notifications success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_check-publish-notifications_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_check-publish-notifications_output"}}}}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:subscribe-ynl":{"post":{"description":"Upon receiving this, the member checks whether it has already subscribed\na yang listener for the given id, and fails if yes.\nIf no, the member subscribes a Yang notification listener to listen for\nllt:id-sequence notifications. The member also creates a local variable\n(called local-number) for the sequence number and initialize that to 0.\nAlso three local counters are initialized to 0: all-not, id-not, err-not.\nUpon receiving any id-sequence notification, all-not is incremented.\nEach id-sequence notification of matching id shall increment id-not.\nIf local-number was one less than the sequence number (from a notification matching id),\nincrement local-number, else increment err-not.","summary":"POST - Controller - odl-mdsal-lowlevel-control - subscribe-ynl","requestBody":{"description":"subscribe-ynl_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_subscribe-ynl_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_subscribe-ynl_input"}}}},"responses":{"204":{"description":"RPC subscribe-ynl success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:unsubscribe-ynl":{"post":{"description":"Upon receiving this, the member checks whether it has currently subscribed\na yang listener for the given id, and fails if no. If yes, the member\nshall unsubscribe the listener and return values of the local variables.","summary":"POST - Controller - odl-mdsal-lowlevel-control - unsubscribe-ynl","requestBody":{"description":"unsubscribe-ynl_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_unsubscribe-ynl_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_unsubscribe-ynl_input"}}}},"responses":{"200":{"description":"RPC unsubscribe-ynl success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_unsubscribe-ynl_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_unsubscribe-ynl_output"}}}}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:write-transactions":{"post":{"description":"Upon receiving this, the member shall make sure the outer list item\nof llt:id-ints exists for the given id, and then start creating (one by one)\nand submitting transactions to randomly add or delete items on the inner list for that id.\nThe randomness should avoid creating conflicting writes (at least for non-chained\ntransactions). The recommended way is to require the random number\nhas low significant bits different than the past ~100k numbers.\nTo ensure balanced number of deletes, the first write can create\na random set of numbers. Other writes shall be one per number.\nThe writes shall use the old API, transaction (chains) created directly on datastore\n(as opposed to DOMDataTreeProducer).\n.get with a timeout on currently earliest non-complete Future (from .submit)\nshall be used as the primary wait method to throttle the submission rate.\nThis RPC shall not return until all transactions are confirmed successful,\nor an exception is raised (the exception should propagate to restconf response).\nOptimisticLockException is always considered an error.","summary":"POST - Controller - odl-mdsal-lowlevel-control - write-transactions","requestBody":{"description":"write-transactions_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_write-transactions_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_write-transactions_input"}}}},"responses":{"200":{"description":"RPC write-transactions success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_write-transactions_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_write-transactions_output"}}}}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:remove-shard-replica":{"post":{"description":"A specialised copy of cluster-admin:remove-shard-replica.\n\nFIXME: Is this really needed for prefix shards, or even module shards\n(or is the cluster-admin RPC sufficient)?","summary":"POST - Controller - odl-mdsal-lowlevel-control - remove-shard-replica","requestBody":{"description":"remove-shard-replica_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_remove-shard-replica_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_remove-shard-replica_input"}}}},"responses":{"204":{"description":"RPC remove-shard-replica success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:add-shard-replica":{"post":{"description":"A specialised copy of cluster-admin:add-shard-replica.\n\nFIXME: Is this really needed for prefix shards, or even module shards\n(or is the cluster-admin RPC sufficient)?","summary":"POST - Controller - odl-mdsal-lowlevel-control - add-shard-replica","requestBody":{"description":"add-shard-replica_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_add-shard-replica_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_add-shard-replica_input"}}}},"responses":{"204":{"description":"RPC add-shard-replica success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:is-client-aborted":{"post":{"description":"Return state of cds-access-client.\n\nFIXME: Is an input needed?","summary":"POST - Controller - odl-mdsal-lowlevel-control - is-client-aborted","requestBody":{"description":"is-client-aborted_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"},"type":"object"}}}},"responses":{"200":{"description":"RPC is-client-aborted success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_is-client-aborted_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_is-client-aborted_output"}}}}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:subscribe-dtcl":{"post":{"description":"Upon receiving this, the member checks whether it has already subscribed\nand fails if yes. If no, the member subscribes a Data Tree Change Listener\nto listen for changes on whole llt:id-ints. The first notification received is stored immediately.\nEvery notification received after the first one has the data(getDataBefore()) compared with the\nlast stored notification(called local copy), if they match the local copy is overwritten with\nthis notifications data(getDataAfter()). If they don't match the new notification is ignored.","summary":"POST - Controller - odl-mdsal-lowlevel-control - subscribe-dtcl","requestBody":{"description":"subscribe-dtcl_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"},"type":"object"}}}},"responses":{"204":{"description":"RPC subscribe-dtcl success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:unsubscribe-dtcl":{"post":{"description":"Upon receiving this, the member checks whether it has currently subscribed\na Data Tree Change Listener for llt:id-ints changes, and fails if no. If yes, the member\nshall unsubscribe the listener, read state of id-ints, compare that\nto the local copy, and return whether the local copy is the same.","summary":"POST - Controller - odl-mdsal-lowlevel-control - unsubscribe-dtcl","requestBody":{"description":"unsubscribe-dtcl_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"},"type":"object"}}}},"responses":{"200":{"description":"RPC unsubscribe-dtcl success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_unsubscribe-dtcl_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_unsubscribe-dtcl_output"}}}}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:subscribe-ddtl":{"post":{"description":"Upon receiving this, the member checks whether it has already subscribed\nand fails if yes. If no, the member subscribes a DOMDataTreeListener\nto listen for changes on whole llt:id-ints, and stores\nthe state from the initial notification to a local variable (called the local copy).\nEach Data Tree Change from further notifications shall be applied\nto the local copy if it is compatible\n(the old state from notification is equal to the local copy state).\nIf a notification is not compatible, it shall be ignored.","summary":"POST - Controller - odl-mdsal-lowlevel-control - subscribe-ddtl","requestBody":{"description":"subscribe-ddtl_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"},"type":"object"}}}},"responses":{"204":{"description":"RPC subscribe-ddtl success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:unsubscribe-ddtl":{"post":{"description":"Upon receiving this, the member checks whether it has currently subscribed\na DOMDataTreeListener for llt:id-ints changes, and fails if no. If yes, the member\nshall unsubscribe the listener, read state of id-ints (by briefly subscribing\nand ubsubscribing again), compare that to the local copy,\nand return whether the local copy is the same.","summary":"POST - Controller - odl-mdsal-lowlevel-control - unsubscribe-ddtl","requestBody":{"description":"unsubscribe-ddtl_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"},"type":"object"}}}},"responses":{"200":{"description":"RPC unsubscribe-ddtl success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_unsubscribe-ddtl_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_unsubscribe-ddtl_output"}}}}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:register-default-constant":{"post":{"description":"Upon receiving this, the member has to create and register\na default llt:get-contexted-constant implementation (routed RPC).\nIf the registration fails for any reason, propagate the corresponding error.","summary":"POST - Controller - odl-mdsal-lowlevel-control - register-default-constant","requestBody":{"description":"register-default-constant_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_register-default-constant_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_register-default-constant_input"}}}},"responses":{"204":{"description":"RPC register-default-constant success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:unregister-default-constant":{"post":{"description":"Upon receiving this, the member has to unregister\nany llt:get-contexted-constant default implementations it has registered.\nIf no default implementation has been registered, do nothing.","summary":"POST - Controller - odl-mdsal-lowlevel-control - unregister-default-constant","requestBody":{"description":"unregister-default-constant_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"},"type":"object"}}}},"responses":{"204":{"description":"RPC unregister-default-constant success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-control:shutdown-shard-replica":{"post":{"description":"Upon receiving this, the member will try to gracefully shutdown local configuration\ndata store module-based shard replica.","summary":"POST - Controller - odl-mdsal-lowlevel-control - shutdown-shard-replica","requestBody":{"description":"shutdown-shard-replica_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_shutdown-shard-replica_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-control_shutdown-shard-replica_input"}}}},"responses":{"204":{"description":"RPC shutdown-shard-replica success"}},"tags":["Controller odl-mdsal-lowlevel-control"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-target:get-constant":{"post":{"description":"Return the constant string provided by the previously registered implementation.\nPropagate appropriate error if no, unreachable, or failing implementation is found.","summary":"POST - Controller - odl-mdsal-lowlevel-target - get-constant","requestBody":{"description":"get-constant_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target"},"type":"object"}}}},"responses":{"200":{"description":"RPC get-constant success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_get-constant_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_get-constant_output"}}}}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant":{"post":{"description":"Return the constant corresponding to a registered implementation (either bound or default).\nPropagate appropriate error if no, unreachable, or failing implementation is found.","summary":"POST - Controller - odl-mdsal-lowlevel-target - get-contexted-constant","requestBody":{"description":"get-contexted-constant_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_get-contexted-constant_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_get-contexted-constant_input"}}}},"responses":{"200":{"description":"RPC get-contexted-constant success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_get-contexted-constant_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_get-contexted-constant_output"}}}}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[]}},"/rests/operations/odl-mdsal-lowlevel-target:get-singleton-constant":{"post":{"description":"Return the constant string provided by the previously registered implementation.\nPropagate appropriate error if no, unreachable, or failing implementation is found.\nThis is basically the same as get-constant, but it can have a different\nimplementation registered, thus allowing to track both implementations in longevity jobs.","summary":"POST - Controller - odl-mdsal-lowlevel-target - get-singleton-constant","requestBody":{"description":"get-singleton-constant_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target"},"type":"object"}}}},"responses":{"200":{"description":"RPC get-singleton-constant success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_get-singleton-constant_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_get-singleton-constant_output"}}}}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[]}},"/rests/data/odl-mdsal-lowlevel-target:id-ints":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - odl-mdsal-lowlevel-target - id-ints","requestBody":{"description":"id-int","content":{"application/json":{"schema":{"properties":{"id-int":{"type":"array","items":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[]},"put":{"description":"","summary":"PUT - odl-mdsal-lowlevel-target - Controller - id-ints","requestBody":{"description":"id-ints","content":{"application/json":{"schema":{"properties":{"odl-mdsal-lowlevel-target:id-ints":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[]},"patch":{"description":"","summary":"PATCH - odl-mdsal-lowlevel-target - Controller - id-ints","requestBody":{"description":"id-ints","content":{"application/yang-data+json":{"schema":{"properties":{"odl-mdsal-lowlevel-target:id-ints":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - odl-mdsal-lowlevel-target - id-ints","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - odl-mdsal-lowlevel-target - id-ints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints"}},"application/json":{"schema":{"properties":{"id-ints":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints","type":"object"}}}}}}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mdsal-lowlevel-target:id-ints/id-int={id}":{"put":{"description":"A list of integers nested in list of ids.\nIds are there to avoid OptimisticLockFailures from different writers.\nTypical use of the int list is to generate data change notifications.\nConfig is true, in order to allow Restconf to reset content at will.\nExpected writes should create and delete items at random, values 0 .. 2^20.","summary":"PUT - odl-mdsal-lowlevel-target - Controller - id-int","requestBody":{"description":"id-int","content":{"application/json":{"schema":{"properties":{"odl-mdsal-lowlevel-target:id-int":{"type":"array","items":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Any string uniquely identifying the publisher, producer or writer,\ntypically containing the member name."}]},"patch":{"description":"A list of integers nested in list of ids.\nIds are there to avoid OptimisticLockFailures from different writers.\nTypical use of the int list is to generate data change notifications.\nConfig is true, in order to allow Restconf to reset content at will.\nExpected writes should create and delete items at random, values 0 .. 2^20.","summary":"PATCH - odl-mdsal-lowlevel-target - Controller - id-int","requestBody":{"description":"id-int","content":{"application/yang-data+json":{"schema":{"properties":{"odl-mdsal-lowlevel-target:id-int":{"type":"array","items":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Any string uniquely identifying the publisher, producer or writer,\ntypically containing the member name."}]},"delete":{"description":"A list of integers nested in list of ids.\nIds are there to avoid OptimisticLockFailures from different writers.\nTypical use of the int list is to generate data change notifications.\nConfig is true, in order to allow Restconf to reset content at will.\nExpected writes should create and delete items at random, values 0 .. 2^20.","summary":"DELETE - Controller - odl-mdsal-lowlevel-target - id-int","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Any string uniquely identifying the publisher, producer or writer,\ntypically containing the member name."}]},"get":{"description":"A list of integers nested in list of ids.\nIds are there to avoid OptimisticLockFailures from different writers.\nTypical use of the int list is to generate data change notifications.\nConfig is true, in order to allow Restconf to reset content at will.\nExpected writes should create and delete items at random, values 0 .. 2^20.","summary":"GET - Controller - odl-mdsal-lowlevel-target - id-int","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int"}},"application/json":{"schema":{"properties":{"id-int":{"type":"array","items":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int","type":"object"}}}}}}}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Any string uniquely identifying the publisher, producer or writer,\ntypically containing the member name."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-mdsal-lowlevel-target:id-ints/id-int={id}/item={number}":{"put":{"description":"Unsorted keyed list item. One write should create or delete up to one item.","summary":"PUT - odl-mdsal-lowlevel-target - Controller - item","requestBody":{"description":"item","content":{"application/json":{"schema":{"properties":{"odl-mdsal-lowlevel-target:item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int_item","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int_item"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Any string uniquely identifying the publisher, producer or writer,\ntypically containing the member name."},{"name":"number","in":"path","required":true,"schema":{"type":"integer"},"description":"The integer value of this item.\nNot range restricted, to allow more scenarios."}]},"patch":{"description":"Unsorted keyed list item. One write should create or delete up to one item.","summary":"PATCH - odl-mdsal-lowlevel-target - Controller - item","requestBody":{"description":"item","content":{"application/yang-data+json":{"schema":{"properties":{"odl-mdsal-lowlevel-target:item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int_item","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int_item"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Any string uniquely identifying the publisher, producer or writer,\ntypically containing the member name."},{"name":"number","in":"path","required":true,"schema":{"type":"integer"},"description":"The integer value of this item.\nNot range restricted, to allow more scenarios."}]},"delete":{"description":"Unsorted keyed list item. One write should create or delete up to one item.","summary":"DELETE - Controller - odl-mdsal-lowlevel-target - item","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Any string uniquely identifying the publisher, producer or writer,\ntypically containing the member name."},{"name":"number","in":"path","required":true,"schema":{"type":"integer"},"description":"The integer value of this item.\nNot range restricted, to allow more scenarios."}]},"get":{"description":"Unsorted keyed list item. One write should create or delete up to one item.","summary":"GET - Controller - odl-mdsal-lowlevel-target - item","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int_item"}},"application/json":{"schema":{"properties":{"item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int_item","type":"object"}}}}}}}},"tags":["Controller odl-mdsal-lowlevel-target"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Any string uniquely identifying the publisher, producer or writer,\ntypically containing the member name."},{"name":"number","in":"path","required":true,"schema":{"type":"integer"},"description":"The integer value of this item.\nNot range restricted, to allow more scenarios."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-serviceutils-upgrade:upgrade-config":{"put":{"description":"","summary":"PUT - odl-serviceutils-upgrade - Controller - upgrade-config","requestBody":{"description":"upgrade-config","content":{"application/json":{"schema":{"properties":{"odl-serviceutils-upgrade:upgrade-config":{"$ref":"#/components/schemas/odl-serviceutils-upgrade_upgrade-config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-serviceutils-upgrade_upgrade-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller odl-serviceutils-upgrade"],"parameters":[]},"patch":{"description":"","summary":"PATCH - odl-serviceutils-upgrade - Controller - upgrade-config","requestBody":{"description":"upgrade-config","content":{"application/yang-data+json":{"schema":{"properties":{"odl-serviceutils-upgrade:upgrade-config":{"$ref":"#/components/schemas/odl-serviceutils-upgrade_upgrade-config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/odl-serviceutils-upgrade_upgrade-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller odl-serviceutils-upgrade"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - odl-serviceutils-upgrade - upgrade-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller odl-serviceutils-upgrade"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - odl-serviceutils-upgrade - upgrade-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-serviceutils-upgrade_upgrade-config"}},"application/json":{"schema":{"properties":{"upgrade-config":{"$ref":"#/components/schemas/odl-serviceutils-upgrade_upgrade-config","type":"object"}}}}}}},"tags":["Controller odl-serviceutils-upgrade"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-srm-ops:service-ops":{"get":{"description":"","summary":"GET - Controller - odl-srm-ops - service-ops","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-srm-ops_service-ops"}},"application/json":{"schema":{"properties":{"service-ops":{"$ref":"#/components/schemas/odl-srm-ops_service-ops","type":"object"}}}}}}},"tags":["Controller odl-srm-ops"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-srm-ops:service-ops/services={service-name}":{"get":{"description":"","summary":"GET - Controller - odl-srm-ops - services","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-srm-ops_service-ops_services"}},"application/json":{"schema":{"properties":{"services":{"type":"array","items":{"$ref":"#/components/schemas/odl-srm-ops_service-ops_services","type":"object"}}}}}}}},"tags":["Controller odl-srm-ops"],"parameters":[{"name":"service-name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/odl-srm-ops:service-ops/services={service-name}/operations={entity-name}":{"get":{"description":"","summary":"GET - Controller - odl-srm-ops - operations","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/odl-srm-ops_service-ops_services_operations"}},"application/json":{"schema":{"properties":{"operations":{"type":"array","items":{"$ref":"#/components/schemas/odl-srm-ops_service-ops_services_operations","type":"object"}}}}}}}},"tags":["Controller odl-srm-ops"],"parameters":[{"name":"service-name","in":"path","required":true,"schema":{"type":"string"}},{"name":"entity-name","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/odl-srm-rpcs:reinstall":{"post":{"description":"Reinstall a given service","summary":"POST - Controller - odl-srm-rpcs - reinstall","requestBody":{"description":"reinstall_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-srm-rpcs_reinstall_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-srm-rpcs_reinstall_input"}}}},"responses":{"200":{"description":"RPC reinstall success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-srm-rpcs_reinstall_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-srm-rpcs_reinstall_output"}}}}},"tags":["Controller odl-srm-rpcs"],"parameters":[]}},"/rests/operations/odl-srm-rpcs:recover":{"post":{"description":"Recover a given service or instance","summary":"POST - Controller - odl-srm-rpcs - recover","requestBody":{"description":"recover_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/odl-srm-rpcs_recover_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-srm-rpcs_recover_input"}}}},"responses":{"200":{"description":"RPC recover success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/odl-srm-rpcs_recover_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/odl-srm-rpcs_recover_output"}}}}},"tags":["Controller odl-srm-rpcs"],"parameters":[]}},"/rests/data/openconfig-bgp:bgp":{"post":{"description":"Top-level configuration and state for the BGP router\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - bgp","requestBody":{"description":"global","content":{"application/json":{"schema":{"properties":{"global":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"put":{"description":"Top-level configuration and state for the BGP router","summary":"PUT - openconfig-bgp - Controller - bgp","requestBody":{"description":"bgp","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:bgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Top-level configuration and state for the BGP router","summary":"PATCH - openconfig-bgp - Controller - bgp","requestBody":{"description":"bgp","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:bgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Top-level configuration and state for the BGP router","summary":"DELETE - Controller - openconfig-bgp - bgp","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Top-level configuration and state for the BGP router","summary":"GET - Controller - openconfig-bgp - bgp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp"}},"application/json":{"schema":{"properties":{"bgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global":{"post":{"description":"Global configuration for the BGP router\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - global","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"put":{"description":"Global configuration for the BGP router","summary":"PUT - openconfig-bgp - Controller - global","requestBody":{"description":"global","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:global":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Global configuration for the BGP router","summary":"PATCH - openconfig-bgp - Controller - global","requestBody":{"description":"global","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:global":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Global configuration for the BGP router","summary":"DELETE - Controller - openconfig-bgp - global","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Global configuration for the BGP router","summary":"GET - Controller - openconfig-bgp - global","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global"}},"application/json":{"schema":{"properties":{"global":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/apply-policy":{"post":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - apply-policy","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"put":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PUT - openconfig-bgp - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PATCH - openconfig-bgp - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"DELETE - Controller - openconfig-bgp - apply-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"GET - Controller - openconfig-bgp - apply-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy"}},"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/apply-policy/config":{"put":{"description":"Policy configuration data.","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Policy configuration data.","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Policy configuration data.","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Policy configuration data.","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/apply-policy/state":{"get":{"description":"Operational state for routing policy","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/config":{"put":{"description":"Configuration parameters relating to the global BGP router","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Configuration parameters relating to the global BGP router","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Configuration parameters relating to the global BGP router","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Configuration parameters relating to the global BGP router","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/state":{"get":{"description":"State information relating to the global BGP router","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/default-route-distance":{"post":{"description":"Administrative distance (or preference) assigned to\nroutes received from different sources\n(external, internal, and local).\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - default-route-distance","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"put":{"description":"Administrative distance (or preference) assigned to\nroutes received from different sources\n(external, internal, and local).","summary":"PUT - openconfig-bgp - Controller - default-route-distance","requestBody":{"description":"default-route-distance","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:default-route-distance":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Administrative distance (or preference) assigned to\nroutes received from different sources\n(external, internal, and local).","summary":"PATCH - openconfig-bgp - Controller - default-route-distance","requestBody":{"description":"default-route-distance","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:default-route-distance":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Administrative distance (or preference) assigned to\nroutes received from different sources\n(external, internal, and local).","summary":"DELETE - Controller - openconfig-bgp - default-route-distance","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Administrative distance (or preference) assigned to\nroutes received from different sources\n(external, internal, and local).","summary":"GET - Controller - openconfig-bgp - default-route-distance","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance"}},"application/json":{"schema":{"properties":{"default-route-distance":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/default-route-distance/config":{"put":{"description":"Configuration parameters relating to the default route\ndistance","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Configuration parameters relating to the default route\ndistance","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Configuration parameters relating to the default route\ndistance","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Configuration parameters relating to the default route\ndistance","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/default-route-distance/state":{"get":{"description":"State information relating to the default route distance","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/confederation":{"post":{"description":"Parameters indicating whether the local system acts as part\nof a BGP confederation\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - confederation","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"put":{"description":"Parameters indicating whether the local system acts as part\nof a BGP confederation","summary":"PUT - openconfig-bgp - Controller - confederation","requestBody":{"description":"confederation","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:confederation":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Parameters indicating whether the local system acts as part\nof a BGP confederation","summary":"PATCH - openconfig-bgp - Controller - confederation","requestBody":{"description":"confederation","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:confederation":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Parameters indicating whether the local system acts as part\nof a BGP confederation","summary":"DELETE - Controller - openconfig-bgp - confederation","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Parameters indicating whether the local system acts as part\nof a BGP confederation","summary":"GET - Controller - openconfig-bgp - confederation","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation"}},"application/json":{"schema":{"properties":{"confederation":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/confederation/config":{"put":{"description":"Configuration parameters relating to BGP confederations","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Configuration parameters relating to BGP confederations","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Configuration parameters relating to BGP confederations","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Configuration parameters relating to BGP confederations","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/confederation/state":{"get":{"description":"State information relating to the BGP confederations","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis":{"post":{"description":"Address family specific configuration\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - afi-safis","requestBody":{"description":"afi-safi","content":{"application/json":{"schema":{"properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"put":{"description":"Address family specific configuration","summary":"PUT - openconfig-bgp - Controller - afi-safis","requestBody":{"description":"afi-safis","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:afi-safis":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Address family specific configuration","summary":"PATCH - openconfig-bgp - Controller - afi-safis","requestBody":{"description":"afi-safis","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:afi-safis":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Address family specific configuration","summary":"DELETE - Controller - openconfig-bgp - afi-safis","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Address family specific configuration","summary":"GET - Controller - openconfig-bgp - afi-safis","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis"}},"application/json":{"schema":{"properties":{"afi-safis":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}":{"put":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"PUT - openconfig-bgp - Controller - afi-safi","requestBody":{"description":"afi-safi","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"PATCH - openconfig-bgp - Controller - afi-safi","requestBody":{"description":"afi-safi","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"DELETE - Controller - openconfig-bgp - afi-safi","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"GET - Controller - openconfig-bgp - afi-safi","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi"}},"application/json":{"schema":{"properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi","type":"object"}}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/graceful-restart":{"post":{"description":"Parameters relating to BGP graceful-restart\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - graceful-restart","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Parameters relating to BGP graceful-restart","summary":"PUT - openconfig-bgp - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Parameters relating to BGP graceful-restart","summary":"PATCH - openconfig-bgp - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Parameters relating to BGP graceful-restart","summary":"DELETE - Controller - openconfig-bgp - graceful-restart","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Parameters relating to BGP graceful-restart","summary":"GET - Controller - openconfig-bgp - graceful-restart","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart"}},"application/json":{"schema":{"properties":{"graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/graceful-restart/config":{"put":{"description":"Configuration options for BGP graceful-restart","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration options for BGP graceful-restart","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration options for BGP graceful-restart","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration options for BGP graceful-restart","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/graceful-restart/state":{"get":{"description":"State information for BGP graceful-restart","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/config":{"put":{"description":"Configuration parameters for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/state":{"get":{"description":"State information relating to the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/apply-policy":{"post":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - apply-policy","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PUT - openconfig-bgp - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PATCH - openconfig-bgp - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"DELETE - Controller - openconfig-bgp - apply-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"GET - Controller - openconfig-bgp - apply-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy"}},"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/apply-policy/config":{"put":{"description":"Policy configuration data.","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Policy configuration data.","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Policy configuration data.","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Policy configuration data.","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/apply-policy/state":{"get":{"description":"Operational state for routing policy","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast":{"post":{"description":"IPv4 unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ipv4-unicast","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv4 unicast configuration options","summary":"PUT - openconfig-bgp - Controller - ipv4-unicast","requestBody":{"description":"ipv4-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv4 unicast configuration options","summary":"PATCH - openconfig-bgp - Controller - ipv4-unicast","requestBody":{"description":"ipv4-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv4 unicast configuration options","summary":"DELETE - Controller - openconfig-bgp - ipv4-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv4 unicast configuration options","summary":"GET - Controller - openconfig-bgp - ipv4-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast"}},"application/json":{"schema":{"properties":{"ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/config":{"put":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/state":{"get":{"description":"State information for common IPv4 and IPv6 unicast\nparameters","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast":{"post":{"description":"IPv6 unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ipv6-unicast","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv6 unicast configuration options","summary":"PUT - openconfig-bgp - Controller - ipv6-unicast","requestBody":{"description":"ipv6-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv6 unicast configuration options","summary":"PATCH - openconfig-bgp - Controller - ipv6-unicast","requestBody":{"description":"ipv6-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv6 unicast configuration options","summary":"DELETE - Controller - openconfig-bgp - ipv6-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv6 unicast configuration options","summary":"GET - Controller - openconfig-bgp - ipv6-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast"}},"application/json":{"schema":{"properties":{"ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/config":{"put":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/state":{"get":{"description":"State information for common IPv4 and IPv6 unicast\nparameters","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast":{"post":{"description":"IPv4 Labelled Unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ipv4-labelled-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv4 Labelled Unicast configuration options","summary":"PUT - openconfig-bgp - Controller - ipv4-labelled-unicast","requestBody":{"description":"ipv4-labelled-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv4 Labelled Unicast configuration options","summary":"PATCH - openconfig-bgp - Controller - ipv4-labelled-unicast","requestBody":{"description":"ipv4-labelled-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv4 Labelled Unicast configuration options","summary":"DELETE - Controller - openconfig-bgp - ipv4-labelled-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv4 Labelled Unicast configuration options","summary":"GET - Controller - openconfig-bgp - ipv4-labelled-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast"}},"application/json":{"schema":{"properties":{"ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast":{"post":{"description":"IPv6 Labelled Unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ipv6-labelled-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv6 Labelled Unicast configuration options","summary":"PUT - openconfig-bgp - Controller - ipv6-labelled-unicast","requestBody":{"description":"ipv6-labelled-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv6 Labelled Unicast configuration options","summary":"PATCH - openconfig-bgp - Controller - ipv6-labelled-unicast","requestBody":{"description":"ipv6-labelled-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv6 Labelled Unicast configuration options","summary":"DELETE - Controller - openconfig-bgp - ipv6-labelled-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv6 Labelled Unicast configuration options","summary":"GET - Controller - openconfig-bgp - ipv6-labelled-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast"}},"application/json":{"schema":{"properties":{"ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast":{"post":{"description":"Unicast IPv4 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l3vpn-ipv4-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Unicast IPv4 L3VPN configuration options","summary":"PUT - openconfig-bgp - Controller - l3vpn-ipv4-unicast","requestBody":{"description":"l3vpn-ipv4-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Unicast IPv4 L3VPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l3vpn-ipv4-unicast","requestBody":{"description":"l3vpn-ipv4-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Unicast IPv4 L3VPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l3vpn-ipv4-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Unicast IPv4 L3VPN configuration options","summary":"GET - Controller - openconfig-bgp - l3vpn-ipv4-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast":{"post":{"description":"Unicast IPv6 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l3vpn-ipv6-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Unicast IPv6 L3VPN configuration options","summary":"PUT - openconfig-bgp - Controller - l3vpn-ipv6-unicast","requestBody":{"description":"l3vpn-ipv6-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Unicast IPv6 L3VPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l3vpn-ipv6-unicast","requestBody":{"description":"l3vpn-ipv6-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Unicast IPv6 L3VPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l3vpn-ipv6-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Unicast IPv6 L3VPN configuration options","summary":"GET - Controller - openconfig-bgp - l3vpn-ipv6-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast":{"post":{"description":"Multicast IPv4 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l3vpn-ipv4-multicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multicast IPv4 L3VPN configuration options","summary":"PUT - openconfig-bgp - Controller - l3vpn-ipv4-multicast","requestBody":{"description":"l3vpn-ipv4-multicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multicast IPv4 L3VPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l3vpn-ipv4-multicast","requestBody":{"description":"l3vpn-ipv4-multicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multicast IPv4 L3VPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l3vpn-ipv4-multicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multicast IPv4 L3VPN configuration options","summary":"GET - Controller - openconfig-bgp - l3vpn-ipv4-multicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast":{"post":{"description":"Multicast IPv6 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l3vpn-ipv6-multicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multicast IPv6 L3VPN configuration options","summary":"PUT - openconfig-bgp - Controller - l3vpn-ipv6-multicast","requestBody":{"description":"l3vpn-ipv6-multicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multicast IPv6 L3VPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l3vpn-ipv6-multicast","requestBody":{"description":"l3vpn-ipv6-multicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multicast IPv6 L3VPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l3vpn-ipv6-multicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multicast IPv6 L3VPN configuration options","summary":"GET - Controller - openconfig-bgp - l3vpn-ipv6-multicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls":{"post":{"description":"BGP-signalled VPLS configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l2vpn-vpls","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"BGP-signalled VPLS configuration options","summary":"PUT - openconfig-bgp - Controller - l2vpn-vpls","requestBody":{"description":"l2vpn-vpls","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"BGP-signalled VPLS configuration options","summary":"PATCH - openconfig-bgp - Controller - l2vpn-vpls","requestBody":{"description":"l2vpn-vpls","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"BGP-signalled VPLS configuration options","summary":"DELETE - Controller - openconfig-bgp - l2vpn-vpls","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"BGP-signalled VPLS configuration options","summary":"GET - Controller - openconfig-bgp - l2vpn-vpls","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls"}},"application/json":{"schema":{"properties":{"l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn":{"post":{"description":"BGP EVPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l2vpn-evpn","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"BGP EVPN configuration options","summary":"PUT - openconfig-bgp - Controller - l2vpn-evpn","requestBody":{"description":"l2vpn-evpn","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"BGP EVPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l2vpn-evpn","requestBody":{"description":"l2vpn-evpn","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"BGP EVPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l2vpn-evpn","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"BGP EVPN configuration options","summary":"GET - Controller - openconfig-bgp - l2vpn-evpn","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn"}},"application/json":{"schema":{"properties":{"l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/route-selection-options":{"post":{"description":"Parameters relating to options for route selection\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - route-selection-options","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Parameters relating to options for route selection","summary":"PUT - openconfig-bgp - Controller - route-selection-options","requestBody":{"description":"route-selection-options","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:route-selection-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Parameters relating to options for route selection","summary":"PATCH - openconfig-bgp - Controller - route-selection-options","requestBody":{"description":"route-selection-options","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:route-selection-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Parameters relating to options for route selection","summary":"DELETE - Controller - openconfig-bgp - route-selection-options","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Parameters relating to options for route selection","summary":"GET - Controller - openconfig-bgp - route-selection-options","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options"}},"application/json":{"schema":{"properties":{"route-selection-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/route-selection-options/config":{"put":{"description":"Configuration parameters relating to route selection\noptions","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to route selection\noptions","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to route selection\noptions","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to route selection\noptions","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/route-selection-options/state":{"get":{"description":"State information for the route selection options","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths":{"post":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - use-multiple-paths","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"PUT - openconfig-bgp - Controller - use-multiple-paths","requestBody":{"description":"use-multiple-paths","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"PATCH - openconfig-bgp - Controller - use-multiple-paths","requestBody":{"description":"use-multiple-paths","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"DELETE - Controller - openconfig-bgp - use-multiple-paths","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"GET - Controller - openconfig-bgp - use-multiple-paths","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths"}},"application/json":{"schema":{"properties":{"use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/config":{"put":{"description":"Configuration parameters relating to multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/state":{"put":{"description":"State parameters relating to multipath","summary":"PUT - openconfig-bgp - Controller - state","requestBody":{"description":"state","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_state","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_state"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"State parameters relating to multipath","summary":"PATCH - openconfig-bgp - Controller - state","requestBody":{"description":"state","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_state","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_state"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"State parameters relating to multipath","summary":"DELETE - Controller - openconfig-bgp - state","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"State parameters relating to multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ebgp":{"post":{"description":"Multipath parameters for eBGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ebgp","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multipath parameters for eBGP","summary":"PUT - openconfig-bgp - Controller - ebgp","requestBody":{"description":"ebgp","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multipath parameters for eBGP","summary":"PATCH - openconfig-bgp - Controller - ebgp","requestBody":{"description":"ebgp","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multipath parameters for eBGP","summary":"DELETE - Controller - openconfig-bgp - ebgp","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multipath parameters for eBGP","summary":"GET - Controller - openconfig-bgp - ebgp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp"}},"application/json":{"schema":{"properties":{"ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ebgp/config":{"put":{"description":"Configuration parameters relating to eBGP multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to eBGP multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to eBGP multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to eBGP multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ebgp/state":{"get":{"description":"State information relating to eBGP multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ibgp":{"post":{"description":"Multipath parameters for iBGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ibgp","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multipath parameters for iBGP","summary":"PUT - openconfig-bgp - Controller - ibgp","requestBody":{"description":"ibgp","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multipath parameters for iBGP","summary":"PATCH - openconfig-bgp - Controller - ibgp","requestBody":{"description":"ibgp","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multipath parameters for iBGP","summary":"DELETE - Controller - openconfig-bgp - ibgp","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multipath parameters for iBGP","summary":"GET - Controller - openconfig-bgp - ibgp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp"}},"application/json":{"schema":{"properties":{"ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ibgp/config":{"put":{"description":"Configuration parameters relating to iBGP multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to iBGP multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to iBGP multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to iBGP multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ibgp/state":{"get":{"description":"State information relating to iBGP multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/route-selection-options":{"post":{"description":"Parameters relating to options for route selection\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - route-selection-options","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"put":{"description":"Parameters relating to options for route selection","summary":"PUT - openconfig-bgp - Controller - route-selection-options","requestBody":{"description":"route-selection-options","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:route-selection-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Parameters relating to options for route selection","summary":"PATCH - openconfig-bgp - Controller - route-selection-options","requestBody":{"description":"route-selection-options","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:route-selection-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Parameters relating to options for route selection","summary":"DELETE - Controller - openconfig-bgp - route-selection-options","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Parameters relating to options for route selection","summary":"GET - Controller - openconfig-bgp - route-selection-options","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options"}},"application/json":{"schema":{"properties":{"route-selection-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/route-selection-options/config":{"put":{"description":"Configuration parameters relating to route selection\noptions","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Configuration parameters relating to route selection\noptions","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Configuration parameters relating to route selection\noptions","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Configuration parameters relating to route selection\noptions","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/route-selection-options/state":{"get":{"description":"State information for the route selection options","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/use-multiple-paths":{"post":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - use-multiple-paths","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"put":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"PUT - openconfig-bgp - Controller - use-multiple-paths","requestBody":{"description":"use-multiple-paths","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"PATCH - openconfig-bgp - Controller - use-multiple-paths","requestBody":{"description":"use-multiple-paths","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"DELETE - Controller - openconfig-bgp - use-multiple-paths","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"GET - Controller - openconfig-bgp - use-multiple-paths","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths"}},"application/json":{"schema":{"properties":{"use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/use-multiple-paths/config":{"put":{"description":"Configuration parameters relating to multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Configuration parameters relating to multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Configuration parameters relating to multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Configuration parameters relating to multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/use-multiple-paths/state":{"put":{"description":"State parameters relating to multipath","summary":"PUT - openconfig-bgp - Controller - state","requestBody":{"description":"state","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_state","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_state"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"State parameters relating to multipath","summary":"PATCH - openconfig-bgp - Controller - state","requestBody":{"description":"state","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_state","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_state"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"State parameters relating to multipath","summary":"DELETE - Controller - openconfig-bgp - state","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"State parameters relating to multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/use-multiple-paths/ebgp":{"post":{"description":"Multipath parameters for eBGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ebgp","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"put":{"description":"Multipath parameters for eBGP","summary":"PUT - openconfig-bgp - Controller - ebgp","requestBody":{"description":"ebgp","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Multipath parameters for eBGP","summary":"PATCH - openconfig-bgp - Controller - ebgp","requestBody":{"description":"ebgp","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Multipath parameters for eBGP","summary":"DELETE - Controller - openconfig-bgp - ebgp","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Multipath parameters for eBGP","summary":"GET - Controller - openconfig-bgp - ebgp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp"}},"application/json":{"schema":{"properties":{"ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/use-multiple-paths/ebgp/config":{"put":{"description":"Configuration parameters relating to eBGP multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Configuration parameters relating to eBGP multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Configuration parameters relating to eBGP multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Configuration parameters relating to eBGP multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/use-multiple-paths/ebgp/state":{"get":{"description":"State information relating to eBGP multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/use-multiple-paths/ibgp":{"post":{"description":"Multipath parameters for iBGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ibgp","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"put":{"description":"Multipath parameters for iBGP","summary":"PUT - openconfig-bgp - Controller - ibgp","requestBody":{"description":"ibgp","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Multipath parameters for iBGP","summary":"PATCH - openconfig-bgp - Controller - ibgp","requestBody":{"description":"ibgp","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Multipath parameters for iBGP","summary":"DELETE - Controller - openconfig-bgp - ibgp","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Multipath parameters for iBGP","summary":"GET - Controller - openconfig-bgp - ibgp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp"}},"application/json":{"schema":{"properties":{"ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/use-multiple-paths/ibgp/config":{"put":{"description":"Configuration parameters relating to iBGP multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Configuration parameters relating to iBGP multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Configuration parameters relating to iBGP multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Configuration parameters relating to iBGP multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/use-multiple-paths/ibgp/state":{"get":{"description":"State information relating to iBGP multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/graceful-restart":{"post":{"description":"Parameters relating the graceful restart mechanism for BGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - graceful-restart","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"put":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"PUT - openconfig-bgp - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"PATCH - openconfig-bgp - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"DELETE - Controller - openconfig-bgp - graceful-restart","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"GET - Controller - openconfig-bgp - graceful-restart","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart"}},"application/json":{"schema":{"properties":{"graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/graceful-restart/config":{"put":{"description":"Configuration parameters relating to graceful-restart","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Configuration parameters relating to graceful-restart","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Configuration parameters relating to graceful-restart","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Configuration parameters relating to graceful-restart","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/global/graceful-restart/state":{"get":{"description":"State information associated with graceful-restart","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors":{"post":{"description":"Configuration for BGP neighbors\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - neighbors","requestBody":{"description":"neighbor","content":{"application/json":{"schema":{"properties":{"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"put":{"description":"Configuration for BGP neighbors","summary":"PUT - openconfig-bgp - Controller - neighbors","requestBody":{"description":"neighbors","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:neighbors":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Configuration for BGP neighbors","summary":"PATCH - openconfig-bgp - Controller - neighbors","requestBody":{"description":"neighbors","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:neighbors":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Configuration for BGP neighbors","summary":"DELETE - Controller - openconfig-bgp - neighbors","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Configuration for BGP neighbors","summary":"GET - Controller - openconfig-bgp - neighbors","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors"}},"application/json":{"schema":{"properties":{"neighbors":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}":{"put":{"description":"List of BGP neighbors configured on the local system,\nuniquely identified by peer IPv[46] address","summary":"PUT - openconfig-bgp - Controller - neighbor","requestBody":{"description":"neighbor","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:neighbor":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"List of BGP neighbors configured on the local system,\nuniquely identified by peer IPv[46] address","summary":"PATCH - openconfig-bgp - Controller - neighbor","requestBody":{"description":"neighbor","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:neighbor":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"List of BGP neighbors configured on the local system,\nuniquely identified by peer IPv[46] address","summary":"DELETE - Controller - openconfig-bgp - neighbor","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"List of BGP neighbors configured on the local system,\nuniquely identified by peer IPv[46] address","summary":"GET - Controller - openconfig-bgp - neighbor","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor"}},"application/json":{"schema":{"properties":{"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor","type":"object"}}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/config":{"put":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/state":{"get":{"description":"State information relating to the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/state/messages":{"get":{"description":"Counters for BGP messages sent and received from the\nneighbor","summary":"GET - Controller - openconfig-bgp - messages","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_state_messages"}},"application/json":{"schema":{"properties":{"messages":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_state_messages","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/state/messages/sent":{"get":{"description":"Counters relating to BGP messages sent to the neighbor","summary":"GET - Controller - openconfig-bgp - sent","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_state_messages_sent"}},"application/json":{"schema":{"properties":{"sent":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_state_messages_sent","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/state/messages/received":{"get":{"description":"Counters for BGP messages received from the neighbor","summary":"GET - Controller - openconfig-bgp - received","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_state_messages_received"}},"application/json":{"schema":{"properties":{"received":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_state_messages_received","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/state/queues":{"get":{"description":"Counters related to queued messages associated with the\nBGP neighbor","summary":"GET - Controller - openconfig-bgp - queues","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_state_queues"}},"application/json":{"schema":{"properties":{"queues":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_state_queues","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/timers":{"post":{"description":"Timers related to a BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - timers","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Timers related to a BGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - timers","requestBody":{"description":"timers","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:timers":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Timers related to a BGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - timers","requestBody":{"description":"timers","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:timers":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Timers related to a BGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - timers","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Timers related to a BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - timers","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers"}},"application/json":{"schema":{"properties":{"timers":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/timers/config":{"put":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/timers/state":{"get":{"description":"State information relating to the timers used for the BGP\nneighbor or group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/transport":{"post":{"description":"Transport session parameters for the BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - transport","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Transport session parameters for the BGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - transport","requestBody":{"description":"transport","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:transport":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Transport session parameters for the BGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - transport","requestBody":{"description":"transport","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:transport":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Transport session parameters for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - transport","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Transport session parameters for the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - transport","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport"}},"application/json":{"schema":{"properties":{"transport":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/transport/config":{"put":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/transport/state":{"get":{"description":"State information relating to the transport session(s)\nused for the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/error-handling":{"post":{"description":"Error handling parameters used for the BGP neighbor or\ngroup\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - error-handling","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"PUT - openconfig-bgp - Controller - error-handling","requestBody":{"description":"error-handling","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:error-handling":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"PATCH - openconfig-bgp - Controller - error-handling","requestBody":{"description":"error-handling","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:error-handling":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-bgp - error-handling","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-bgp - error-handling","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling"}},"application/json":{"schema":{"properties":{"error-handling":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/error-handling/config":{"put":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/error-handling/state":{"get":{"description":"State information relating to enhanced error handling\nmechanisms for the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/logging-options":{"post":{"description":"Logging options for events related to the BGP neighbor or\ngroup\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - logging-options","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"PUT - openconfig-bgp - Controller - logging-options","requestBody":{"description":"logging-options","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:logging-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"PATCH - openconfig-bgp - Controller - logging-options","requestBody":{"description":"logging-options","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:logging-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-bgp - logging-options","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-bgp - logging-options","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options"}},"application/json":{"schema":{"properties":{"logging-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/logging-options/config":{"put":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/logging-options/state":{"get":{"description":"State information relating to logging for the BGP neighbor\nor group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/ebgp-multihop":{"post":{"description":"eBGP multi-hop parameters for the BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ebgp-multihop","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - ebgp-multihop","requestBody":{"description":"ebgp-multihop","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ebgp-multihop":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - ebgp-multihop","requestBody":{"description":"ebgp-multihop","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ebgp-multihop":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - ebgp-multihop","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - ebgp-multihop","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop"}},"application/json":{"schema":{"properties":{"ebgp-multihop":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/ebgp-multihop/config":{"put":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/ebgp-multihop/state":{"get":{"description":"State information for eBGP multihop, for the BGP neighbor\nor group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/route-reflector":{"post":{"description":"Route reflector parameters for the BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - route-reflector","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - route-reflector","requestBody":{"description":"route-reflector","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:route-reflector":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - route-reflector","requestBody":{"description":"route-reflector","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:route-reflector":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - route-reflector","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - route-reflector","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector"}},"application/json":{"schema":{"properties":{"route-reflector":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/route-reflector/config":{"put":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/route-reflector/state":{"get":{"description":"State information relating to route reflection for the\nBGP neighbor or group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/as-path-options":{"post":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - as-path-options","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"PUT - openconfig-bgp - Controller - as-path-options","requestBody":{"description":"as-path-options","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:as-path-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"PATCH - openconfig-bgp - Controller - as-path-options","requestBody":{"description":"as-path-options","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:as-path-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-bgp - as-path-options","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-bgp - as-path-options","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options"}},"application/json":{"schema":{"properties":{"as-path-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/as-path-options/config":{"put":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/as-path-options/state":{"get":{"description":"State information relating to the AS_PATH manipulation\nmechanisms for the BGP peer or group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/add-paths":{"post":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - add-paths","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"PUT - openconfig-bgp - Controller - add-paths","requestBody":{"description":"add-paths","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:add-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"PATCH - openconfig-bgp - Controller - add-paths","requestBody":{"description":"add-paths","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:add-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"DELETE - Controller - openconfig-bgp - add-paths","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"GET - Controller - openconfig-bgp - add-paths","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths"}},"application/json":{"schema":{"properties":{"add-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/add-paths/config":{"put":{"description":"Configuration parameters relating to ADD_PATHS","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to ADD_PATHS","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to ADD_PATHS","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to ADD_PATHS","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/add-paths/state":{"get":{"description":"State information associated with ADD_PATHS","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis":{"post":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - afi-safis","requestBody":{"description":"afi-safi","content":{"application/json":{"schema":{"properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"PUT - openconfig-bgp - Controller - afi-safis","requestBody":{"description":"afi-safis","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:afi-safis":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"PATCH - openconfig-bgp - Controller - afi-safis","requestBody":{"description":"afi-safis","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:afi-safis":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"DELETE - Controller - openconfig-bgp - afi-safis","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"GET - Controller - openconfig-bgp - afi-safis","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis"}},"application/json":{"schema":{"properties":{"afi-safis":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}":{"put":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"PUT - openconfig-bgp - Controller - afi-safi","requestBody":{"description":"afi-safi","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"PATCH - openconfig-bgp - Controller - afi-safi","requestBody":{"description":"afi-safi","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"DELETE - Controller - openconfig-bgp - afi-safi","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"GET - Controller - openconfig-bgp - afi-safi","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi"}},"application/json":{"schema":{"properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi","type":"object"}}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/graceful-restart":{"post":{"description":"Parameters relating to BGP graceful-restart\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - graceful-restart","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Parameters relating to BGP graceful-restart","summary":"PUT - openconfig-bgp - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Parameters relating to BGP graceful-restart","summary":"PATCH - openconfig-bgp - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Parameters relating to BGP graceful-restart","summary":"DELETE - Controller - openconfig-bgp - graceful-restart","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Parameters relating to BGP graceful-restart","summary":"GET - Controller - openconfig-bgp - graceful-restart","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart"}},"application/json":{"schema":{"properties":{"graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/graceful-restart/config":{"put":{"description":"Configuration options for BGP graceful-restart","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration options for BGP graceful-restart","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration options for BGP graceful-restart","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration options for BGP graceful-restart","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/graceful-restart/state":{"get":{"description":"State information for BGP graceful-restart","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/config":{"put":{"description":"Configuration parameters for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/state":{"get":{"description":"State information relating to the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/state/prefixes":{"get":{"description":"Prefix counters for the BGP session","summary":"GET - Controller - openconfig-bgp - prefixes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_state_prefixes"}},"application/json":{"schema":{"properties":{"prefixes":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_state_prefixes","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/apply-policy":{"post":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - apply-policy","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PUT - openconfig-bgp - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PATCH - openconfig-bgp - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"DELETE - Controller - openconfig-bgp - apply-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"GET - Controller - openconfig-bgp - apply-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy"}},"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/apply-policy/config":{"put":{"description":"Policy configuration data.","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Policy configuration data.","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Policy configuration data.","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Policy configuration data.","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/apply-policy/state":{"get":{"description":"Operational state for routing policy","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast":{"post":{"description":"IPv4 unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ipv4-unicast","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv4 unicast configuration options","summary":"PUT - openconfig-bgp - Controller - ipv4-unicast","requestBody":{"description":"ipv4-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv4 unicast configuration options","summary":"PATCH - openconfig-bgp - Controller - ipv4-unicast","requestBody":{"description":"ipv4-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv4 unicast configuration options","summary":"DELETE - Controller - openconfig-bgp - ipv4-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv4 unicast configuration options","summary":"GET - Controller - openconfig-bgp - ipv4-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast"}},"application/json":{"schema":{"properties":{"ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/config":{"put":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/state":{"get":{"description":"State information for common IPv4 and IPv6 unicast\nparameters","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast":{"post":{"description":"IPv6 unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ipv6-unicast","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv6 unicast configuration options","summary":"PUT - openconfig-bgp - Controller - ipv6-unicast","requestBody":{"description":"ipv6-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv6 unicast configuration options","summary":"PATCH - openconfig-bgp - Controller - ipv6-unicast","requestBody":{"description":"ipv6-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv6 unicast configuration options","summary":"DELETE - Controller - openconfig-bgp - ipv6-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv6 unicast configuration options","summary":"GET - Controller - openconfig-bgp - ipv6-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast"}},"application/json":{"schema":{"properties":{"ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/config":{"put":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/state":{"get":{"description":"State information for common IPv4 and IPv6 unicast\nparameters","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast":{"post":{"description":"IPv4 Labelled Unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ipv4-labelled-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv4 Labelled Unicast configuration options","summary":"PUT - openconfig-bgp - Controller - ipv4-labelled-unicast","requestBody":{"description":"ipv4-labelled-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv4 Labelled Unicast configuration options","summary":"PATCH - openconfig-bgp - Controller - ipv4-labelled-unicast","requestBody":{"description":"ipv4-labelled-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv4 Labelled Unicast configuration options","summary":"DELETE - Controller - openconfig-bgp - ipv4-labelled-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv4 Labelled Unicast configuration options","summary":"GET - Controller - openconfig-bgp - ipv4-labelled-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast"}},"application/json":{"schema":{"properties":{"ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast":{"post":{"description":"IPv6 Labelled Unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ipv6-labelled-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv6 Labelled Unicast configuration options","summary":"PUT - openconfig-bgp - Controller - ipv6-labelled-unicast","requestBody":{"description":"ipv6-labelled-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv6 Labelled Unicast configuration options","summary":"PATCH - openconfig-bgp - Controller - ipv6-labelled-unicast","requestBody":{"description":"ipv6-labelled-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv6 Labelled Unicast configuration options","summary":"DELETE - Controller - openconfig-bgp - ipv6-labelled-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv6 Labelled Unicast configuration options","summary":"GET - Controller - openconfig-bgp - ipv6-labelled-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast"}},"application/json":{"schema":{"properties":{"ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast":{"post":{"description":"Unicast IPv4 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l3vpn-ipv4-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Unicast IPv4 L3VPN configuration options","summary":"PUT - openconfig-bgp - Controller - l3vpn-ipv4-unicast","requestBody":{"description":"l3vpn-ipv4-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Unicast IPv4 L3VPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l3vpn-ipv4-unicast","requestBody":{"description":"l3vpn-ipv4-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Unicast IPv4 L3VPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l3vpn-ipv4-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Unicast IPv4 L3VPN configuration options","summary":"GET - Controller - openconfig-bgp - l3vpn-ipv4-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast":{"post":{"description":"Unicast IPv6 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l3vpn-ipv6-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Unicast IPv6 L3VPN configuration options","summary":"PUT - openconfig-bgp - Controller - l3vpn-ipv6-unicast","requestBody":{"description":"l3vpn-ipv6-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Unicast IPv6 L3VPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l3vpn-ipv6-unicast","requestBody":{"description":"l3vpn-ipv6-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Unicast IPv6 L3VPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l3vpn-ipv6-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Unicast IPv6 L3VPN configuration options","summary":"GET - Controller - openconfig-bgp - l3vpn-ipv6-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast":{"post":{"description":"Multicast IPv4 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l3vpn-ipv4-multicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multicast IPv4 L3VPN configuration options","summary":"PUT - openconfig-bgp - Controller - l3vpn-ipv4-multicast","requestBody":{"description":"l3vpn-ipv4-multicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multicast IPv4 L3VPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l3vpn-ipv4-multicast","requestBody":{"description":"l3vpn-ipv4-multicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multicast IPv4 L3VPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l3vpn-ipv4-multicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multicast IPv4 L3VPN configuration options","summary":"GET - Controller - openconfig-bgp - l3vpn-ipv4-multicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast":{"post":{"description":"Multicast IPv6 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l3vpn-ipv6-multicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multicast IPv6 L3VPN configuration options","summary":"PUT - openconfig-bgp - Controller - l3vpn-ipv6-multicast","requestBody":{"description":"l3vpn-ipv6-multicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multicast IPv6 L3VPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l3vpn-ipv6-multicast","requestBody":{"description":"l3vpn-ipv6-multicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multicast IPv6 L3VPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l3vpn-ipv6-multicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multicast IPv6 L3VPN configuration options","summary":"GET - Controller - openconfig-bgp - l3vpn-ipv6-multicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls":{"post":{"description":"BGP-signalled VPLS configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l2vpn-vpls","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"BGP-signalled VPLS configuration options","summary":"PUT - openconfig-bgp - Controller - l2vpn-vpls","requestBody":{"description":"l2vpn-vpls","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"BGP-signalled VPLS configuration options","summary":"PATCH - openconfig-bgp - Controller - l2vpn-vpls","requestBody":{"description":"l2vpn-vpls","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"BGP-signalled VPLS configuration options","summary":"DELETE - Controller - openconfig-bgp - l2vpn-vpls","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"BGP-signalled VPLS configuration options","summary":"GET - Controller - openconfig-bgp - l2vpn-vpls","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls"}},"application/json":{"schema":{"properties":{"l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn":{"post":{"description":"BGP EVPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l2vpn-evpn","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"BGP EVPN configuration options","summary":"PUT - openconfig-bgp - Controller - l2vpn-evpn","requestBody":{"description":"l2vpn-evpn","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"BGP EVPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l2vpn-evpn","requestBody":{"description":"l2vpn-evpn","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"BGP EVPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l2vpn-evpn","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"BGP EVPN configuration options","summary":"GET - Controller - openconfig-bgp - l2vpn-evpn","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn"}},"application/json":{"schema":{"properties":{"l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths":{"post":{"description":"Parameters related to the use of multiple-paths for the same\nNLRI when they are received only from this neighbor\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - use-multiple-paths","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Parameters related to the use of multiple-paths for the same\nNLRI when they are received only from this neighbor","summary":"PUT - openconfig-bgp - Controller - use-multiple-paths","requestBody":{"description":"use-multiple-paths","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Parameters related to the use of multiple-paths for the same\nNLRI when they are received only from this neighbor","summary":"PATCH - openconfig-bgp - Controller - use-multiple-paths","requestBody":{"description":"use-multiple-paths","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Parameters related to the use of multiple-paths for the same\nNLRI when they are received only from this neighbor","summary":"DELETE - Controller - openconfig-bgp - use-multiple-paths","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Parameters related to the use of multiple-paths for the same\nNLRI when they are received only from this neighbor","summary":"GET - Controller - openconfig-bgp - use-multiple-paths","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths"}},"application/json":{"schema":{"properties":{"use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/config":{"put":{"description":"Configuration parameters relating to multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/state":{"put":{"description":"State parameters relating to multipath","summary":"PUT - openconfig-bgp - Controller - state","requestBody":{"description":"state","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_state","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_state"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"State parameters relating to multipath","summary":"PATCH - openconfig-bgp - Controller - state","requestBody":{"description":"state","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_state","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_state"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"State parameters relating to multipath","summary":"DELETE - Controller - openconfig-bgp - state","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"State parameters relating to multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ebgp":{"post":{"description":"Multipath configuration for eBGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ebgp","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multipath configuration for eBGP","summary":"PUT - openconfig-bgp - Controller - ebgp","requestBody":{"description":"ebgp","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multipath configuration for eBGP","summary":"PATCH - openconfig-bgp - Controller - ebgp","requestBody":{"description":"ebgp","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multipath configuration for eBGP","summary":"DELETE - Controller - openconfig-bgp - ebgp","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multipath configuration for eBGP","summary":"GET - Controller - openconfig-bgp - ebgp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp"}},"application/json":{"schema":{"properties":{"ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ebgp/config":{"put":{"description":"Configuration parameters relating to eBGP multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to eBGP multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to eBGP multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to eBGP multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ebgp/state":{"get":{"description":"State information relating to eBGP multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/apply-policy":{"post":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - apply-policy","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PUT - openconfig-bgp - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PATCH - openconfig-bgp - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"DELETE - Controller - openconfig-bgp - apply-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"GET - Controller - openconfig-bgp - apply-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy"}},"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/apply-policy/config":{"put":{"description":"Policy configuration data.","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Policy configuration data.","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Policy configuration data.","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Policy configuration data.","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/apply-policy/state":{"get":{"description":"Operational state for routing policy","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/graceful-restart":{"post":{"description":"Parameters relating the graceful restart mechanism for BGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - graceful-restart","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"PUT - openconfig-bgp - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"PATCH - openconfig-bgp - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"DELETE - Controller - openconfig-bgp - graceful-restart","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"GET - Controller - openconfig-bgp - graceful-restart","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart"}},"application/json":{"schema":{"properties":{"graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/graceful-restart/config":{"put":{"description":"Configuration parameters relating to graceful-restart","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to graceful-restart","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to graceful-restart","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to graceful-restart","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/graceful-restart/state":{"get":{"description":"State information associated with graceful-restart","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/use-multiple-paths":{"post":{"description":"Parameters related to the use of multiple-paths for the same\nNLRI when they are received only from this neighbor\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - use-multiple-paths","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Parameters related to the use of multiple-paths for the same\nNLRI when they are received only from this neighbor","summary":"PUT - openconfig-bgp - Controller - use-multiple-paths","requestBody":{"description":"use-multiple-paths","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Parameters related to the use of multiple-paths for the same\nNLRI when they are received only from this neighbor","summary":"PATCH - openconfig-bgp - Controller - use-multiple-paths","requestBody":{"description":"use-multiple-paths","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Parameters related to the use of multiple-paths for the same\nNLRI when they are received only from this neighbor","summary":"DELETE - Controller - openconfig-bgp - use-multiple-paths","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Parameters related to the use of multiple-paths for the same\nNLRI when they are received only from this neighbor","summary":"GET - Controller - openconfig-bgp - use-multiple-paths","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths"}},"application/json":{"schema":{"properties":{"use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/use-multiple-paths/config":{"put":{"description":"Configuration parameters relating to multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/use-multiple-paths/state":{"put":{"description":"State parameters relating to multipath","summary":"PUT - openconfig-bgp - Controller - state","requestBody":{"description":"state","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_state","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_state"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"State parameters relating to multipath","summary":"PATCH - openconfig-bgp - Controller - state","requestBody":{"description":"state","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_state","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_state"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"State parameters relating to multipath","summary":"DELETE - Controller - openconfig-bgp - state","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"State parameters relating to multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/use-multiple-paths/ebgp":{"post":{"description":"Multipath configuration for eBGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ebgp","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Multipath configuration for eBGP","summary":"PUT - openconfig-bgp - Controller - ebgp","requestBody":{"description":"ebgp","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Multipath configuration for eBGP","summary":"PATCH - openconfig-bgp - Controller - ebgp","requestBody":{"description":"ebgp","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Multipath configuration for eBGP","summary":"DELETE - Controller - openconfig-bgp - ebgp","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Multipath configuration for eBGP","summary":"GET - Controller - openconfig-bgp - ebgp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp"}},"application/json":{"schema":{"properties":{"ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/use-multiple-paths/ebgp/config":{"put":{"description":"Configuration parameters relating to eBGP multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to eBGP multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to eBGP multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to eBGP multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/neighbors/neighbor={neighbor-address}/use-multiple-paths/ebgp/state":{"get":{"description":"State information relating to eBGP multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups":{"post":{"description":"Configuration for BGP peer-groups\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - peer-groups","requestBody":{"description":"peer-group","content":{"application/json":{"schema":{"properties":{"peer-group":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"put":{"description":"Configuration for BGP peer-groups","summary":"PUT - openconfig-bgp - Controller - peer-groups","requestBody":{"description":"peer-groups","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:peer-groups":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"patch":{"description":"Configuration for BGP peer-groups","summary":"PATCH - openconfig-bgp - Controller - peer-groups","requestBody":{"description":"peer-groups","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:peer-groups":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"delete":{"description":"Configuration for BGP peer-groups","summary":"DELETE - Controller - openconfig-bgp - peer-groups","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[]},"get":{"description":"Configuration for BGP peer-groups","summary":"GET - Controller - openconfig-bgp - peer-groups","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups"}},"application/json":{"schema":{"properties":{"peer-groups":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}":{"put":{"description":"List of BGP peer-groups configured on the local system -\nuniquely identified by peer-group name","summary":"PUT - openconfig-bgp - Controller - peer-group","requestBody":{"description":"peer-group","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:peer-group":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"List of BGP peer-groups configured on the local system -\nuniquely identified by peer-group name","summary":"PATCH - openconfig-bgp - Controller - peer-group","requestBody":{"description":"peer-group","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:peer-group":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"List of BGP peer-groups configured on the local system -\nuniquely identified by peer-group name","summary":"DELETE - Controller - openconfig-bgp - peer-group","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"List of BGP peer-groups configured on the local system -\nuniquely identified by peer-group name","summary":"GET - Controller - openconfig-bgp - peer-group","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group"}},"application/json":{"schema":{"properties":{"peer-group":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group","type":"object"}}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/config":{"put":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/state":{"get":{"description":"State information relating to the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/timers":{"post":{"description":"Timers related to a BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - timers","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Timers related to a BGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - timers","requestBody":{"description":"timers","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:timers":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Timers related to a BGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - timers","requestBody":{"description":"timers","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:timers":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Timers related to a BGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - timers","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Timers related to a BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - timers","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers"}},"application/json":{"schema":{"properties":{"timers":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/timers/config":{"put":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/timers/state":{"get":{"description":"State information relating to the timers used for the BGP\nneighbor or group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/transport":{"post":{"description":"Transport session parameters for the BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - transport","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Transport session parameters for the BGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - transport","requestBody":{"description":"transport","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:transport":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Transport session parameters for the BGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - transport","requestBody":{"description":"transport","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:transport":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Transport session parameters for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - transport","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Transport session parameters for the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - transport","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport"}},"application/json":{"schema":{"properties":{"transport":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/transport/config":{"put":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/transport/state":{"get":{"description":"State information relating to the transport session(s)\nused for the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/error-handling":{"post":{"description":"Error handling parameters used for the BGP neighbor or\ngroup\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - error-handling","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"PUT - openconfig-bgp - Controller - error-handling","requestBody":{"description":"error-handling","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:error-handling":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"PATCH - openconfig-bgp - Controller - error-handling","requestBody":{"description":"error-handling","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:error-handling":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-bgp - error-handling","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-bgp - error-handling","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling"}},"application/json":{"schema":{"properties":{"error-handling":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/error-handling/config":{"put":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/error-handling/state":{"get":{"description":"State information relating to enhanced error handling\nmechanisms for the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/logging-options":{"post":{"description":"Logging options for events related to the BGP neighbor or\ngroup\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - logging-options","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"PUT - openconfig-bgp - Controller - logging-options","requestBody":{"description":"logging-options","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:logging-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"PATCH - openconfig-bgp - Controller - logging-options","requestBody":{"description":"logging-options","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:logging-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-bgp - logging-options","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-bgp - logging-options","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options"}},"application/json":{"schema":{"properties":{"logging-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/logging-options/config":{"put":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/logging-options/state":{"get":{"description":"State information relating to logging for the BGP neighbor\nor group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/ebgp-multihop":{"post":{"description":"eBGP multi-hop parameters for the BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ebgp-multihop","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - ebgp-multihop","requestBody":{"description":"ebgp-multihop","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ebgp-multihop":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - ebgp-multihop","requestBody":{"description":"ebgp-multihop","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ebgp-multihop":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - ebgp-multihop","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - ebgp-multihop","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop"}},"application/json":{"schema":{"properties":{"ebgp-multihop":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/ebgp-multihop/config":{"put":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/ebgp-multihop/state":{"get":{"description":"State information for eBGP multihop, for the BGP neighbor\nor group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/route-reflector":{"post":{"description":"Route reflector parameters for the BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - route-reflector","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - route-reflector","requestBody":{"description":"route-reflector","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:route-reflector":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - route-reflector","requestBody":{"description":"route-reflector","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:route-reflector":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - route-reflector","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - route-reflector","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector"}},"application/json":{"schema":{"properties":{"route-reflector":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/route-reflector/config":{"put":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/route-reflector/state":{"get":{"description":"State information relating to route reflection for the\nBGP neighbor or group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/as-path-options":{"post":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - as-path-options","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"PUT - openconfig-bgp - Controller - as-path-options","requestBody":{"description":"as-path-options","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:as-path-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"PATCH - openconfig-bgp - Controller - as-path-options","requestBody":{"description":"as-path-options","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:as-path-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-bgp - as-path-options","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-bgp - as-path-options","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options"}},"application/json":{"schema":{"properties":{"as-path-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/as-path-options/config":{"put":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/as-path-options/state":{"get":{"description":"State information relating to the AS_PATH manipulation\nmechanisms for the BGP peer or group","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/add-paths":{"post":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - add-paths","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"PUT - openconfig-bgp - Controller - add-paths","requestBody":{"description":"add-paths","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:add-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"PATCH - openconfig-bgp - Controller - add-paths","requestBody":{"description":"add-paths","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:add-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"DELETE - Controller - openconfig-bgp - add-paths","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"GET - Controller - openconfig-bgp - add-paths","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths"}},"application/json":{"schema":{"properties":{"add-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/add-paths/config":{"put":{"description":"Configuration parameters relating to ADD_PATHS","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to ADD_PATHS","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to ADD_PATHS","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to ADD_PATHS","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/add-paths/state":{"get":{"description":"State information associated with ADD_PATHS","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis":{"post":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - afi-safis","requestBody":{"description":"afi-safi","content":{"application/json":{"schema":{"properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"PUT - openconfig-bgp - Controller - afi-safis","requestBody":{"description":"afi-safis","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:afi-safis":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"PATCH - openconfig-bgp - Controller - afi-safis","requestBody":{"description":"afi-safis","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:afi-safis":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"DELETE - Controller - openconfig-bgp - afi-safis","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"GET - Controller - openconfig-bgp - afi-safis","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis"}},"application/json":{"schema":{"properties":{"afi-safis":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}":{"put":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"PUT - openconfig-bgp - Controller - afi-safi","requestBody":{"description":"afi-safi","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"PATCH - openconfig-bgp - Controller - afi-safi","requestBody":{"description":"afi-safi","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"DELETE - Controller - openconfig-bgp - afi-safi","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"GET - Controller - openconfig-bgp - afi-safi","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi"}},"application/json":{"schema":{"properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi","type":"object"}}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/graceful-restart":{"post":{"description":"Parameters relating to BGP graceful-restart\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - graceful-restart","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Parameters relating to BGP graceful-restart","summary":"PUT - openconfig-bgp - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Parameters relating to BGP graceful-restart","summary":"PATCH - openconfig-bgp - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Parameters relating to BGP graceful-restart","summary":"DELETE - Controller - openconfig-bgp - graceful-restart","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Parameters relating to BGP graceful-restart","summary":"GET - Controller - openconfig-bgp - graceful-restart","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart"}},"application/json":{"schema":{"properties":{"graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/graceful-restart/config":{"put":{"description":"Configuration options for BGP graceful-restart","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration options for BGP graceful-restart","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration options for BGP graceful-restart","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration options for BGP graceful-restart","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/graceful-restart/state":{"get":{"description":"State information for BGP graceful-restart","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/config":{"put":{"description":"Configuration parameters for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/state":{"get":{"description":"State information relating to the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/apply-policy":{"post":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - apply-policy","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PUT - openconfig-bgp - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PATCH - openconfig-bgp - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"DELETE - Controller - openconfig-bgp - apply-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"GET - Controller - openconfig-bgp - apply-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy"}},"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/apply-policy/config":{"put":{"description":"Policy configuration data.","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Policy configuration data.","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Policy configuration data.","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Policy configuration data.","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/apply-policy/state":{"get":{"description":"Operational state for routing policy","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast":{"post":{"description":"IPv4 unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ipv4-unicast","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv4 unicast configuration options","summary":"PUT - openconfig-bgp - Controller - ipv4-unicast","requestBody":{"description":"ipv4-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv4 unicast configuration options","summary":"PATCH - openconfig-bgp - Controller - ipv4-unicast","requestBody":{"description":"ipv4-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv4 unicast configuration options","summary":"DELETE - Controller - openconfig-bgp - ipv4-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv4 unicast configuration options","summary":"GET - Controller - openconfig-bgp - ipv4-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast"}},"application/json":{"schema":{"properties":{"ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/config":{"put":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/state":{"get":{"description":"State information for common IPv4 and IPv6 unicast\nparameters","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast":{"post":{"description":"IPv6 unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ipv6-unicast","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv6 unicast configuration options","summary":"PUT - openconfig-bgp - Controller - ipv6-unicast","requestBody":{"description":"ipv6-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv6 unicast configuration options","summary":"PATCH - openconfig-bgp - Controller - ipv6-unicast","requestBody":{"description":"ipv6-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv6 unicast configuration options","summary":"DELETE - Controller - openconfig-bgp - ipv6-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv6 unicast configuration options","summary":"GET - Controller - openconfig-bgp - ipv6-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast"}},"application/json":{"schema":{"properties":{"ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/config":{"put":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/state":{"get":{"description":"State information for common IPv4 and IPv6 unicast\nparameters","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast":{"post":{"description":"IPv4 Labelled Unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ipv4-labelled-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv4 Labelled Unicast configuration options","summary":"PUT - openconfig-bgp - Controller - ipv4-labelled-unicast","requestBody":{"description":"ipv4-labelled-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv4 Labelled Unicast configuration options","summary":"PATCH - openconfig-bgp - Controller - ipv4-labelled-unicast","requestBody":{"description":"ipv4-labelled-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv4 Labelled Unicast configuration options","summary":"DELETE - Controller - openconfig-bgp - ipv4-labelled-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv4 Labelled Unicast configuration options","summary":"GET - Controller - openconfig-bgp - ipv4-labelled-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast"}},"application/json":{"schema":{"properties":{"ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast":{"post":{"description":"IPv6 Labelled Unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ipv6-labelled-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv6 Labelled Unicast configuration options","summary":"PUT - openconfig-bgp - Controller - ipv6-labelled-unicast","requestBody":{"description":"ipv6-labelled-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv6 Labelled Unicast configuration options","summary":"PATCH - openconfig-bgp - Controller - ipv6-labelled-unicast","requestBody":{"description":"ipv6-labelled-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv6 Labelled Unicast configuration options","summary":"DELETE - Controller - openconfig-bgp - ipv6-labelled-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv6 Labelled Unicast configuration options","summary":"GET - Controller - openconfig-bgp - ipv6-labelled-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast"}},"application/json":{"schema":{"properties":{"ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast":{"post":{"description":"Unicast IPv4 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l3vpn-ipv4-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Unicast IPv4 L3VPN configuration options","summary":"PUT - openconfig-bgp - Controller - l3vpn-ipv4-unicast","requestBody":{"description":"l3vpn-ipv4-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Unicast IPv4 L3VPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l3vpn-ipv4-unicast","requestBody":{"description":"l3vpn-ipv4-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Unicast IPv4 L3VPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l3vpn-ipv4-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Unicast IPv4 L3VPN configuration options","summary":"GET - Controller - openconfig-bgp - l3vpn-ipv4-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast":{"post":{"description":"Unicast IPv6 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l3vpn-ipv6-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Unicast IPv6 L3VPN configuration options","summary":"PUT - openconfig-bgp - Controller - l3vpn-ipv6-unicast","requestBody":{"description":"l3vpn-ipv6-unicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Unicast IPv6 L3VPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l3vpn-ipv6-unicast","requestBody":{"description":"l3vpn-ipv6-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Unicast IPv6 L3VPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l3vpn-ipv6-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Unicast IPv6 L3VPN configuration options","summary":"GET - Controller - openconfig-bgp - l3vpn-ipv6-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast":{"post":{"description":"Multicast IPv4 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l3vpn-ipv4-multicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multicast IPv4 L3VPN configuration options","summary":"PUT - openconfig-bgp - Controller - l3vpn-ipv4-multicast","requestBody":{"description":"l3vpn-ipv4-multicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multicast IPv4 L3VPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l3vpn-ipv4-multicast","requestBody":{"description":"l3vpn-ipv4-multicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multicast IPv4 L3VPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l3vpn-ipv4-multicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multicast IPv4 L3VPN configuration options","summary":"GET - Controller - openconfig-bgp - l3vpn-ipv4-multicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast":{"post":{"description":"Multicast IPv6 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l3vpn-ipv6-multicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multicast IPv6 L3VPN configuration options","summary":"PUT - openconfig-bgp - Controller - l3vpn-ipv6-multicast","requestBody":{"description":"l3vpn-ipv6-multicast","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multicast IPv6 L3VPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l3vpn-ipv6-multicast","requestBody":{"description":"l3vpn-ipv6-multicast","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multicast IPv6 L3VPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l3vpn-ipv6-multicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multicast IPv6 L3VPN configuration options","summary":"GET - Controller - openconfig-bgp - l3vpn-ipv6-multicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls":{"post":{"description":"BGP-signalled VPLS configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l2vpn-vpls","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"BGP-signalled VPLS configuration options","summary":"PUT - openconfig-bgp - Controller - l2vpn-vpls","requestBody":{"description":"l2vpn-vpls","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"BGP-signalled VPLS configuration options","summary":"PATCH - openconfig-bgp - Controller - l2vpn-vpls","requestBody":{"description":"l2vpn-vpls","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"BGP-signalled VPLS configuration options","summary":"DELETE - Controller - openconfig-bgp - l2vpn-vpls","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"BGP-signalled VPLS configuration options","summary":"GET - Controller - openconfig-bgp - l2vpn-vpls","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls"}},"application/json":{"schema":{"properties":{"l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn":{"post":{"description":"BGP EVPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - l2vpn-evpn","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"BGP EVPN configuration options","summary":"PUT - openconfig-bgp - Controller - l2vpn-evpn","requestBody":{"description":"l2vpn-evpn","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"BGP EVPN configuration options","summary":"PATCH - openconfig-bgp - Controller - l2vpn-evpn","requestBody":{"description":"l2vpn-evpn","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"BGP EVPN configuration options","summary":"DELETE - Controller - openconfig-bgp - l2vpn-evpn","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"BGP EVPN configuration options","summary":"GET - Controller - openconfig-bgp - l2vpn-evpn","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn"}},"application/json":{"schema":{"properties":{"l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-bgp - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-bgp - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-bgp - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths":{"post":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - use-multiple-paths","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"PUT - openconfig-bgp - Controller - use-multiple-paths","requestBody":{"description":"use-multiple-paths","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"PATCH - openconfig-bgp - Controller - use-multiple-paths","requestBody":{"description":"use-multiple-paths","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"DELETE - Controller - openconfig-bgp - use-multiple-paths","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"GET - Controller - openconfig-bgp - use-multiple-paths","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths"}},"application/json":{"schema":{"properties":{"use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/config":{"put":{"description":"Configuration parameters relating to multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/state":{"put":{"description":"State parameters relating to multipath","summary":"PUT - openconfig-bgp - Controller - state","requestBody":{"description":"state","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_state","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_state"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"State parameters relating to multipath","summary":"PATCH - openconfig-bgp - Controller - state","requestBody":{"description":"state","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_state","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_state"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"State parameters relating to multipath","summary":"DELETE - Controller - openconfig-bgp - state","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"State parameters relating to multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ebgp":{"post":{"description":"Multipath parameters for eBGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ebgp","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multipath parameters for eBGP","summary":"PUT - openconfig-bgp - Controller - ebgp","requestBody":{"description":"ebgp","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multipath parameters for eBGP","summary":"PATCH - openconfig-bgp - Controller - ebgp","requestBody":{"description":"ebgp","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multipath parameters for eBGP","summary":"DELETE - Controller - openconfig-bgp - ebgp","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multipath parameters for eBGP","summary":"GET - Controller - openconfig-bgp - ebgp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp"}},"application/json":{"schema":{"properties":{"ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ebgp/config":{"put":{"description":"Configuration parameters relating to eBGP multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to eBGP multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to eBGP multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to eBGP multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ebgp/state":{"get":{"description":"State information relating to eBGP multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ibgp":{"post":{"description":"Multipath parameters for iBGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ibgp","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multipath parameters for iBGP","summary":"PUT - openconfig-bgp - Controller - ibgp","requestBody":{"description":"ibgp","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multipath parameters for iBGP","summary":"PATCH - openconfig-bgp - Controller - ibgp","requestBody":{"description":"ibgp","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multipath parameters for iBGP","summary":"DELETE - Controller - openconfig-bgp - ibgp","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multipath parameters for iBGP","summary":"GET - Controller - openconfig-bgp - ibgp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp"}},"application/json":{"schema":{"properties":{"ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ibgp/config":{"put":{"description":"Configuration parameters relating to iBGP multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to iBGP multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to iBGP multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to iBGP multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/use-multiple-paths/ibgp/state":{"get":{"description":"State information relating to iBGP multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/route-selection-options":{"post":{"description":"Parameters relating to options for route selection\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - route-selection-options","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Parameters relating to options for route selection","summary":"PUT - openconfig-bgp - Controller - route-selection-options","requestBody":{"description":"route-selection-options","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:route-selection-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Parameters relating to options for route selection","summary":"PATCH - openconfig-bgp - Controller - route-selection-options","requestBody":{"description":"route-selection-options","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:route-selection-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Parameters relating to options for route selection","summary":"DELETE - Controller - openconfig-bgp - route-selection-options","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Parameters relating to options for route selection","summary":"GET - Controller - openconfig-bgp - route-selection-options","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options"}},"application/json":{"schema":{"properties":{"route-selection-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/route-selection-options/config":{"put":{"description":"Configuration parameters relating to route selection\noptions","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to route selection\noptions","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to route selection\noptions","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to route selection\noptions","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/route-selection-options/state":{"get":{"description":"State information for the route selection options","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/apply-policy":{"post":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - apply-policy","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PUT - openconfig-bgp - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PATCH - openconfig-bgp - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"DELETE - Controller - openconfig-bgp - apply-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"GET - Controller - openconfig-bgp - apply-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy"}},"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/apply-policy/config":{"put":{"description":"Policy configuration data.","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Policy configuration data.","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Policy configuration data.","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Policy configuration data.","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/apply-policy/state":{"get":{"description":"Operational state for routing policy","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/graceful-restart":{"post":{"description":"Parameters relating the graceful restart mechanism for BGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - graceful-restart","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"PUT - openconfig-bgp - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"PATCH - openconfig-bgp - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"DELETE - Controller - openconfig-bgp - graceful-restart","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"GET - Controller - openconfig-bgp - graceful-restart","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart"}},"application/json":{"schema":{"properties":{"graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/graceful-restart/config":{"put":{"description":"Configuration parameters relating to graceful-restart","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to graceful-restart","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to graceful-restart","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to graceful-restart","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/graceful-restart/state":{"get":{"description":"State information associated with graceful-restart","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/use-multiple-paths":{"post":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - use-multiple-paths","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"PUT - openconfig-bgp - Controller - use-multiple-paths","requestBody":{"description":"use-multiple-paths","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"PATCH - openconfig-bgp - Controller - use-multiple-paths","requestBody":{"description":"use-multiple-paths","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"DELETE - Controller - openconfig-bgp - use-multiple-paths","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"GET - Controller - openconfig-bgp - use-multiple-paths","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths"}},"application/json":{"schema":{"properties":{"use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/use-multiple-paths/config":{"put":{"description":"Configuration parameters relating to multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/use-multiple-paths/state":{"put":{"description":"State parameters relating to multipath","summary":"PUT - openconfig-bgp - Controller - state","requestBody":{"description":"state","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_state","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_state"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"State parameters relating to multipath","summary":"PATCH - openconfig-bgp - Controller - state","requestBody":{"description":"state","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_state","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_state"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"State parameters relating to multipath","summary":"DELETE - Controller - openconfig-bgp - state","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"State parameters relating to multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/use-multiple-paths/ebgp":{"post":{"description":"Multipath parameters for eBGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ebgp","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Multipath parameters for eBGP","summary":"PUT - openconfig-bgp - Controller - ebgp","requestBody":{"description":"ebgp","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Multipath parameters for eBGP","summary":"PATCH - openconfig-bgp - Controller - ebgp","requestBody":{"description":"ebgp","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Multipath parameters for eBGP","summary":"DELETE - Controller - openconfig-bgp - ebgp","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Multipath parameters for eBGP","summary":"GET - Controller - openconfig-bgp - ebgp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp"}},"application/json":{"schema":{"properties":{"ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/use-multiple-paths/ebgp/config":{"put":{"description":"Configuration parameters relating to eBGP multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to eBGP multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to eBGP multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to eBGP multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/use-multiple-paths/ebgp/state":{"get":{"description":"State information relating to eBGP multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/use-multiple-paths/ibgp":{"post":{"description":"Multipath parameters for iBGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-bgp - ibgp","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Multipath parameters for iBGP","summary":"PUT - openconfig-bgp - Controller - ibgp","requestBody":{"description":"ibgp","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Multipath parameters for iBGP","summary":"PATCH - openconfig-bgp - Controller - ibgp","requestBody":{"description":"ibgp","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Multipath parameters for iBGP","summary":"DELETE - Controller - openconfig-bgp - ibgp","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Multipath parameters for iBGP","summary":"GET - Controller - openconfig-bgp - ibgp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp"}},"application/json":{"schema":{"properties":{"ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/use-multiple-paths/ibgp/config":{"put":{"description":"Configuration parameters relating to iBGP multipath","summary":"PUT - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to iBGP multipath","summary":"PATCH - openconfig-bgp - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp:config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to iBGP multipath","summary":"DELETE - Controller - openconfig-bgp - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to iBGP multipath","summary":"GET - Controller - openconfig-bgp - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_config","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-bgp:bgp/peer-groups/peer-group={peer-group-name}/use-multiple-paths/ibgp/state":{"get":{"description":"State information relating to iBGP multipath","summary":"GET - Controller - openconfig-bgp - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_state","type":"object"}}}}}}},"tags":["Controller openconfig-bgp"],"parameters":[{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-interfaces:interfaces":{"post":{"description":"Top level container for interfaces, including configuration\nand state data.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-interfaces - interfaces","requestBody":{"description":"interface","content":{"application/json":{"schema":{"properties":{"interface":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-interfaces"],"parameters":[]},"put":{"description":"Top level container for interfaces, including configuration\nand state data.","summary":"PUT - openconfig-interfaces - Controller - interfaces","requestBody":{"description":"interfaces","content":{"application/json":{"schema":{"properties":{"openconfig-interfaces:interfaces":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[]},"patch":{"description":"Top level container for interfaces, including configuration\nand state data.","summary":"PATCH - openconfig-interfaces - Controller - interfaces","requestBody":{"description":"interfaces","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-interfaces:interfaces":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[]},"delete":{"description":"Top level container for interfaces, including configuration\nand state data.","summary":"DELETE - Controller - openconfig-interfaces - interfaces","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-interfaces"],"parameters":[]},"get":{"description":"Top level container for interfaces, including configuration\nand state data.","summary":"GET - Controller - openconfig-interfaces - interfaces","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces"}},"application/json":{"schema":{"properties":{"interfaces":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces","type":"object"}}}}}}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-interfaces:interfaces/interface={name}":{"put":{"description":"The list of named interfaces on the device.","summary":"PUT - openconfig-interfaces - Controller - interface","requestBody":{"description":"interface","content":{"application/json":{"schema":{"properties":{"openconfig-interfaces:interface":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"patch":{"description":"The list of named interfaces on the device.","summary":"PATCH - openconfig-interfaces - Controller - interface","requestBody":{"description":"interface","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-interfaces:interface":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"delete":{"description":"The list of named interfaces on the device.","summary":"DELETE - Controller - openconfig-interfaces - interface","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"get":{"description":"The list of named interfaces on the device.","summary":"GET - Controller - openconfig-interfaces - interface","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface"}},"application/json":{"schema":{"properties":{"interface":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface","type":"object"}}}}}}}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-interfaces:interfaces/interface={name}/config":{"put":{"description":"Configurable items at the global, physical interface\nlevel","summary":"PUT - openconfig-interfaces - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-interfaces:config":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"patch":{"description":"Configurable items at the global, physical interface\nlevel","summary":"PATCH - openconfig-interfaces - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-interfaces:config":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"delete":{"description":"Configurable items at the global, physical interface\nlevel","summary":"DELETE - Controller - openconfig-interfaces - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"get":{"description":"Configurable items at the global, physical interface\nlevel","summary":"GET - Controller - openconfig-interfaces - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_config","type":"object"}}}}}}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-interfaces:interfaces/interface={name}/state":{"get":{"description":"Operational state data at the global interface level","summary":"GET - Controller - openconfig-interfaces - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_state","type":"object"}}}}}}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-interfaces:interfaces/interface={name}/state/counters":{"get":{"description":"A collection of interface-related statistics objects.","summary":"GET - Controller - openconfig-interfaces - counters","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_state_counters"}},"application/json":{"schema":{"properties":{"counters":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_state_counters","type":"object"}}}}}}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-interfaces:interfaces/interface={name}/hold-time":{"post":{"description":"Top-level container for hold-time settings to enable\ndampening advertisements of interface transitions.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-interfaces - hold-time","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"put":{"description":"Top-level container for hold-time settings to enable\ndampening advertisements of interface transitions.","summary":"PUT - openconfig-interfaces - Controller - hold-time","requestBody":{"description":"hold-time","content":{"application/json":{"schema":{"properties":{"openconfig-interfaces:hold-time":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"patch":{"description":"Top-level container for hold-time settings to enable\ndampening advertisements of interface transitions.","summary":"PATCH - openconfig-interfaces - Controller - hold-time","requestBody":{"description":"hold-time","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-interfaces:hold-time":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"delete":{"description":"Top-level container for hold-time settings to enable\ndampening advertisements of interface transitions.","summary":"DELETE - Controller - openconfig-interfaces - hold-time","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"get":{"description":"Top-level container for hold-time settings to enable\ndampening advertisements of interface transitions.","summary":"GET - Controller - openconfig-interfaces - hold-time","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time"}},"application/json":{"schema":{"properties":{"hold-time":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time","type":"object"}}}}}}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-interfaces:interfaces/interface={name}/hold-time/config":{"put":{"description":"Configuration data for interface hold-time settings.","summary":"PUT - openconfig-interfaces - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-interfaces:config":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"patch":{"description":"Configuration data for interface hold-time settings.","summary":"PATCH - openconfig-interfaces - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-interfaces:config":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"delete":{"description":"Configuration data for interface hold-time settings.","summary":"DELETE - Controller - openconfig-interfaces - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"get":{"description":"Configuration data for interface hold-time settings.","summary":"GET - Controller - openconfig-interfaces - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time_config","type":"object"}}}}}}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-interfaces:interfaces/interface={name}/hold-time/state":{"get":{"description":"Operational state data for interface hold-time.","summary":"GET - Controller - openconfig-interfaces - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time_state","type":"object"}}}}}}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-interfaces:interfaces/interface={name}/subinterfaces":{"post":{"description":"Enclosing container for the list of subinterfaces associated\nwith a physical interface\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-interfaces - subinterfaces","requestBody":{"description":"subinterface","content":{"application/json":{"schema":{"properties":{"subinterface":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"put":{"description":"Enclosing container for the list of subinterfaces associated\nwith a physical interface","summary":"PUT - openconfig-interfaces - Controller - subinterfaces","requestBody":{"description":"subinterfaces","content":{"application/json":{"schema":{"properties":{"openconfig-interfaces:subinterfaces":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"patch":{"description":"Enclosing container for the list of subinterfaces associated\nwith a physical interface","summary":"PATCH - openconfig-interfaces - Controller - subinterfaces","requestBody":{"description":"subinterfaces","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-interfaces:subinterfaces":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"delete":{"description":"Enclosing container for the list of subinterfaces associated\nwith a physical interface","summary":"DELETE - Controller - openconfig-interfaces - subinterfaces","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"}]},"get":{"description":"Enclosing container for the list of subinterfaces associated\nwith a physical interface","summary":"GET - Controller - openconfig-interfaces - subinterfaces","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces"}},"application/json":{"schema":{"properties":{"subinterfaces":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces","type":"object"}}}}}}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-interfaces:interfaces/interface={name}/subinterfaces/subinterface={index}":{"put":{"description":"The list of subinterfaces (logical interfaces) associated\nwith a physical interface","summary":"PUT - openconfig-interfaces - Controller - subinterface","requestBody":{"description":"subinterface","content":{"application/json":{"schema":{"properties":{"openconfig-interfaces:subinterface":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"index","in":"path","required":true,"schema":{"type":"string"},"description":"The index number of the subinterface -- used to address\nthe logical interface"}]},"patch":{"description":"The list of subinterfaces (logical interfaces) associated\nwith a physical interface","summary":"PATCH - openconfig-interfaces - Controller - subinterface","requestBody":{"description":"subinterface","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-interfaces:subinterface":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"index","in":"path","required":true,"schema":{"type":"string"},"description":"The index number of the subinterface -- used to address\nthe logical interface"}]},"delete":{"description":"The list of subinterfaces (logical interfaces) associated\nwith a physical interface","summary":"DELETE - Controller - openconfig-interfaces - subinterface","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"index","in":"path","required":true,"schema":{"type":"string"},"description":"The index number of the subinterface -- used to address\nthe logical interface"}]},"get":{"description":"The list of subinterfaces (logical interfaces) associated\nwith a physical interface","summary":"GET - Controller - openconfig-interfaces - subinterface","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface"}},"application/json":{"schema":{"properties":{"subinterface":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface","type":"object"}}}}}}}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"index","in":"path","required":true,"schema":{"type":"string"},"description":"The index number of the subinterface -- used to address\nthe logical interface"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-interfaces:interfaces/interface={name}/subinterfaces/subinterface={index}/config":{"put":{"description":"Configurable items at the subinterface level","summary":"PUT - openconfig-interfaces - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-interfaces:config":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"index","in":"path","required":true,"schema":{"type":"string"},"description":"The index number of the subinterface -- used to address\nthe logical interface"}]},"patch":{"description":"Configurable items at the subinterface level","summary":"PATCH - openconfig-interfaces - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-interfaces:config":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"index","in":"path","required":true,"schema":{"type":"string"},"description":"The index number of the subinterface -- used to address\nthe logical interface"}]},"delete":{"description":"Configurable items at the subinterface level","summary":"DELETE - Controller - openconfig-interfaces - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"index","in":"path","required":true,"schema":{"type":"string"},"description":"The index number of the subinterface -- used to address\nthe logical interface"}]},"get":{"description":"Configurable items at the subinterface level","summary":"GET - Controller - openconfig-interfaces - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_config","type":"object"}}}}}}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"index","in":"path","required":true,"schema":{"type":"string"},"description":"The index number of the subinterface -- used to address\nthe logical interface"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-interfaces:interfaces/interface={name}/subinterfaces/subinterface={index}/state":{"get":{"description":"Operational state data for logical interfaces","summary":"GET - Controller - openconfig-interfaces - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_state","type":"object"}}}}}}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"index","in":"path","required":true,"schema":{"type":"string"},"description":"The index number of the subinterface -- used to address\nthe logical interface"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-interfaces:interfaces/interface={name}/subinterfaces/subinterface={index}/state/counters":{"get":{"description":"A collection of interface-related statistics objects.","summary":"GET - Controller - openconfig-interfaces - counters","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_state_counters"}},"application/json":{"schema":{"properties":{"counters":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_state_counters","type":"object"}}}}}}},"tags":["Controller openconfig-interfaces"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"References the configured name of the interface"},{"name":"index","in":"path","required":true,"schema":{"type":"string"},"description":"The index number of the subinterface -- used to address\nthe logical interface"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-local-routing:local-routes":{"post":{"description":"Top-level container for local routes\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-local-routing - local-routes","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"put":{"description":"Top-level container for local routes","summary":"PUT - openconfig-local-routing - Controller - local-routes","requestBody":{"description":"local-routes","content":{"application/json":{"schema":{"properties":{"openconfig-local-routing:local-routes":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"patch":{"description":"Top-level container for local routes","summary":"PATCH - openconfig-local-routing - Controller - local-routes","requestBody":{"description":"local-routes","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-local-routing:local-routes":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"delete":{"description":"Top-level container for local routes","summary":"DELETE - Controller - openconfig-local-routing - local-routes","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"get":{"description":"Top-level container for local routes","summary":"GET - Controller - openconfig-local-routing - local-routes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes"}},"application/json":{"schema":{"properties":{"local-routes":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes","type":"object"}}}}}}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-local-routing:local-routes/config":{"put":{"description":"Configuration data for locally defined routes","summary":"PUT - openconfig-local-routing - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-local-routing:config":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"patch":{"description":"Configuration data for locally defined routes","summary":"PATCH - openconfig-local-routing - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-local-routing:config":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"delete":{"description":"Configuration data for locally defined routes","summary":"DELETE - Controller - openconfig-local-routing - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"get":{"description":"Configuration data for locally defined routes","summary":"GET - Controller - openconfig-local-routing - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_config","type":"object"}}}}}}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-local-routing:local-routes/state":{"get":{"description":"Operational state data for locally defined routes","summary":"GET - Controller - openconfig-local-routing - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_state","type":"object"}}}}}}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-local-routing:local-routes/static-routes":{"post":{"description":"Enclosing container for the list of static routes\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-local-routing - static-routes","requestBody":{"description":"static","content":{"application/json":{"schema":{"properties":{"static":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"put":{"description":"Enclosing container for the list of static routes","summary":"PUT - openconfig-local-routing - Controller - static-routes","requestBody":{"description":"static-routes","content":{"application/json":{"schema":{"properties":{"openconfig-local-routing:static-routes":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"patch":{"description":"Enclosing container for the list of static routes","summary":"PATCH - openconfig-local-routing - Controller - static-routes","requestBody":{"description":"static-routes","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-local-routing:static-routes":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"delete":{"description":"Enclosing container for the list of static routes","summary":"DELETE - Controller - openconfig-local-routing - static-routes","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"get":{"description":"Enclosing container for the list of static routes","summary":"GET - Controller - openconfig-local-routing - static-routes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes"}},"application/json":{"schema":{"properties":{"static-routes":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes","type":"object"}}}}}}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-local-routing:local-routes/static-routes/static={prefix}":{"put":{"description":"List of locally configured static routes","summary":"PUT - openconfig-local-routing - Controller - static","requestBody":{"description":"static","content":{"application/json":{"schema":{"properties":{"openconfig-local-routing:static":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"}]},"patch":{"description":"List of locally configured static routes","summary":"PATCH - openconfig-local-routing - Controller - static","requestBody":{"description":"static","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-local-routing:static":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"}]},"delete":{"description":"List of locally configured static routes","summary":"DELETE - Controller - openconfig-local-routing - static","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"}]},"get":{"description":"List of locally configured static routes","summary":"GET - Controller - openconfig-local-routing - static","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static"}},"application/json":{"schema":{"properties":{"static":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static","type":"object"}}}}}}}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-local-routing:local-routes/static-routes/static={prefix}/config":{"put":{"description":"Configuration data for static routes","summary":"PUT - openconfig-local-routing - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-local-routing:config":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"}]},"patch":{"description":"Configuration data for static routes","summary":"PATCH - openconfig-local-routing - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-local-routing:config":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"}]},"delete":{"description":"Configuration data for static routes","summary":"DELETE - Controller - openconfig-local-routing - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"}]},"get":{"description":"Configuration data for static routes","summary":"GET - Controller - openconfig-local-routing - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static_config","type":"object"}}}}}}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-local-routing:local-routes/static-routes/static={prefix}/state":{"get":{"description":"Operational state data for static routes","summary":"GET - Controller - openconfig-local-routing - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static_state","type":"object"}}}}}}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-local-routing:local-routes/local-aggregates":{"post":{"description":"Enclosing container for locally-defined aggregate\nroutes\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-local-routing - local-aggregates","requestBody":{"description":"aggregate","content":{"application/json":{"schema":{"properties":{"aggregate":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"put":{"description":"Enclosing container for locally-defined aggregate\nroutes","summary":"PUT - openconfig-local-routing - Controller - local-aggregates","requestBody":{"description":"local-aggregates","content":{"application/json":{"schema":{"properties":{"openconfig-local-routing:local-aggregates":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"patch":{"description":"Enclosing container for locally-defined aggregate\nroutes","summary":"PATCH - openconfig-local-routing - Controller - local-aggregates","requestBody":{"description":"local-aggregates","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-local-routing:local-aggregates":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"delete":{"description":"Enclosing container for locally-defined aggregate\nroutes","summary":"DELETE - Controller - openconfig-local-routing - local-aggregates","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-local-routing"],"parameters":[]},"get":{"description":"Enclosing container for locally-defined aggregate\nroutes","summary":"GET - Controller - openconfig-local-routing - local-aggregates","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates"}},"application/json":{"schema":{"properties":{"local-aggregates":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates","type":"object"}}}}}}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-local-routing:local-routes/local-aggregates/aggregate={prefix}":{"put":{"description":"List of aggregates","summary":"PUT - openconfig-local-routing - Controller - aggregate","requestBody":{"description":"aggregate","content":{"application/json":{"schema":{"properties":{"openconfig-local-routing:aggregate":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"}]},"patch":{"description":"List of aggregates","summary":"PATCH - openconfig-local-routing - Controller - aggregate","requestBody":{"description":"aggregate","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-local-routing:aggregate":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"}]},"delete":{"description":"List of aggregates","summary":"DELETE - Controller - openconfig-local-routing - aggregate","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"}]},"get":{"description":"List of aggregates","summary":"GET - Controller - openconfig-local-routing - aggregate","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate"}},"application/json":{"schema":{"properties":{"aggregate":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate","type":"object"}}}}}}}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-local-routing:local-routes/local-aggregates/aggregate={prefix}/config":{"put":{"description":"Configuration data for aggregate advertisements","summary":"PUT - openconfig-local-routing - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-local-routing:config":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"}]},"patch":{"description":"Configuration data for aggregate advertisements","summary":"PATCH - openconfig-local-routing - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-local-routing:config":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"}]},"delete":{"description":"Configuration data for aggregate advertisements","summary":"DELETE - Controller - openconfig-local-routing - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"}]},"get":{"description":"Configuration data for aggregate advertisements","summary":"GET - Controller - openconfig-local-routing - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate_config","type":"object"}}}}}}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-local-routing:local-routes/local-aggregates/aggregate={prefix}/state":{"get":{"description":"Operational state data for aggregate\nadvertisements","summary":"GET - Controller - openconfig-local-routing - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate_state","type":"object"}}}}}}},"tags":["Controller openconfig-local-routing"],"parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances":{"post":{"description":"The L2, L3, or L2+L3 forwarding instances that are\nconfigured on the local system\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - network-instances","requestBody":{"description":"network-instance","content":{"application/json":{"schema":{"properties":{"network-instance":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[]},"put":{"description":"The L2, L3, or L2+L3 forwarding instances that are\nconfigured on the local system","summary":"PUT - openconfig-network-instance - Controller - network-instances","requestBody":{"description":"network-instances","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:network-instances":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[]},"patch":{"description":"The L2, L3, or L2+L3 forwarding instances that are\nconfigured on the local system","summary":"PATCH - openconfig-network-instance - Controller - network-instances","requestBody":{"description":"network-instances","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:network-instances":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[]},"delete":{"description":"The L2, L3, or L2+L3 forwarding instances that are\nconfigured on the local system","summary":"DELETE - Controller - openconfig-network-instance - network-instances","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[]},"get":{"description":"The L2, L3, or L2+L3 forwarding instances that are\nconfigured on the local system","summary":"GET - Controller - openconfig-network-instance - network-instances","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances"}},"application/json":{"schema":{"properties":{"network-instances":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}":{"put":{"description":"Network instances configured on the local system","summary":"PUT - openconfig-network-instance - Controller - network-instance","requestBody":{"description":"network-instance","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:network-instance":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"patch":{"description":"Network instances configured on the local system","summary":"PATCH - openconfig-network-instance - Controller - network-instance","requestBody":{"description":"network-instance","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:network-instance":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"delete":{"description":"Network instances configured on the local system","summary":"DELETE - Controller - openconfig-network-instance - network-instance","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"get":{"description":"Network instances configured on the local system","summary":"GET - Controller - openconfig-network-instance - network-instance","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance"}},"application/json":{"schema":{"properties":{"network-instance":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance","type":"object"}}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/config":{"put":{"description":"Configuration parameters relating to a network\ninstance","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"patch":{"description":"Configuration parameters relating to a network\ninstance","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"delete":{"description":"Configuration parameters relating to a network\ninstance","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"get":{"description":"Configuration parameters relating to a network\ninstance","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/state":{"get":{"description":"Operational state parameters relating to a network\ninstance","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/inter-instance-policies":{"post":{"description":"Policies dictating how RIB or FIB entries are imported\nto and exported from this instance\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - inter-instance-policies","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"put":{"description":"Policies dictating how RIB or FIB entries are imported\nto and exported from this instance","summary":"PUT - openconfig-network-instance - Controller - inter-instance-policies","requestBody":{"description":"inter-instance-policies","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:inter-instance-policies":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"patch":{"description":"Policies dictating how RIB or FIB entries are imported\nto and exported from this instance","summary":"PATCH - openconfig-network-instance - Controller - inter-instance-policies","requestBody":{"description":"inter-instance-policies","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:inter-instance-policies":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"delete":{"description":"Policies dictating how RIB or FIB entries are imported\nto and exported from this instance","summary":"DELETE - Controller - openconfig-network-instance - inter-instance-policies","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"get":{"description":"Policies dictating how RIB or FIB entries are imported\nto and exported from this instance","summary":"GET - Controller - openconfig-network-instance - inter-instance-policies","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies"}},"application/json":{"schema":{"properties":{"inter-instance-policies":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/inter-instance-policies/apply-policy":{"post":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - apply-policy","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"put":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PUT - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"patch":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PATCH - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"delete":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"DELETE - Controller - openconfig-network-instance - apply-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"get":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"GET - Controller - openconfig-network-instance - apply-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy"}},"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/inter-instance-policies/apply-policy/config":{"put":{"description":"Policy configuration data.","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"patch":{"description":"Policy configuration data.","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"delete":{"description":"Policy configuration data.","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"get":{"description":"Policy configuration data.","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/inter-instance-policies/apply-policy/state":{"get":{"description":"Operational state for routing policy","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/table-connections":{"post":{"description":"Policies dictating how RIB or FIB entries are propagated\nbetween tables\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - table-connections","requestBody":{"description":"table-connection","content":{"application/json":{"schema":{"properties":{"table-connection":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"put":{"description":"Policies dictating how RIB or FIB entries are propagated\nbetween tables","summary":"PUT - openconfig-network-instance - Controller - table-connections","requestBody":{"description":"table-connections","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:table-connections":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"patch":{"description":"Policies dictating how RIB or FIB entries are propagated\nbetween tables","summary":"PATCH - openconfig-network-instance - Controller - table-connections","requestBody":{"description":"table-connections","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:table-connections":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"delete":{"description":"Policies dictating how RIB or FIB entries are propagated\nbetween tables","summary":"DELETE - Controller - openconfig-network-instance - table-connections","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"get":{"description":"Policies dictating how RIB or FIB entries are propagated\nbetween tables","summary":"GET - Controller - openconfig-network-instance - table-connections","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections"}},"application/json":{"schema":{"properties":{"table-connections":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/table-connections/table-connection={src-table},{dst-table}":{"put":{"description":"A list of connections between pairs of routing or\nforwarding tables, the leaking of entries between\nwhich is specified by the import and export policy","summary":"PUT - openconfig-network-instance - Controller - table-connection","requestBody":{"description":"table-connection","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:table-connection":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"}]},"patch":{"description":"A list of connections between pairs of routing or\nforwarding tables, the leaking of entries between\nwhich is specified by the import and export policy","summary":"PATCH - openconfig-network-instance - Controller - table-connection","requestBody":{"description":"table-connection","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:table-connection":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"}]},"delete":{"description":"A list of connections between pairs of routing or\nforwarding tables, the leaking of entries between\nwhich is specified by the import and export policy","summary":"DELETE - Controller - openconfig-network-instance - table-connection","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"}]},"get":{"description":"A list of connections between pairs of routing or\nforwarding tables, the leaking of entries between\nwhich is specified by the import and export policy","summary":"GET - Controller - openconfig-network-instance - table-connection","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection"}},"application/json":{"schema":{"properties":{"table-connection":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection","type":"object"}}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/table-connections/table-connection={src-table},{dst-table}/config":{"put":{"description":"Configuration parameters relating to the connection\nbetween tables","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"}]},"patch":{"description":"Configuration parameters relating to the connection\nbetween tables","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"}]},"delete":{"description":"Configuration parameters relating to the connection\nbetween tables","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"}]},"get":{"description":"Configuration parameters relating to the connection\nbetween tables","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/table-connections/table-connection={src-table},{dst-table}/state":{"get":{"description":"State parameters relating to the connection between\ntables","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/table-connections/table-connection={src-table},{dst-table}/apply-policy":{"post":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - apply-policy","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"}]},"put":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PUT - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"}]},"patch":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PATCH - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"}]},"delete":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"DELETE - Controller - openconfig-network-instance - apply-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"}]},"get":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"GET - Controller - openconfig-network-instance - apply-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy"}},"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/table-connections/table-connection={src-table},{dst-table}/apply-policy/config":{"put":{"description":"Policy configuration data.","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"}]},"patch":{"description":"Policy configuration data.","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"}]},"delete":{"description":"Policy configuration data.","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"}]},"get":{"description":"Policy configuration data.","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/table-connections/table-connection={src-table},{dst-table}/apply-policy/state":{"get":{"description":"Operational state for routing policy","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"src-table","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the table which should be utilised\nas the source of forwarding or routing information"},{"name":"dst-table","in":"path","required":true,"schema":{"type":"string"},"description":"The table to which routing entries should be\nexported"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/tables":{"post":{"description":"The routing tables that are managed by this network\ninstance\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - tables","requestBody":{"description":"table","content":{"application/json":{"schema":{"properties":{"table":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"put":{"description":"The routing tables that are managed by this network\ninstance","summary":"PUT - openconfig-network-instance - Controller - tables","requestBody":{"description":"tables","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:tables":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"patch":{"description":"The routing tables that are managed by this network\ninstance","summary":"PATCH - openconfig-network-instance - Controller - tables","requestBody":{"description":"tables","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:tables":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"delete":{"description":"The routing tables that are managed by this network\ninstance","summary":"DELETE - Controller - openconfig-network-instance - tables","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"get":{"description":"The routing tables that are managed by this network\ninstance","summary":"GET - Controller - openconfig-network-instance - tables","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables"}},"application/json":{"schema":{"properties":{"tables":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/tables/table={table-name}":{"put":{"description":"A network instance manages one or more forwarding or\nrouting tables. These may reflect the Layer 2\nforwarding information base, the Layer 3 routing\ninformation base of the MPLS LFIB. Protocols may be\nexplictly associated with a particular table into\nwhich they populate entries. Multiple protocols may\ninstall entries into a single table, or there may be a\n1:1 relationship between a routing protocol and a\ntable .The import-policy and export-policy lists are\nused to specify how routes leak between different\ntables within the same forwarding instance.","summary":"PUT - openconfig-network-instance - Controller - table","requestBody":{"description":"table","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:table":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"table-name","in":"path","required":true,"schema":{"type":"string"},"description":"A name for the table"}]},"patch":{"description":"A network instance manages one or more forwarding or\nrouting tables. These may reflect the Layer 2\nforwarding information base, the Layer 3 routing\ninformation base of the MPLS LFIB. Protocols may be\nexplictly associated with a particular table into\nwhich they populate entries. Multiple protocols may\ninstall entries into a single table, or there may be a\n1:1 relationship between a routing protocol and a\ntable .The import-policy and export-policy lists are\nused to specify how routes leak between different\ntables within the same forwarding instance.","summary":"PATCH - openconfig-network-instance - Controller - table","requestBody":{"description":"table","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:table":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"table-name","in":"path","required":true,"schema":{"type":"string"},"description":"A name for the table"}]},"delete":{"description":"A network instance manages one or more forwarding or\nrouting tables. These may reflect the Layer 2\nforwarding information base, the Layer 3 routing\ninformation base of the MPLS LFIB. Protocols may be\nexplictly associated with a particular table into\nwhich they populate entries. Multiple protocols may\ninstall entries into a single table, or there may be a\n1:1 relationship between a routing protocol and a\ntable .The import-policy and export-policy lists are\nused to specify how routes leak between different\ntables within the same forwarding instance.","summary":"DELETE - Controller - openconfig-network-instance - table","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"table-name","in":"path","required":true,"schema":{"type":"string"},"description":"A name for the table"}]},"get":{"description":"A network instance manages one or more forwarding or\nrouting tables. These may reflect the Layer 2\nforwarding information base, the Layer 3 routing\ninformation base of the MPLS LFIB. Protocols may be\nexplictly associated with a particular table into\nwhich they populate entries. Multiple protocols may\ninstall entries into a single table, or there may be a\n1:1 relationship between a routing protocol and a\ntable .The import-policy and export-policy lists are\nused to specify how routes leak between different\ntables within the same forwarding instance.","summary":"GET - Controller - openconfig-network-instance - table","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table"}},"application/json":{"schema":{"properties":{"table":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table","type":"object"}}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"table-name","in":"path","required":true,"schema":{"type":"string"},"description":"A name for the table"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/tables/table={table-name}/config":{"put":{"description":"Configuration parameters related to the table","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"table-name","in":"path","required":true,"schema":{"type":"string"},"description":"A name for the table"}]},"patch":{"description":"Configuration parameters related to the table","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"table-name","in":"path","required":true,"schema":{"type":"string"},"description":"A name for the table"}]},"delete":{"description":"Configuration parameters related to the table","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"table-name","in":"path","required":true,"schema":{"type":"string"},"description":"A name for the table"}]},"get":{"description":"Configuration parameters related to the table","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"table-name","in":"path","required":true,"schema":{"type":"string"},"description":"A name for the table"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/tables/table={table-name}/state":{"get":{"description":"State parameters related to the table","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"table-name","in":"path","required":true,"schema":{"type":"string"},"description":"A name for the table"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/interfaces":{"post":{"description":"Interfaces associated with this network intance\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - interfaces","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"put":{"description":"Interfaces associated with this network intance","summary":"PUT - openconfig-network-instance - Controller - interfaces","requestBody":{"description":"interfaces","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:interfaces":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"patch":{"description":"Interfaces associated with this network intance","summary":"PATCH - openconfig-network-instance - Controller - interfaces","requestBody":{"description":"interfaces","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:interfaces":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"delete":{"description":"Interfaces associated with this network intance","summary":"DELETE - Controller - openconfig-network-instance - interfaces","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"get":{"description":"Interfaces associated with this network intance","summary":"GET - Controller - openconfig-network-instance - interfaces","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces"}},"application/json":{"schema":{"properties":{"interfaces":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/interfaces/config":{"put":{"description":"Configuration parameters relating to interfaces\nassociated with the instance","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"patch":{"description":"Configuration parameters relating to interfaces\nassociated with the instance","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"delete":{"description":"Configuration parameters relating to interfaces\nassociated with the instance","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"get":{"description":"Configuration parameters relating to interfaces\nassociated with the instance","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/interfaces/state":{"get":{"description":"State parameters relating to interfaces associated\nwith the instance","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/connection-points":{"post":{"description":"The set of connection points within a forwarding\ninstance\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - connection-points","requestBody":{"description":"connection-point","content":{"application/json":{"schema":{"properties":{"connection-point":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"put":{"description":"The set of connection points within a forwarding\ninstance","summary":"PUT - openconfig-network-instance - Controller - connection-points","requestBody":{"description":"connection-points","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:connection-points":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"patch":{"description":"The set of connection points within a forwarding\ninstance","summary":"PATCH - openconfig-network-instance - Controller - connection-points","requestBody":{"description":"connection-points","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:connection-points":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"delete":{"description":"The set of connection points within a forwarding\ninstance","summary":"DELETE - Controller - openconfig-network-instance - connection-points","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"get":{"description":"The set of connection points within a forwarding\ninstance","summary":"GET - Controller - openconfig-network-instance - connection-points","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points"}},"application/json":{"schema":{"properties":{"connection-points":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/connection-points/connection-point={connection-point-id}":{"put":{"description":"A connection point within a Layer 2 network instance.\nEach connection-point consists of a set of interfaces\nonly one of which is active at any one time. Other than\nthe specification of whether an interface is local\n(i.e., exists within this network-instance), or remote,\nall configuration and state parameters are common","summary":"PUT - openconfig-network-instance - Controller - connection-point","requestBody":{"description":"connection-point","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:connection-point":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"}]},"patch":{"description":"A connection point within a Layer 2 network instance.\nEach connection-point consists of a set of interfaces\nonly one of which is active at any one time. Other than\nthe specification of whether an interface is local\n(i.e., exists within this network-instance), or remote,\nall configuration and state parameters are common","summary":"PATCH - openconfig-network-instance - Controller - connection-point","requestBody":{"description":"connection-point","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:connection-point":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"}]},"delete":{"description":"A connection point within a Layer 2 network instance.\nEach connection-point consists of a set of interfaces\nonly one of which is active at any one time. Other than\nthe specification of whether an interface is local\n(i.e., exists within this network-instance), or remote,\nall configuration and state parameters are common","summary":"DELETE - Controller - openconfig-network-instance - connection-point","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"}]},"get":{"description":"A connection point within a Layer 2 network instance.\nEach connection-point consists of a set of interfaces\nonly one of which is active at any one time. Other than\nthe specification of whether an interface is local\n(i.e., exists within this network-instance), or remote,\nall configuration and state parameters are common","summary":"GET - Controller - openconfig-network-instance - connection-point","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point"}},"application/json":{"schema":{"properties":{"connection-point":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point","type":"object"}}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/connection-points/connection-point={connection-point-id}/config":{"put":{"description":"Configuration parameters relating to a Layer 2\nnetwork instance connection point","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"}]},"patch":{"description":"Configuration parameters relating to a Layer 2\nnetwork instance connection point","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"}]},"delete":{"description":"Configuration parameters relating to a Layer 2\nnetwork instance connection point","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"}]},"get":{"description":"Configuration parameters relating to a Layer 2\nnetwork instance connection point","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/connection-points/connection-point={connection-point-id}/state":{"get":{"description":"Operational state parameters relating to a Layer 2\nnetwork instance connection point","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/connection-points/connection-point={connection-point-id}/endpoints":{"post":{"description":"The set of endpoints which are grouped within the\nconnection point\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - endpoints","requestBody":{"description":"endpoint","content":{"application/json":{"schema":{"properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"}]},"put":{"description":"The set of endpoints which are grouped within the\nconnection point","summary":"PUT - openconfig-network-instance - Controller - endpoints","requestBody":{"description":"endpoints","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:endpoints":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"}]},"patch":{"description":"The set of endpoints which are grouped within the\nconnection point","summary":"PATCH - openconfig-network-instance - Controller - endpoints","requestBody":{"description":"endpoints","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:endpoints":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"}]},"delete":{"description":"The set of endpoints which are grouped within the\nconnection point","summary":"DELETE - Controller - openconfig-network-instance - endpoints","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"}]},"get":{"description":"The set of endpoints which are grouped within the\nconnection point","summary":"GET - Controller - openconfig-network-instance - endpoints","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints"}},"application/json":{"schema":{"properties":{"endpoints":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/connection-points/connection-point={connection-point-id}/endpoints/endpoint={endpoint-id}":{"put":{"description":"A list of the endpoints (interfaces or remote\nconnection points that can be used for this\nconnection point). The active endpoint is selected\nbased on the precedence that it is configured\nwith","summary":"PUT - openconfig-network-instance - Controller - endpoint","requestBody":{"description":"endpoint","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:endpoint":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"},{"name":"endpoint-id","in":"path","required":true,"schema":{"type":"string"},"description":"A pointer to the configured identifier for the\nendpoint"}]},"patch":{"description":"A list of the endpoints (interfaces or remote\nconnection points that can be used for this\nconnection point). The active endpoint is selected\nbased on the precedence that it is configured\nwith","summary":"PATCH - openconfig-network-instance - Controller - endpoint","requestBody":{"description":"endpoint","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:endpoint":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"},{"name":"endpoint-id","in":"path","required":true,"schema":{"type":"string"},"description":"A pointer to the configured identifier for the\nendpoint"}]},"delete":{"description":"A list of the endpoints (interfaces or remote\nconnection points that can be used for this\nconnection point). The active endpoint is selected\nbased on the precedence that it is configured\nwith","summary":"DELETE - Controller - openconfig-network-instance - endpoint","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"},{"name":"endpoint-id","in":"path","required":true,"schema":{"type":"string"},"description":"A pointer to the configured identifier for the\nendpoint"}]},"get":{"description":"A list of the endpoints (interfaces or remote\nconnection points that can be used for this\nconnection point). The active endpoint is selected\nbased on the precedence that it is configured\nwith","summary":"GET - Controller - openconfig-network-instance - endpoint","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint"}},"application/json":{"schema":{"properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint","type":"object"}}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"},{"name":"endpoint-id","in":"path","required":true,"schema":{"type":"string"},"description":"A pointer to the configured identifier for the\nendpoint"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/connection-points/connection-point={connection-point-id}/endpoints/endpoint={endpoint-id}/config":{"put":{"description":"Configuration parameters relating to the\nendpoint","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"},{"name":"endpoint-id","in":"path","required":true,"schema":{"type":"string"},"description":"A pointer to the configured identifier for the\nendpoint"}]},"patch":{"description":"Configuration parameters relating to the\nendpoint","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"},{"name":"endpoint-id","in":"path","required":true,"schema":{"type":"string"},"description":"A pointer to the configured identifier for the\nendpoint"}]},"delete":{"description":"Configuration parameters relating to the\nendpoint","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"},{"name":"endpoint-id","in":"path","required":true,"schema":{"type":"string"},"description":"A pointer to the configured identifier for the\nendpoint"}]},"get":{"description":"Configuration parameters relating to the\nendpoint","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"},{"name":"endpoint-id","in":"path","required":true,"schema":{"type":"string"},"description":"A pointer to the configured identifier for the\nendpoint"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/connection-points/connection-point={connection-point-id}/endpoints/endpoint={endpoint-id}/state":{"get":{"description":"Operational state parameters relating to the\nendpoint","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"connection-point-id","in":"path","required":true,"schema":{"type":"string"},"description":"A locally significant reference for the\nconnection-point"},{"name":"endpoint-id","in":"path","required":true,"schema":{"type":"string"},"description":"A pointer to the configured identifier for the\nendpoint"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols":{"post":{"description":"The routing protocols that are enabled for this\nnetwork-instance.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - protocols","requestBody":{"description":"protocol","content":{"application/json":{"schema":{"properties":{"protocol":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"put":{"description":"The routing protocols that are enabled for this\nnetwork-instance.","summary":"PUT - openconfig-network-instance - Controller - protocols","requestBody":{"description":"protocols","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:protocols":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"patch":{"description":"The routing protocols that are enabled for this\nnetwork-instance.","summary":"PATCH - openconfig-network-instance - Controller - protocols","requestBody":{"description":"protocols","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:protocols":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"delete":{"description":"The routing protocols that are enabled for this\nnetwork-instance.","summary":"DELETE - Controller - openconfig-network-instance - protocols","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"}]},"get":{"description":"The routing protocols that are enabled for this\nnetwork-instance.","summary":"GET - Controller - openconfig-network-instance - protocols","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols"}},"application/json":{"schema":{"properties":{"protocols":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}":{"put":{"description":"A process (instance) of a routing protocol. Some\nsystems may not support more than one instance of\na particular routing protocol","summary":"PUT - openconfig-network-instance - Controller - protocol","requestBody":{"description":"protocol","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:protocol":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"A process (instance) of a routing protocol. Some\nsystems may not support more than one instance of\na particular routing protocol","summary":"PATCH - openconfig-network-instance - Controller - protocol","requestBody":{"description":"protocol","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:protocol":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"A process (instance) of a routing protocol. Some\nsystems may not support more than one instance of\na particular routing protocol","summary":"DELETE - Controller - openconfig-network-instance - protocol","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"A process (instance) of a routing protocol. Some\nsystems may not support more than one instance of\na particular routing protocol","summary":"GET - Controller - openconfig-network-instance - protocol","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol"}},"application/json":{"schema":{"properties":{"protocol":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol","type":"object"}}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/config":{"put":{"description":"Configuration parameters relating to the routing\nprotocol instance","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Configuration parameters relating to the routing\nprotocol instance","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Configuration parameters relating to the routing\nprotocol instance","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Configuration parameters relating to the routing\nprotocol instance","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/state":{"get":{"description":"State parameters relating to the routing protocol\ninstance","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/static":{"post":{"description":"Configuration and state parameters relating to\nstatic routes\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - static","requestBody":{"description":"static-routes","content":{"application/json":{"schema":{"properties":{"static-routes":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Configuration and state parameters relating to\nstatic routes","summary":"PUT - openconfig-network-instance - Controller - static","requestBody":{"description":"static","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:static":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Configuration and state parameters relating to\nstatic routes","summary":"PATCH - openconfig-network-instance - Controller - static","requestBody":{"description":"static","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:static":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Configuration and state parameters relating to\nstatic routes","summary":"DELETE - Controller - openconfig-network-instance - static","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Configuration and state parameters relating to\nstatic routes","summary":"GET - Controller - openconfig-network-instance - static","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static"}},"application/json":{"schema":{"properties":{"static":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/static/static-routes":{"post":{"description":"Enclosing container for the list of static routes\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - static-routes","requestBody":{"description":"static","content":{"application/json":{"schema":{"properties":{"static":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Enclosing container for the list of static routes","summary":"PUT - openconfig-network-instance - Controller - static-routes","requestBody":{"description":"static-routes","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:static-routes":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Enclosing container for the list of static routes","summary":"PATCH - openconfig-network-instance - Controller - static-routes","requestBody":{"description":"static-routes","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:static-routes":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Enclosing container for the list of static routes","summary":"DELETE - Controller - openconfig-network-instance - static-routes","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Enclosing container for the list of static routes","summary":"GET - Controller - openconfig-network-instance - static-routes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes"}},"application/json":{"schema":{"properties":{"static-routes":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/static/static-routes/static={prefix}":{"put":{"description":"List of locally configured static routes","summary":"PUT - openconfig-network-instance - Controller - static","requestBody":{"description":"static","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:static":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"}]},"patch":{"description":"List of locally configured static routes","summary":"PATCH - openconfig-network-instance - Controller - static","requestBody":{"description":"static","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:static":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"}]},"delete":{"description":"List of locally configured static routes","summary":"DELETE - Controller - openconfig-network-instance - static","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"}]},"get":{"description":"List of locally configured static routes","summary":"GET - Controller - openconfig-network-instance - static","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static"}},"application/json":{"schema":{"properties":{"static":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static","type":"object"}}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/static/static-routes/static={prefix}/config":{"put":{"description":"Configuration data for static routes","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"}]},"patch":{"description":"Configuration data for static routes","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"}]},"delete":{"description":"Configuration data for static routes","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"}]},"get":{"description":"Configuration data for static routes","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/static/static-routes/static={prefix}/state":{"get":{"description":"Operational state data for static routes","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the destination prefix for the static\nroute"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/aggregate":{"post":{"description":"Configuration and state parameters relating to\nlocally generated aggregate routes\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - aggregate","requestBody":{"description":"local-aggregates","content":{"application/json":{"schema":{"properties":{"local-aggregates":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Configuration and state parameters relating to\nlocally generated aggregate routes","summary":"PUT - openconfig-network-instance - Controller - aggregate","requestBody":{"description":"aggregate","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:aggregate":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Configuration and state parameters relating to\nlocally generated aggregate routes","summary":"PATCH - openconfig-network-instance - Controller - aggregate","requestBody":{"description":"aggregate","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:aggregate":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Configuration and state parameters relating to\nlocally generated aggregate routes","summary":"DELETE - Controller - openconfig-network-instance - aggregate","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Configuration and state parameters relating to\nlocally generated aggregate routes","summary":"GET - Controller - openconfig-network-instance - aggregate","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate"}},"application/json":{"schema":{"properties":{"aggregate":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/aggregate/local-aggregates":{"post":{"description":"Enclosing container for locally-defined aggregate\nroutes\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - local-aggregates","requestBody":{"description":"aggregate","content":{"application/json":{"schema":{"properties":{"aggregate":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Enclosing container for locally-defined aggregate\nroutes","summary":"PUT - openconfig-network-instance - Controller - local-aggregates","requestBody":{"description":"local-aggregates","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:local-aggregates":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Enclosing container for locally-defined aggregate\nroutes","summary":"PATCH - openconfig-network-instance - Controller - local-aggregates","requestBody":{"description":"local-aggregates","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:local-aggregates":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Enclosing container for locally-defined aggregate\nroutes","summary":"DELETE - Controller - openconfig-network-instance - local-aggregates","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Enclosing container for locally-defined aggregate\nroutes","summary":"GET - Controller - openconfig-network-instance - local-aggregates","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates"}},"application/json":{"schema":{"properties":{"local-aggregates":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/aggregate/local-aggregates/aggregate={prefix}":{"put":{"description":"List of aggregates","summary":"PUT - openconfig-network-instance - Controller - aggregate","requestBody":{"description":"aggregate","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:aggregate":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"}]},"patch":{"description":"List of aggregates","summary":"PATCH - openconfig-network-instance - Controller - aggregate","requestBody":{"description":"aggregate","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:aggregate":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"}]},"delete":{"description":"List of aggregates","summary":"DELETE - Controller - openconfig-network-instance - aggregate","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"}]},"get":{"description":"List of aggregates","summary":"GET - Controller - openconfig-network-instance - aggregate","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate"}},"application/json":{"schema":{"properties":{"aggregate":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate","type":"object"}}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/aggregate/local-aggregates/aggregate={prefix}/config":{"put":{"description":"Configuration data for aggregate advertisements","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"}]},"patch":{"description":"Configuration data for aggregate advertisements","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-network-instance:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"}]},"delete":{"description":"Configuration data for aggregate advertisements","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"}]},"get":{"description":"Configuration data for aggregate advertisements","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/aggregate/local-aggregates/aggregate={prefix}/state":{"get":{"description":"Operational state data for aggregate\nadvertisements","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"prefix","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the configured prefix for this aggregate"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp":{"post":{"description":"Top-level configuration and state for the BGP router\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - bgp","requestBody":{"description":"global","content":{"application/json":{"schema":{"properties":{"global":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Top-level configuration and state for the BGP router","summary":"PUT - openconfig-network-instance - Controller - bgp","requestBody":{"description":"bgp","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:bgp":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Top-level configuration and state for the BGP router","summary":"PATCH - openconfig-network-instance - Controller - bgp","requestBody":{"description":"bgp","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:bgp":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Top-level configuration and state for the BGP router","summary":"DELETE - Controller - openconfig-network-instance - bgp","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Top-level configuration and state for the BGP router","summary":"GET - Controller - openconfig-network-instance - bgp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp"}},"application/json":{"schema":{"properties":{"bgp":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global":{"post":{"description":"Global configuration for the BGP router\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - global","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Global configuration for the BGP router","summary":"PUT - openconfig-network-instance - Controller - global","requestBody":{"description":"global","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:global":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Global configuration for the BGP router","summary":"PATCH - openconfig-network-instance - Controller - global","requestBody":{"description":"global","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:global":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Global configuration for the BGP router","summary":"DELETE - Controller - openconfig-network-instance - global","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Global configuration for the BGP router","summary":"GET - Controller - openconfig-network-instance - global","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global"}},"application/json":{"schema":{"properties":{"global":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/apply-policy":{"post":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - apply-policy","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PUT - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PATCH - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"DELETE - Controller - openconfig-network-instance - apply-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"GET - Controller - openconfig-network-instance - apply-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy"}},"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/apply-policy/config":{"put":{"description":"Policy configuration data.","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Policy configuration data.","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Policy configuration data.","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Policy configuration data.","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/apply-policy/state":{"get":{"description":"Operational state for routing policy","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/config":{"put":{"description":"Configuration parameters relating to the global BGP router","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Configuration parameters relating to the global BGP router","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Configuration parameters relating to the global BGP router","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Configuration parameters relating to the global BGP router","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/state":{"get":{"description":"State information relating to the global BGP router","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/default-route-distance":{"post":{"description":"Administrative distance (or preference) assigned to\nroutes received from different sources\n(external, internal, and local).\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - default-route-distance","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Administrative distance (or preference) assigned to\nroutes received from different sources\n(external, internal, and local).","summary":"PUT - openconfig-network-instance - Controller - default-route-distance","requestBody":{"description":"default-route-distance","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:default-route-distance":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Administrative distance (or preference) assigned to\nroutes received from different sources\n(external, internal, and local).","summary":"PATCH - openconfig-network-instance - Controller - default-route-distance","requestBody":{"description":"default-route-distance","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:default-route-distance":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Administrative distance (or preference) assigned to\nroutes received from different sources\n(external, internal, and local).","summary":"DELETE - Controller - openconfig-network-instance - default-route-distance","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Administrative distance (or preference) assigned to\nroutes received from different sources\n(external, internal, and local).","summary":"GET - Controller - openconfig-network-instance - default-route-distance","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance"}},"application/json":{"schema":{"properties":{"default-route-distance":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/default-route-distance/config":{"put":{"description":"Configuration parameters relating to the default route\ndistance","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Configuration parameters relating to the default route\ndistance","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Configuration parameters relating to the default route\ndistance","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Configuration parameters relating to the default route\ndistance","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/default-route-distance/state":{"get":{"description":"State information relating to the default route distance","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/confederation":{"post":{"description":"Parameters indicating whether the local system acts as part\nof a BGP confederation\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - confederation","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Parameters indicating whether the local system acts as part\nof a BGP confederation","summary":"PUT - openconfig-network-instance - Controller - confederation","requestBody":{"description":"confederation","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:confederation":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Parameters indicating whether the local system acts as part\nof a BGP confederation","summary":"PATCH - openconfig-network-instance - Controller - confederation","requestBody":{"description":"confederation","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:confederation":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Parameters indicating whether the local system acts as part\nof a BGP confederation","summary":"DELETE - Controller - openconfig-network-instance - confederation","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Parameters indicating whether the local system acts as part\nof a BGP confederation","summary":"GET - Controller - openconfig-network-instance - confederation","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation"}},"application/json":{"schema":{"properties":{"confederation":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/confederation/config":{"put":{"description":"Configuration parameters relating to BGP confederations","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Configuration parameters relating to BGP confederations","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Configuration parameters relating to BGP confederations","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Configuration parameters relating to BGP confederations","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/confederation/state":{"get":{"description":"State information relating to the BGP confederations","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis":{"post":{"description":"Address family specific configuration\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - afi-safis","requestBody":{"description":"afi-safi","content":{"application/json":{"schema":{"properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Address family specific configuration","summary":"PUT - openconfig-network-instance - Controller - afi-safis","requestBody":{"description":"afi-safis","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:afi-safis":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Address family specific configuration","summary":"PATCH - openconfig-network-instance - Controller - afi-safis","requestBody":{"description":"afi-safis","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:afi-safis":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Address family specific configuration","summary":"DELETE - Controller - openconfig-network-instance - afi-safis","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Address family specific configuration","summary":"GET - Controller - openconfig-network-instance - afi-safis","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis"}},"application/json":{"schema":{"properties":{"afi-safis":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}":{"put":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"PUT - openconfig-network-instance - Controller - afi-safi","requestBody":{"description":"afi-safi","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"PATCH - openconfig-network-instance - Controller - afi-safi","requestBody":{"description":"afi-safi","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"DELETE - Controller - openconfig-network-instance - afi-safi","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"GET - Controller - openconfig-network-instance - afi-safi","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi"}},"application/json":{"schema":{"properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi","type":"object"}}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/graceful-restart":{"post":{"description":"Parameters relating to BGP graceful-restart\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - graceful-restart","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Parameters relating to BGP graceful-restart","summary":"PUT - openconfig-network-instance - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Parameters relating to BGP graceful-restart","summary":"PATCH - openconfig-network-instance - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Parameters relating to BGP graceful-restart","summary":"DELETE - Controller - openconfig-network-instance - graceful-restart","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Parameters relating to BGP graceful-restart","summary":"GET - Controller - openconfig-network-instance - graceful-restart","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart"}},"application/json":{"schema":{"properties":{"graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/graceful-restart/config":{"put":{"description":"Configuration options for BGP graceful-restart","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration options for BGP graceful-restart","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration options for BGP graceful-restart","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration options for BGP graceful-restart","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/graceful-restart/state":{"get":{"description":"State information for BGP graceful-restart","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/config":{"put":{"description":"Configuration parameters for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/state":{"get":{"description":"State information relating to the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/apply-policy":{"post":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - apply-policy","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PUT - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PATCH - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"DELETE - Controller - openconfig-network-instance - apply-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"GET - Controller - openconfig-network-instance - apply-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy"}},"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/apply-policy/config":{"put":{"description":"Policy configuration data.","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Policy configuration data.","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Policy configuration data.","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Policy configuration data.","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/apply-policy/state":{"get":{"description":"Operational state for routing policy","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast":{"post":{"description":"IPv4 unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ipv4-unicast","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv4 unicast configuration options","summary":"PUT - openconfig-network-instance - Controller - ipv4-unicast","requestBody":{"description":"ipv4-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv4 unicast configuration options","summary":"PATCH - openconfig-network-instance - Controller - ipv4-unicast","requestBody":{"description":"ipv4-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv4 unicast configuration options","summary":"DELETE - Controller - openconfig-network-instance - ipv4-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv4 unicast configuration options","summary":"GET - Controller - openconfig-network-instance - ipv4-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast"}},"application/json":{"schema":{"properties":{"ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/config":{"put":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/state":{"get":{"description":"State information for common IPv4 and IPv6 unicast\nparameters","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast":{"post":{"description":"IPv6 unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ipv6-unicast","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv6 unicast configuration options","summary":"PUT - openconfig-network-instance - Controller - ipv6-unicast","requestBody":{"description":"ipv6-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv6 unicast configuration options","summary":"PATCH - openconfig-network-instance - Controller - ipv6-unicast","requestBody":{"description":"ipv6-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv6 unicast configuration options","summary":"DELETE - Controller - openconfig-network-instance - ipv6-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv6 unicast configuration options","summary":"GET - Controller - openconfig-network-instance - ipv6-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast"}},"application/json":{"schema":{"properties":{"ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/config":{"put":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/state":{"get":{"description":"State information for common IPv4 and IPv6 unicast\nparameters","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast":{"post":{"description":"IPv4 Labelled Unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ipv4-labelled-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv4 Labelled Unicast configuration options","summary":"PUT - openconfig-network-instance - Controller - ipv4-labelled-unicast","requestBody":{"description":"ipv4-labelled-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv4 Labelled Unicast configuration options","summary":"PATCH - openconfig-network-instance - Controller - ipv4-labelled-unicast","requestBody":{"description":"ipv4-labelled-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv4 Labelled Unicast configuration options","summary":"DELETE - Controller - openconfig-network-instance - ipv4-labelled-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv4 Labelled Unicast configuration options","summary":"GET - Controller - openconfig-network-instance - ipv4-labelled-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast"}},"application/json":{"schema":{"properties":{"ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast":{"post":{"description":"IPv6 Labelled Unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ipv6-labelled-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv6 Labelled Unicast configuration options","summary":"PUT - openconfig-network-instance - Controller - ipv6-labelled-unicast","requestBody":{"description":"ipv6-labelled-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv6 Labelled Unicast configuration options","summary":"PATCH - openconfig-network-instance - Controller - ipv6-labelled-unicast","requestBody":{"description":"ipv6-labelled-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv6 Labelled Unicast configuration options","summary":"DELETE - Controller - openconfig-network-instance - ipv6-labelled-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv6 Labelled Unicast configuration options","summary":"GET - Controller - openconfig-network-instance - ipv6-labelled-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast"}},"application/json":{"schema":{"properties":{"ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast":{"post":{"description":"Unicast IPv4 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l3vpn-ipv4-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Unicast IPv4 L3VPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l3vpn-ipv4-unicast","requestBody":{"description":"l3vpn-ipv4-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Unicast IPv4 L3VPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l3vpn-ipv4-unicast","requestBody":{"description":"l3vpn-ipv4-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Unicast IPv4 L3VPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l3vpn-ipv4-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Unicast IPv4 L3VPN configuration options","summary":"GET - Controller - openconfig-network-instance - l3vpn-ipv4-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast":{"post":{"description":"Unicast IPv6 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l3vpn-ipv6-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Unicast IPv6 L3VPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l3vpn-ipv6-unicast","requestBody":{"description":"l3vpn-ipv6-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Unicast IPv6 L3VPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l3vpn-ipv6-unicast","requestBody":{"description":"l3vpn-ipv6-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Unicast IPv6 L3VPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l3vpn-ipv6-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Unicast IPv6 L3VPN configuration options","summary":"GET - Controller - openconfig-network-instance - l3vpn-ipv6-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast":{"post":{"description":"Multicast IPv4 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l3vpn-ipv4-multicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multicast IPv4 L3VPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l3vpn-ipv4-multicast","requestBody":{"description":"l3vpn-ipv4-multicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multicast IPv4 L3VPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l3vpn-ipv4-multicast","requestBody":{"description":"l3vpn-ipv4-multicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multicast IPv4 L3VPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l3vpn-ipv4-multicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multicast IPv4 L3VPN configuration options","summary":"GET - Controller - openconfig-network-instance - l3vpn-ipv4-multicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast":{"post":{"description":"Multicast IPv6 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l3vpn-ipv6-multicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multicast IPv6 L3VPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l3vpn-ipv6-multicast","requestBody":{"description":"l3vpn-ipv6-multicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multicast IPv6 L3VPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l3vpn-ipv6-multicast","requestBody":{"description":"l3vpn-ipv6-multicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multicast IPv6 L3VPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l3vpn-ipv6-multicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multicast IPv6 L3VPN configuration options","summary":"GET - Controller - openconfig-network-instance - l3vpn-ipv6-multicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls":{"post":{"description":"BGP-signalled VPLS configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l2vpn-vpls","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"BGP-signalled VPLS configuration options","summary":"PUT - openconfig-network-instance - Controller - l2vpn-vpls","requestBody":{"description":"l2vpn-vpls","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"BGP-signalled VPLS configuration options","summary":"PATCH - openconfig-network-instance - Controller - l2vpn-vpls","requestBody":{"description":"l2vpn-vpls","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"BGP-signalled VPLS configuration options","summary":"DELETE - Controller - openconfig-network-instance - l2vpn-vpls","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"BGP-signalled VPLS configuration options","summary":"GET - Controller - openconfig-network-instance - l2vpn-vpls","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls"}},"application/json":{"schema":{"properties":{"l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn":{"post":{"description":"BGP EVPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l2vpn-evpn","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"BGP EVPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l2vpn-evpn","requestBody":{"description":"l2vpn-evpn","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"BGP EVPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l2vpn-evpn","requestBody":{"description":"l2vpn-evpn","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"BGP EVPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l2vpn-evpn","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"BGP EVPN configuration options","summary":"GET - Controller - openconfig-network-instance - l2vpn-evpn","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn"}},"application/json":{"schema":{"properties":{"l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/route-selection-options":{"post":{"description":"Parameters relating to options for route selection\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - route-selection-options","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Parameters relating to options for route selection","summary":"PUT - openconfig-network-instance - Controller - route-selection-options","requestBody":{"description":"route-selection-options","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:route-selection-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Parameters relating to options for route selection","summary":"PATCH - openconfig-network-instance - Controller - route-selection-options","requestBody":{"description":"route-selection-options","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:route-selection-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Parameters relating to options for route selection","summary":"DELETE - Controller - openconfig-network-instance - route-selection-options","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Parameters relating to options for route selection","summary":"GET - Controller - openconfig-network-instance - route-selection-options","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options"}},"application/json":{"schema":{"properties":{"route-selection-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/route-selection-options/config":{"put":{"description":"Configuration parameters relating to route selection\noptions","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Configuration parameters relating to route selection\noptions","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Configuration parameters relating to route selection\noptions","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Configuration parameters relating to route selection\noptions","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/route-selection-options/state":{"get":{"description":"State information for the route selection options","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/use-multiple-paths":{"post":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - use-multiple-paths","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"PUT - openconfig-network-instance - Controller - use-multiple-paths","requestBody":{"description":"use-multiple-paths","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:use-multiple-paths":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"PATCH - openconfig-network-instance - Controller - use-multiple-paths","requestBody":{"description":"use-multiple-paths","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:use-multiple-paths":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"DELETE - Controller - openconfig-network-instance - use-multiple-paths","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Parameters related to the use of multiple paths for the\nsame NLRI","summary":"GET - Controller - openconfig-network-instance - use-multiple-paths","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths"}},"application/json":{"schema":{"properties":{"use-multiple-paths":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/use-multiple-paths/config":{"put":{"description":"Configuration parameters relating to multipath","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Configuration parameters relating to multipath","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Configuration parameters relating to multipath","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Configuration parameters relating to multipath","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/use-multiple-paths/state":{"put":{"description":"State parameters relating to multipath","summary":"PUT - openconfig-network-instance - Controller - state","requestBody":{"description":"state","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_state","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_state"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"State parameters relating to multipath","summary":"PATCH - openconfig-network-instance - Controller - state","requestBody":{"description":"state","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_state","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_state"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"State parameters relating to multipath","summary":"DELETE - Controller - openconfig-network-instance - state","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"State parameters relating to multipath","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/use-multiple-paths/ebgp":{"post":{"description":"Multipath parameters for eBGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ebgp","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Multipath parameters for eBGP","summary":"PUT - openconfig-network-instance - Controller - ebgp","requestBody":{"description":"ebgp","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ebgp":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Multipath parameters for eBGP","summary":"PATCH - openconfig-network-instance - Controller - ebgp","requestBody":{"description":"ebgp","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ebgp":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Multipath parameters for eBGP","summary":"DELETE - Controller - openconfig-network-instance - ebgp","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Multipath parameters for eBGP","summary":"GET - Controller - openconfig-network-instance - ebgp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp"}},"application/json":{"schema":{"properties":{"ebgp":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/use-multiple-paths/ebgp/config":{"put":{"description":"Configuration parameters relating to eBGP multipath","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Configuration parameters relating to eBGP multipath","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Configuration parameters relating to eBGP multipath","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Configuration parameters relating to eBGP multipath","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/use-multiple-paths/ebgp/state":{"get":{"description":"State information relating to eBGP multipath","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/use-multiple-paths/ibgp":{"post":{"description":"Multipath parameters for iBGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ibgp","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Multipath parameters for iBGP","summary":"PUT - openconfig-network-instance - Controller - ibgp","requestBody":{"description":"ibgp","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ibgp":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Multipath parameters for iBGP","summary":"PATCH - openconfig-network-instance - Controller - ibgp","requestBody":{"description":"ibgp","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ibgp":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Multipath parameters for iBGP","summary":"DELETE - Controller - openconfig-network-instance - ibgp","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Multipath parameters for iBGP","summary":"GET - Controller - openconfig-network-instance - ibgp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp"}},"application/json":{"schema":{"properties":{"ibgp":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/use-multiple-paths/ibgp/config":{"put":{"description":"Configuration parameters relating to iBGP multipath","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Configuration parameters relating to iBGP multipath","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Configuration parameters relating to iBGP multipath","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Configuration parameters relating to iBGP multipath","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/use-multiple-paths/ibgp/state":{"get":{"description":"State information relating to iBGP multipath","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/graceful-restart":{"post":{"description":"Parameters relating the graceful restart mechanism for BGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - graceful-restart","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"PUT - openconfig-network-instance - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"PATCH - openconfig-network-instance - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"DELETE - Controller - openconfig-network-instance - graceful-restart","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"GET - Controller - openconfig-network-instance - graceful-restart","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart"}},"application/json":{"schema":{"properties":{"graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/graceful-restart/config":{"put":{"description":"Configuration parameters relating to graceful-restart","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Configuration parameters relating to graceful-restart","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Configuration parameters relating to graceful-restart","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Configuration parameters relating to graceful-restart","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/global/graceful-restart/state":{"get":{"description":"State information associated with graceful-restart","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors":{"post":{"description":"Configuration for BGP neighbors\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - neighbors","requestBody":{"description":"neighbor","content":{"application/json":{"schema":{"properties":{"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Configuration for BGP neighbors","summary":"PUT - openconfig-network-instance - Controller - neighbors","requestBody":{"description":"neighbors","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:neighbors":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Configuration for BGP neighbors","summary":"PATCH - openconfig-network-instance - Controller - neighbors","requestBody":{"description":"neighbors","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:neighbors":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Configuration for BGP neighbors","summary":"DELETE - Controller - openconfig-network-instance - neighbors","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Configuration for BGP neighbors","summary":"GET - Controller - openconfig-network-instance - neighbors","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors"}},"application/json":{"schema":{"properties":{"neighbors":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}":{"put":{"description":"List of BGP neighbors configured on the local system,\nuniquely identified by peer IPv[46] address","summary":"PUT - openconfig-network-instance - Controller - neighbor","requestBody":{"description":"neighbor","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:neighbor":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"List of BGP neighbors configured on the local system,\nuniquely identified by peer IPv[46] address","summary":"PATCH - openconfig-network-instance - Controller - neighbor","requestBody":{"description":"neighbor","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:neighbor":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"List of BGP neighbors configured on the local system,\nuniquely identified by peer IPv[46] address","summary":"DELETE - Controller - openconfig-network-instance - neighbor","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"List of BGP neighbors configured on the local system,\nuniquely identified by peer IPv[46] address","summary":"GET - Controller - openconfig-network-instance - neighbor","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor"}},"application/json":{"schema":{"properties":{"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor","type":"object"}}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/config":{"put":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/state":{"get":{"description":"State information relating to the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/state/messages":{"get":{"description":"","summary":"GET - Controller - openconfig-network-instance - messages","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages"}},"application/json":{"schema":{"properties":{"messages":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/state/messages/sent":{"get":{"description":"","summary":"GET - Controller - openconfig-network-instance - sent","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages_sent"}},"application/json":{"schema":{"properties":{"sent":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages_sent","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/state/messages/received":{"get":{"description":"","summary":"GET - Controller - openconfig-network-instance - received","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages_received"}},"application/json":{"schema":{"properties":{"received":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages_received","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/state/queues":{"get":{"description":"","summary":"GET - Controller - openconfig-network-instance - queues","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_queues"}},"application/json":{"schema":{"properties":{"queues":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_queues","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/timers":{"post":{"description":"Timers related to a BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - timers","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Timers related to a BGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - timers","requestBody":{"description":"timers","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:timers":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Timers related to a BGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - timers","requestBody":{"description":"timers","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:timers":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Timers related to a BGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - timers","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Timers related to a BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - timers","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers"}},"application/json":{"schema":{"properties":{"timers":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/timers/config":{"put":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/timers/state":{"get":{"description":"State information relating to the timers used for the BGP\nneighbor or group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/transport":{"post":{"description":"Transport session parameters for the BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - transport","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Transport session parameters for the BGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - transport","requestBody":{"description":"transport","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:transport":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Transport session parameters for the BGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - transport","requestBody":{"description":"transport","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:transport":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Transport session parameters for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - transport","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Transport session parameters for the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - transport","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport"}},"application/json":{"schema":{"properties":{"transport":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/transport/config":{"put":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/transport/state":{"get":{"description":"State information relating to the transport session(s)\nused for the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/error-handling":{"post":{"description":"Error handling parameters used for the BGP neighbor or\ngroup\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - error-handling","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"PUT - openconfig-network-instance - Controller - error-handling","requestBody":{"description":"error-handling","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:error-handling":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"PATCH - openconfig-network-instance - Controller - error-handling","requestBody":{"description":"error-handling","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:error-handling":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-network-instance - error-handling","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-network-instance - error-handling","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling"}},"application/json":{"schema":{"properties":{"error-handling":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/error-handling/config":{"put":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/error-handling/state":{"get":{"description":"State information relating to enhanced error handling\nmechanisms for the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/logging-options":{"post":{"description":"Logging options for events related to the BGP neighbor or\ngroup\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - logging-options","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"PUT - openconfig-network-instance - Controller - logging-options","requestBody":{"description":"logging-options","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:logging-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"PATCH - openconfig-network-instance - Controller - logging-options","requestBody":{"description":"logging-options","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:logging-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-network-instance - logging-options","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-network-instance - logging-options","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options"}},"application/json":{"schema":{"properties":{"logging-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/logging-options/config":{"put":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/logging-options/state":{"get":{"description":"State information relating to logging for the BGP neighbor\nor group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/ebgp-multihop":{"post":{"description":"eBGP multi-hop parameters for the BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ebgp-multihop","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - ebgp-multihop","requestBody":{"description":"ebgp-multihop","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ebgp-multihop":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - ebgp-multihop","requestBody":{"description":"ebgp-multihop","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ebgp-multihop":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - ebgp-multihop","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - ebgp-multihop","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop"}},"application/json":{"schema":{"properties":{"ebgp-multihop":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/ebgp-multihop/config":{"put":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/ebgp-multihop/state":{"get":{"description":"State information for eBGP multihop, for the BGP neighbor\nor group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/route-reflector":{"post":{"description":"Route reflector parameters for the BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - route-reflector","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - route-reflector","requestBody":{"description":"route-reflector","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:route-reflector":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - route-reflector","requestBody":{"description":"route-reflector","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:route-reflector":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - route-reflector","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - route-reflector","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector"}},"application/json":{"schema":{"properties":{"route-reflector":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/route-reflector/config":{"put":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/route-reflector/state":{"get":{"description":"State information relating to route reflection for the\nBGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/as-path-options":{"post":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - as-path-options","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"PUT - openconfig-network-instance - Controller - as-path-options","requestBody":{"description":"as-path-options","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:as-path-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"PATCH - openconfig-network-instance - Controller - as-path-options","requestBody":{"description":"as-path-options","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:as-path-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-network-instance - as-path-options","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-network-instance - as-path-options","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options"}},"application/json":{"schema":{"properties":{"as-path-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/as-path-options/config":{"put":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/as-path-options/state":{"get":{"description":"State information relating to the AS_PATH manipulation\nmechanisms for the BGP peer or group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/add-paths":{"post":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - add-paths","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"PUT - openconfig-network-instance - Controller - add-paths","requestBody":{"description":"add-paths","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:add-paths":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"PATCH - openconfig-network-instance - Controller - add-paths","requestBody":{"description":"add-paths","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:add-paths":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"DELETE - Controller - openconfig-network-instance - add-paths","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"GET - Controller - openconfig-network-instance - add-paths","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths"}},"application/json":{"schema":{"properties":{"add-paths":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/add-paths/config":{"put":{"description":"Configuration parameters relating to ADD_PATHS","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to ADD_PATHS","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to ADD_PATHS","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to ADD_PATHS","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/add-paths/state":{"get":{"description":"State information associated with ADD_PATHS","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis":{"post":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - afi-safis","requestBody":{"description":"afi-safi","content":{"application/json":{"schema":{"properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"PUT - openconfig-network-instance - Controller - afi-safis","requestBody":{"description":"afi-safis","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:afi-safis":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - afi-safis","requestBody":{"description":"afi-safis","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:afi-safis":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - afi-safis","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"GET - Controller - openconfig-network-instance - afi-safis","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis"}},"application/json":{"schema":{"properties":{"afi-safis":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}":{"put":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"PUT - openconfig-network-instance - Controller - afi-safi","requestBody":{"description":"afi-safi","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"PATCH - openconfig-network-instance - Controller - afi-safi","requestBody":{"description":"afi-safi","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"DELETE - Controller - openconfig-network-instance - afi-safi","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"GET - Controller - openconfig-network-instance - afi-safi","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi"}},"application/json":{"schema":{"properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi","type":"object"}}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/graceful-restart":{"post":{"description":"Parameters relating to BGP graceful-restart\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - graceful-restart","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Parameters relating to BGP graceful-restart","summary":"PUT - openconfig-network-instance - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Parameters relating to BGP graceful-restart","summary":"PATCH - openconfig-network-instance - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Parameters relating to BGP graceful-restart","summary":"DELETE - Controller - openconfig-network-instance - graceful-restart","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Parameters relating to BGP graceful-restart","summary":"GET - Controller - openconfig-network-instance - graceful-restart","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart"}},"application/json":{"schema":{"properties":{"graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/graceful-restart/config":{"post":{"description":"Configuration options for BGP graceful-restart\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - config","requestBody":{"description":"ll-graceful-restart","content":{"application/json":{"schema":{"properties":{"ll-graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configuration options for BGP graceful-restart","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration options for BGP graceful-restart","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration options for BGP graceful-restart","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration options for BGP graceful-restart","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/graceful-restart/config/bgp-ll-graceful-restart:ll-graceful-restart":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ll-graceful-restart","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"","summary":"PUT - openconfig-network-instance - Controller - ll-graceful-restart","requestBody":{"description":"ll-graceful-restart","content":{"application/json":{"schema":{"properties":{"bgp-ll-graceful-restart:ll-graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"","summary":"PATCH - openconfig-network-instance - Controller - ll-graceful-restart","requestBody":{"description":"ll-graceful-restart","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-ll-graceful-restart:ll-graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"","summary":"DELETE - Controller - openconfig-network-instance - ll-graceful-restart","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"","summary":"GET - Controller - openconfig-network-instance - ll-graceful-restart","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart"}},"application/json":{"schema":{"properties":{"ll-graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/graceful-restart/config/bgp-ll-graceful-restart:ll-graceful-restart/config":{"put":{"description":"","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-ll-graceful-restart:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-ll-graceful-restart:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/graceful-restart/state":{"get":{"description":"State information for BGP graceful-restart","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/config":{"put":{"description":"Configuration parameters for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/state":{"get":{"description":"State information relating to the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/state/prefixes":{"get":{"description":"Prefix counters for the BGP session","summary":"GET - Controller - openconfig-network-instance - prefixes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_state_prefixes"}},"application/json":{"schema":{"properties":{"prefixes":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_state_prefixes","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/apply-policy":{"post":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - apply-policy","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PUT - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PATCH - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"DELETE - Controller - openconfig-network-instance - apply-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"GET - Controller - openconfig-network-instance - apply-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy"}},"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/apply-policy/config":{"put":{"description":"Policy configuration data.","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Policy configuration data.","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Policy configuration data.","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Policy configuration data.","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/apply-policy/state":{"get":{"description":"Operational state for routing policy","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast":{"post":{"description":"IPv4 unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ipv4-unicast","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv4 unicast configuration options","summary":"PUT - openconfig-network-instance - Controller - ipv4-unicast","requestBody":{"description":"ipv4-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv4 unicast configuration options","summary":"PATCH - openconfig-network-instance - Controller - ipv4-unicast","requestBody":{"description":"ipv4-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv4 unicast configuration options","summary":"DELETE - Controller - openconfig-network-instance - ipv4-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv4 unicast configuration options","summary":"GET - Controller - openconfig-network-instance - ipv4-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast"}},"application/json":{"schema":{"properties":{"ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/config":{"put":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/state":{"get":{"description":"State information for common IPv4 and IPv6 unicast\nparameters","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast":{"post":{"description":"IPv6 unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ipv6-unicast","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv6 unicast configuration options","summary":"PUT - openconfig-network-instance - Controller - ipv6-unicast","requestBody":{"description":"ipv6-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv6 unicast configuration options","summary":"PATCH - openconfig-network-instance - Controller - ipv6-unicast","requestBody":{"description":"ipv6-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv6 unicast configuration options","summary":"DELETE - Controller - openconfig-network-instance - ipv6-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv6 unicast configuration options","summary":"GET - Controller - openconfig-network-instance - ipv6-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast"}},"application/json":{"schema":{"properties":{"ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/config":{"put":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/state":{"get":{"description":"State information for common IPv4 and IPv6 unicast\nparameters","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast":{"post":{"description":"IPv4 Labelled Unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ipv4-labelled-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv4 Labelled Unicast configuration options","summary":"PUT - openconfig-network-instance - Controller - ipv4-labelled-unicast","requestBody":{"description":"ipv4-labelled-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv4 Labelled Unicast configuration options","summary":"PATCH - openconfig-network-instance - Controller - ipv4-labelled-unicast","requestBody":{"description":"ipv4-labelled-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv4 Labelled Unicast configuration options","summary":"DELETE - Controller - openconfig-network-instance - ipv4-labelled-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv4 Labelled Unicast configuration options","summary":"GET - Controller - openconfig-network-instance - ipv4-labelled-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast"}},"application/json":{"schema":{"properties":{"ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast":{"post":{"description":"IPv6 Labelled Unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ipv6-labelled-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv6 Labelled Unicast configuration options","summary":"PUT - openconfig-network-instance - Controller - ipv6-labelled-unicast","requestBody":{"description":"ipv6-labelled-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv6 Labelled Unicast configuration options","summary":"PATCH - openconfig-network-instance - Controller - ipv6-labelled-unicast","requestBody":{"description":"ipv6-labelled-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv6 Labelled Unicast configuration options","summary":"DELETE - Controller - openconfig-network-instance - ipv6-labelled-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv6 Labelled Unicast configuration options","summary":"GET - Controller - openconfig-network-instance - ipv6-labelled-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast"}},"application/json":{"schema":{"properties":{"ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast":{"post":{"description":"Unicast IPv4 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l3vpn-ipv4-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Unicast IPv4 L3VPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l3vpn-ipv4-unicast","requestBody":{"description":"l3vpn-ipv4-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Unicast IPv4 L3VPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l3vpn-ipv4-unicast","requestBody":{"description":"l3vpn-ipv4-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Unicast IPv4 L3VPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l3vpn-ipv4-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Unicast IPv4 L3VPN configuration options","summary":"GET - Controller - openconfig-network-instance - l3vpn-ipv4-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast":{"post":{"description":"Unicast IPv6 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l3vpn-ipv6-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Unicast IPv6 L3VPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l3vpn-ipv6-unicast","requestBody":{"description":"l3vpn-ipv6-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Unicast IPv6 L3VPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l3vpn-ipv6-unicast","requestBody":{"description":"l3vpn-ipv6-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Unicast IPv6 L3VPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l3vpn-ipv6-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Unicast IPv6 L3VPN configuration options","summary":"GET - Controller - openconfig-network-instance - l3vpn-ipv6-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast":{"post":{"description":"Multicast IPv4 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l3vpn-ipv4-multicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multicast IPv4 L3VPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l3vpn-ipv4-multicast","requestBody":{"description":"l3vpn-ipv4-multicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multicast IPv4 L3VPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l3vpn-ipv4-multicast","requestBody":{"description":"l3vpn-ipv4-multicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multicast IPv4 L3VPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l3vpn-ipv4-multicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multicast IPv4 L3VPN configuration options","summary":"GET - Controller - openconfig-network-instance - l3vpn-ipv4-multicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast":{"post":{"description":"Multicast IPv6 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l3vpn-ipv6-multicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multicast IPv6 L3VPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l3vpn-ipv6-multicast","requestBody":{"description":"l3vpn-ipv6-multicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multicast IPv6 L3VPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l3vpn-ipv6-multicast","requestBody":{"description":"l3vpn-ipv6-multicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multicast IPv6 L3VPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l3vpn-ipv6-multicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multicast IPv6 L3VPN configuration options","summary":"GET - Controller - openconfig-network-instance - l3vpn-ipv6-multicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls":{"post":{"description":"BGP-signalled VPLS configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l2vpn-vpls","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"BGP-signalled VPLS configuration options","summary":"PUT - openconfig-network-instance - Controller - l2vpn-vpls","requestBody":{"description":"l2vpn-vpls","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"BGP-signalled VPLS configuration options","summary":"PATCH - openconfig-network-instance - Controller - l2vpn-vpls","requestBody":{"description":"l2vpn-vpls","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"BGP-signalled VPLS configuration options","summary":"DELETE - Controller - openconfig-network-instance - l2vpn-vpls","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"BGP-signalled VPLS configuration options","summary":"GET - Controller - openconfig-network-instance - l2vpn-vpls","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls"}},"application/json":{"schema":{"properties":{"l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn":{"post":{"description":"BGP EVPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l2vpn-evpn","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"BGP EVPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l2vpn-evpn","requestBody":{"description":"l2vpn-evpn","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"BGP EVPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l2vpn-evpn","requestBody":{"description":"l2vpn-evpn","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"BGP EVPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l2vpn-evpn","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"BGP EVPN configuration options","summary":"GET - Controller - openconfig-network-instance - l2vpn-evpn","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn"}},"application/json":{"schema":{"properties":{"l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/apply-policy":{"post":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - apply-policy","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PUT - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PATCH - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"DELETE - Controller - openconfig-network-instance - apply-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"GET - Controller - openconfig-network-instance - apply-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy"}},"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/apply-policy/config":{"put":{"description":"Policy configuration data.","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Policy configuration data.","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Policy configuration data.","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Policy configuration data.","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/apply-policy/state":{"get":{"description":"Operational state for routing policy","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/graceful-restart":{"post":{"description":"Parameters relating the graceful restart mechanism for BGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - graceful-restart","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"put":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"PUT - openconfig-network-instance - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"PATCH - openconfig-network-instance - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"DELETE - Controller - openconfig-network-instance - graceful-restart","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"GET - Controller - openconfig-network-instance - graceful-restart","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart"}},"application/json":{"schema":{"properties":{"graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/graceful-restart/config":{"put":{"description":"Configuration parameters relating to graceful-restart","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"patch":{"description":"Configuration parameters relating to graceful-restart","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"delete":{"description":"Configuration parameters relating to graceful-restart","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"}]},"get":{"description":"Configuration parameters relating to graceful-restart","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/neighbors/neighbor={neighbor-address}/graceful-restart/state":{"get":{"description":"State information associated with graceful-restart","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"neighbor-address","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups":{"post":{"description":"Configuration for BGP peer-groups\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - peer-groups","requestBody":{"description":"peer-group","content":{"application/json":{"schema":{"properties":{"peer-group":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"put":{"description":"Configuration for BGP peer-groups","summary":"PUT - openconfig-network-instance - Controller - peer-groups","requestBody":{"description":"peer-groups","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:peer-groups":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"patch":{"description":"Configuration for BGP peer-groups","summary":"PATCH - openconfig-network-instance - Controller - peer-groups","requestBody":{"description":"peer-groups","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:peer-groups":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"delete":{"description":"Configuration for BGP peer-groups","summary":"DELETE - Controller - openconfig-network-instance - peer-groups","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."}]},"get":{"description":"Configuration for BGP peer-groups","summary":"GET - Controller - openconfig-network-instance - peer-groups","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups"}},"application/json":{"schema":{"properties":{"peer-groups":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}":{"put":{"description":"List of BGP peer-groups configured on the local system -\nuniquely identified by peer-group name","summary":"PUT - openconfig-network-instance - Controller - peer-group","requestBody":{"description":"peer-group","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:peer-group":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"List of BGP peer-groups configured on the local system -\nuniquely identified by peer-group name","summary":"PATCH - openconfig-network-instance - Controller - peer-group","requestBody":{"description":"peer-group","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:peer-group":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"List of BGP peer-groups configured on the local system -\nuniquely identified by peer-group name","summary":"DELETE - Controller - openconfig-network-instance - peer-group","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"List of BGP peer-groups configured on the local system -\nuniquely identified by peer-group name","summary":"GET - Controller - openconfig-network-instance - peer-group","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group"}},"application/json":{"schema":{"properties":{"peer-group":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group","type":"object"}}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/config":{"put":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/state":{"get":{"description":"State information relating to the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/timers":{"post":{"description":"Timers related to a BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - timers","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Timers related to a BGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - timers","requestBody":{"description":"timers","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:timers":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Timers related to a BGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - timers","requestBody":{"description":"timers","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:timers":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Timers related to a BGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - timers","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Timers related to a BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - timers","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers"}},"application/json":{"schema":{"properties":{"timers":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/timers/config":{"put":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/timers/state":{"get":{"description":"State information relating to the timers used for the BGP\nneighbor or group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/transport":{"post":{"description":"Transport session parameters for the BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - transport","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Transport session parameters for the BGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - transport","requestBody":{"description":"transport","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:transport":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Transport session parameters for the BGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - transport","requestBody":{"description":"transport","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:transport":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Transport session parameters for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - transport","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Transport session parameters for the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - transport","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport"}},"application/json":{"schema":{"properties":{"transport":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/transport/config":{"put":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/transport/state":{"get":{"description":"State information relating to the transport session(s)\nused for the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/error-handling":{"post":{"description":"Error handling parameters used for the BGP neighbor or\ngroup\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - error-handling","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"PUT - openconfig-network-instance - Controller - error-handling","requestBody":{"description":"error-handling","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:error-handling":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"PATCH - openconfig-network-instance - Controller - error-handling","requestBody":{"description":"error-handling","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:error-handling":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-network-instance - error-handling","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Error handling parameters used for the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-network-instance - error-handling","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling"}},"application/json":{"schema":{"properties":{"error-handling":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/error-handling/config":{"put":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/error-handling/state":{"get":{"description":"State information relating to enhanced error handling\nmechanisms for the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/logging-options":{"post":{"description":"Logging options for events related to the BGP neighbor or\ngroup\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - logging-options","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"PUT - openconfig-network-instance - Controller - logging-options","requestBody":{"description":"logging-options","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:logging-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"PATCH - openconfig-network-instance - Controller - logging-options","requestBody":{"description":"logging-options","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:logging-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-network-instance - logging-options","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Logging options for events related to the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-network-instance - logging-options","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options"}},"application/json":{"schema":{"properties":{"logging-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/logging-options/config":{"put":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/logging-options/state":{"get":{"description":"State information relating to logging for the BGP neighbor\nor group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/ebgp-multihop":{"post":{"description":"eBGP multi-hop parameters for the BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ebgp-multihop","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - ebgp-multihop","requestBody":{"description":"ebgp-multihop","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ebgp-multihop":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - ebgp-multihop","requestBody":{"description":"ebgp-multihop","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ebgp-multihop":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - ebgp-multihop","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"eBGP multi-hop parameters for the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - ebgp-multihop","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop"}},"application/json":{"schema":{"properties":{"ebgp-multihop":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/ebgp-multihop/config":{"put":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/ebgp-multihop/state":{"get":{"description":"State information for eBGP multihop, for the BGP neighbor\nor group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/route-reflector":{"post":{"description":"Route reflector parameters for the BGP neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - route-reflector","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - route-reflector","requestBody":{"description":"route-reflector","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:route-reflector":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - route-reflector","requestBody":{"description":"route-reflector","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:route-reflector":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - route-reflector","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Route reflector parameters for the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - route-reflector","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector"}},"application/json":{"schema":{"properties":{"route-reflector":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/route-reflector/config":{"put":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/route-reflector/state":{"get":{"description":"State information relating to route reflection for the\nBGP neighbor or group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/as-path-options":{"post":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - as-path-options","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"PUT - openconfig-network-instance - Controller - as-path-options","requestBody":{"description":"as-path-options","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:as-path-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"PATCH - openconfig-network-instance - Controller - as-path-options","requestBody":{"description":"as-path-options","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:as-path-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"DELETE - Controller - openconfig-network-instance - as-path-options","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","summary":"GET - Controller - openconfig-network-instance - as-path-options","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options"}},"application/json":{"schema":{"properties":{"as-path-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/as-path-options/config":{"put":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/as-path-options/state":{"get":{"description":"State information relating to the AS_PATH manipulation\nmechanisms for the BGP peer or group","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/add-paths":{"post":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - add-paths","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"PUT - openconfig-network-instance - Controller - add-paths","requestBody":{"description":"add-paths","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:add-paths":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"PATCH - openconfig-network-instance - Controller - add-paths","requestBody":{"description":"add-paths","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:add-paths":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"DELETE - Controller - openconfig-network-instance - add-paths","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","summary":"GET - Controller - openconfig-network-instance - add-paths","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths"}},"application/json":{"schema":{"properties":{"add-paths":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/add-paths/config":{"put":{"description":"Configuration parameters relating to ADD_PATHS","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to ADD_PATHS","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to ADD_PATHS","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to ADD_PATHS","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/add-paths/state":{"get":{"description":"State information associated with ADD_PATHS","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis":{"post":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - afi-safis","requestBody":{"description":"afi-safi","content":{"application/json":{"schema":{"properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"PUT - openconfig-network-instance - Controller - afi-safis","requestBody":{"description":"afi-safis","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:afi-safis":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"PATCH - openconfig-network-instance - Controller - afi-safis","requestBody":{"description":"afi-safis","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:afi-safis":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"DELETE - Controller - openconfig-network-instance - afi-safis","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Per-address-family configuration parameters associated with\nthe neighbor or group","summary":"GET - Controller - openconfig-network-instance - afi-safis","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis"}},"application/json":{"schema":{"properties":{"afi-safis":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}":{"put":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"PUT - openconfig-network-instance - Controller - afi-safi","requestBody":{"description":"afi-safi","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"PATCH - openconfig-network-instance - Controller - afi-safi","requestBody":{"description":"afi-safi","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"DELETE - Controller - openconfig-network-instance - afi-safi","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"AFI,SAFI configuration available for the\nneighbour or group","summary":"GET - Controller - openconfig-network-instance - afi-safi","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi"}},"application/json":{"schema":{"properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi","type":"object"}}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/graceful-restart":{"post":{"description":"Parameters relating to BGP graceful-restart\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - graceful-restart","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Parameters relating to BGP graceful-restart","summary":"PUT - openconfig-network-instance - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Parameters relating to BGP graceful-restart","summary":"PATCH - openconfig-network-instance - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Parameters relating to BGP graceful-restart","summary":"DELETE - Controller - openconfig-network-instance - graceful-restart","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Parameters relating to BGP graceful-restart","summary":"GET - Controller - openconfig-network-instance - graceful-restart","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart"}},"application/json":{"schema":{"properties":{"graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/graceful-restart/config":{"post":{"description":"Configuration options for BGP graceful-restart\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - config","requestBody":{"description":"ll-graceful-restart","content":{"application/json":{"schema":{"properties":{"ll-graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configuration options for BGP graceful-restart","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration options for BGP graceful-restart","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration options for BGP graceful-restart","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration options for BGP graceful-restart","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/graceful-restart/config/bgp-ll-graceful-restart:ll-graceful-restart":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ll-graceful-restart","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"","summary":"PUT - openconfig-network-instance - Controller - ll-graceful-restart","requestBody":{"description":"ll-graceful-restart","content":{"application/json":{"schema":{"properties":{"bgp-ll-graceful-restart:ll-graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"","summary":"PATCH - openconfig-network-instance - Controller - ll-graceful-restart","requestBody":{"description":"ll-graceful-restart","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-ll-graceful-restart:ll-graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"","summary":"DELETE - Controller - openconfig-network-instance - ll-graceful-restart","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"","summary":"GET - Controller - openconfig-network-instance - ll-graceful-restart","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart"}},"application/json":{"schema":{"properties":{"ll-graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/graceful-restart/config/bgp-ll-graceful-restart:ll-graceful-restart/config":{"put":{"description":"","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-ll-graceful-restart:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-ll-graceful-restart:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/graceful-restart/state":{"get":{"description":"State information for BGP graceful-restart","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/config":{"put":{"description":"Configuration parameters for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/state":{"get":{"description":"State information relating to the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/apply-policy":{"post":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - apply-policy","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PUT - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PATCH - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"DELETE - Controller - openconfig-network-instance - apply-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"GET - Controller - openconfig-network-instance - apply-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy"}},"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/apply-policy/config":{"put":{"description":"Policy configuration data.","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Policy configuration data.","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Policy configuration data.","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Policy configuration data.","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/apply-policy/state":{"get":{"description":"Operational state for routing policy","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast":{"post":{"description":"IPv4 unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ipv4-unicast","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv4 unicast configuration options","summary":"PUT - openconfig-network-instance - Controller - ipv4-unicast","requestBody":{"description":"ipv4-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv4 unicast configuration options","summary":"PATCH - openconfig-network-instance - Controller - ipv4-unicast","requestBody":{"description":"ipv4-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv4 unicast configuration options","summary":"DELETE - Controller - openconfig-network-instance - ipv4-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv4 unicast configuration options","summary":"GET - Controller - openconfig-network-instance - ipv4-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast"}},"application/json":{"schema":{"properties":{"ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/config":{"put":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/state":{"get":{"description":"State information for common IPv4 and IPv6 unicast\nparameters","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast":{"post":{"description":"IPv6 unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ipv6-unicast","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv6 unicast configuration options","summary":"PUT - openconfig-network-instance - Controller - ipv6-unicast","requestBody":{"description":"ipv6-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv6 unicast configuration options","summary":"PATCH - openconfig-network-instance - Controller - ipv6-unicast","requestBody":{"description":"ipv6-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv6 unicast configuration options","summary":"DELETE - Controller - openconfig-network-instance - ipv6-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv6 unicast configuration options","summary":"GET - Controller - openconfig-network-instance - ipv6-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast"}},"application/json":{"schema":{"properties":{"ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/config":{"put":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/state":{"get":{"description":"State information for common IPv4 and IPv6 unicast\nparameters","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast":{"post":{"description":"IPv4 Labelled Unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ipv4-labelled-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv4 Labelled Unicast configuration options","summary":"PUT - openconfig-network-instance - Controller - ipv4-labelled-unicast","requestBody":{"description":"ipv4-labelled-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv4 Labelled Unicast configuration options","summary":"PATCH - openconfig-network-instance - Controller - ipv4-labelled-unicast","requestBody":{"description":"ipv4-labelled-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv4 Labelled Unicast configuration options","summary":"DELETE - Controller - openconfig-network-instance - ipv4-labelled-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv4 Labelled Unicast configuration options","summary":"GET - Controller - openconfig-network-instance - ipv4-labelled-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast"}},"application/json":{"schema":{"properties":{"ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv4-labelled-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast":{"post":{"description":"IPv6 Labelled Unicast configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - ipv6-labelled-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"IPv6 Labelled Unicast configuration options","summary":"PUT - openconfig-network-instance - Controller - ipv6-labelled-unicast","requestBody":{"description":"ipv6-labelled-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"IPv6 Labelled Unicast configuration options","summary":"PATCH - openconfig-network-instance - Controller - ipv6-labelled-unicast","requestBody":{"description":"ipv6-labelled-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"IPv6 Labelled Unicast configuration options","summary":"DELETE - Controller - openconfig-network-instance - ipv6-labelled-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"IPv6 Labelled Unicast configuration options","summary":"GET - Controller - openconfig-network-instance - ipv6-labelled-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast"}},"application/json":{"schema":{"properties":{"ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/ipv6-labelled-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast":{"post":{"description":"Unicast IPv4 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l3vpn-ipv4-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Unicast IPv4 L3VPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l3vpn-ipv4-unicast","requestBody":{"description":"l3vpn-ipv4-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Unicast IPv4 L3VPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l3vpn-ipv4-unicast","requestBody":{"description":"l3vpn-ipv4-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Unicast IPv4 L3VPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l3vpn-ipv4-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Unicast IPv4 L3VPN configuration options","summary":"GET - Controller - openconfig-network-instance - l3vpn-ipv4-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast":{"post":{"description":"Unicast IPv6 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l3vpn-ipv6-unicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Unicast IPv6 L3VPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l3vpn-ipv6-unicast","requestBody":{"description":"l3vpn-ipv6-unicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Unicast IPv6 L3VPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l3vpn-ipv6-unicast","requestBody":{"description":"l3vpn-ipv6-unicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Unicast IPv6 L3VPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l3vpn-ipv6-unicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Unicast IPv6 L3VPN configuration options","summary":"GET - Controller - openconfig-network-instance - l3vpn-ipv6-unicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-unicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast":{"post":{"description":"Multicast IPv4 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l3vpn-ipv4-multicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multicast IPv4 L3VPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l3vpn-ipv4-multicast","requestBody":{"description":"l3vpn-ipv4-multicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multicast IPv4 L3VPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l3vpn-ipv4-multicast","requestBody":{"description":"l3vpn-ipv4-multicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multicast IPv4 L3VPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l3vpn-ipv4-multicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multicast IPv4 L3VPN configuration options","summary":"GET - Controller - openconfig-network-instance - l3vpn-ipv4-multicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv4-multicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast":{"post":{"description":"Multicast IPv6 L3VPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l3vpn-ipv6-multicast","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Multicast IPv6 L3VPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l3vpn-ipv6-multicast","requestBody":{"description":"l3vpn-ipv6-multicast","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Multicast IPv6 L3VPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l3vpn-ipv6-multicast","requestBody":{"description":"l3vpn-ipv6-multicast","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Multicast IPv6 L3VPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l3vpn-ipv6-multicast","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Multicast IPv6 L3VPN configuration options","summary":"GET - Controller - openconfig-network-instance - l3vpn-ipv6-multicast","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast"}},"application/json":{"schema":{"properties":{"l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l3vpn-ipv6-multicast/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls":{"post":{"description":"BGP-signalled VPLS configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l2vpn-vpls","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"BGP-signalled VPLS configuration options","summary":"PUT - openconfig-network-instance - Controller - l2vpn-vpls","requestBody":{"description":"l2vpn-vpls","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"BGP-signalled VPLS configuration options","summary":"PATCH - openconfig-network-instance - Controller - l2vpn-vpls","requestBody":{"description":"l2vpn-vpls","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"BGP-signalled VPLS configuration options","summary":"DELETE - Controller - openconfig-network-instance - l2vpn-vpls","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"BGP-signalled VPLS configuration options","summary":"GET - Controller - openconfig-network-instance - l2vpn-vpls","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls"}},"application/json":{"schema":{"properties":{"l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-vpls/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn":{"post":{"description":"BGP EVPN configuration options\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - l2vpn-evpn","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"BGP EVPN configuration options","summary":"PUT - openconfig-network-instance - Controller - l2vpn-evpn","requestBody":{"description":"l2vpn-evpn","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"BGP EVPN configuration options","summary":"PATCH - openconfig-network-instance - Controller - l2vpn-evpn","requestBody":{"description":"l2vpn-evpn","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"BGP EVPN configuration options","summary":"DELETE - Controller - openconfig-network-instance - l2vpn-evpn","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"BGP EVPN configuration options","summary":"GET - Controller - openconfig-network-instance - l2vpn-evpn","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn"}},"application/json":{"schema":{"properties":{"l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit":{"post":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - prefix-limit","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"put":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PUT - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"PATCH - openconfig-network-instance - Controller - prefix-limit","requestBody":{"description":"prefix-limit","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"DELETE - Controller - openconfig-network-instance - prefix-limit","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configure the maximum number of prefixes that will be\naccepted from a peer","summary":"GET - Controller - openconfig-network-instance - prefix-limit","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}},"application/json":{"schema":{"properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit/config":{"put":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"patch":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"delete":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"}]},"get":{"description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/afi-safis/afi-safi={afi-safi-name}/l2vpn-evpn/prefix-limit/state":{"get":{"description":"State information relating to the prefix-limit for the\nAFI-SAFI","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"afi-safi-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/apply-policy":{"post":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - apply-policy","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PUT - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"PATCH - openconfig-network-instance - Controller - apply-policy","requestBody":{"description":"apply-policy","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"DELETE - Controller - openconfig-network-instance - apply-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","summary":"GET - Controller - openconfig-network-instance - apply-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy"}},"application/json":{"schema":{"properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/apply-policy/config":{"put":{"description":"Policy configuration data.","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Policy configuration data.","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Policy configuration data.","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Policy configuration data.","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/apply-policy/state":{"get":{"description":"Operational state for routing policy","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/graceful-restart":{"post":{"description":"Parameters relating the graceful restart mechanism for BGP\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-network-instance - graceful-restart","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"put":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"PUT - openconfig-network-instance - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"PATCH - openconfig-network-instance - Controller - graceful-restart","requestBody":{"description":"graceful-restart","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"DELETE - Controller - openconfig-network-instance - graceful-restart","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Parameters relating the graceful restart mechanism for BGP","summary":"GET - Controller - openconfig-network-instance - graceful-restart","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart"}},"application/json":{"schema":{"properties":{"graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/graceful-restart/config":{"put":{"description":"Configuration parameters relating to graceful-restart","summary":"PUT - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"patch":{"description":"Configuration parameters relating to graceful-restart","summary":"PATCH - openconfig-network-instance - Controller - config","requestBody":{"description":"config","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-openconfig-extensions:config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"delete":{"description":"Configuration parameters relating to graceful-restart","summary":"DELETE - Controller - openconfig-network-instance - config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"}]},"get":{"description":"Configuration parameters relating to graceful-restart","summary":"GET - Controller - openconfig-network-instance - config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_config"}},"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_config","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-network-instance:network-instances/network-instance={name}/protocols/protocol={identifier},{name1}/bgp-openconfig-extensions:bgp/peer-groups/peer-group={peer-group-name}/graceful-restart/state":{"get":{"description":"State information associated with graceful-restart","summary":"GET - Controller - openconfig-network-instance - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_state","type":"object"}}}}}}},"tags":["Controller openconfig-network-instance"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"A unique name identifying the network instance"},{"name":"identifier","in":"path","required":true,"schema":{"type":"string"},"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined."},{"name":"peer-group-name","in":"path","required":true,"schema":{"type":"string"},"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list"},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy":{"post":{"description":"top-level container for all routing policy configuration\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - routing-policy","requestBody":{"description":"defined-sets","content":{"application/json":{"schema":{"properties":{"defined-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"put":{"description":"top-level container for all routing policy configuration","summary":"PUT - openconfig-routing-policy - Controller - routing-policy","requestBody":{"description":"routing-policy","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:routing-policy":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"patch":{"description":"top-level container for all routing policy configuration","summary":"PATCH - openconfig-routing-policy - Controller - routing-policy","requestBody":{"description":"routing-policy","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:routing-policy":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"delete":{"description":"top-level container for all routing policy configuration","summary":"DELETE - Controller - openconfig-routing-policy - routing-policy","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"get":{"description":"top-level container for all routing policy configuration","summary":"GET - Controller - openconfig-routing-policy - routing-policy","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy"}},"application/json":{"schema":{"properties":{"routing-policy":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets":{"post":{"description":"Predefined sets of attributes used in policy match\nstatements\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - defined-sets","requestBody":{"description":"prefix-sets","content":{"application/json":{"schema":{"properties":{"prefix-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"put":{"description":"Predefined sets of attributes used in policy match\nstatements","summary":"PUT - openconfig-routing-policy - Controller - defined-sets","requestBody":{"description":"defined-sets","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:defined-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"patch":{"description":"Predefined sets of attributes used in policy match\nstatements","summary":"PATCH - openconfig-routing-policy - Controller - defined-sets","requestBody":{"description":"defined-sets","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:defined-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"delete":{"description":"Predefined sets of attributes used in policy match\nstatements","summary":"DELETE - Controller - openconfig-routing-policy - defined-sets","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"get":{"description":"Predefined sets of attributes used in policy match\nstatements","summary":"GET - Controller - openconfig-routing-policy - defined-sets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets"}},"application/json":{"schema":{"properties":{"defined-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/prefix-sets":{"post":{"description":"Enclosing container for defined prefix sets for matching\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - prefix-sets","requestBody":{"description":"prefix-set","content":{"application/json":{"schema":{"properties":{"prefix-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"put":{"description":"Enclosing container for defined prefix sets for matching","summary":"PUT - openconfig-routing-policy - Controller - prefix-sets","requestBody":{"description":"prefix-sets","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:prefix-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"patch":{"description":"Enclosing container for defined prefix sets for matching","summary":"PATCH - openconfig-routing-policy - Controller - prefix-sets","requestBody":{"description":"prefix-sets","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:prefix-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"delete":{"description":"Enclosing container for defined prefix sets for matching","summary":"DELETE - Controller - openconfig-routing-policy - prefix-sets","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"get":{"description":"Enclosing container for defined prefix sets for matching","summary":"GET - Controller - openconfig-routing-policy - prefix-sets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets"}},"application/json":{"schema":{"properties":{"prefix-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/prefix-sets/prefix-set={prefix-set-name}":{"put":{"description":"List of the defined prefix sets","summary":"PUT - openconfig-routing-policy - Controller - prefix-set","requestBody":{"description":"prefix-set","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:prefix-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"prefix-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the prefix set -- this is used to\nreference the set in match conditions"}]},"patch":{"description":"List of the defined prefix sets","summary":"PATCH - openconfig-routing-policy - Controller - prefix-set","requestBody":{"description":"prefix-set","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:prefix-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"prefix-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the prefix set -- this is used to\nreference the set in match conditions"}]},"delete":{"description":"List of the defined prefix sets","summary":"DELETE - Controller - openconfig-routing-policy - prefix-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"prefix-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the prefix set -- this is used to\nreference the set in match conditions"}]},"get":{"description":"List of the defined prefix sets","summary":"GET - Controller - openconfig-routing-policy - prefix-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set"}},"application/json":{"schema":{"properties":{"prefix-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"prefix-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the prefix set -- this is used to\nreference the set in match conditions"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/prefix-sets/prefix-set={prefix-set-name}/prefix={ip-prefix},{masklength-range}":{"put":{"description":"List of prefix expressions that are part of the set","summary":"PUT - openconfig-routing-policy - Controller - prefix","requestBody":{"description":"prefix","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:prefix":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set_prefix","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set_prefix"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"prefix-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the prefix set -- this is used to\nreference the set in match conditions"},{"name":"ip-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"The prefix member in CIDR notation -- while the\nprefix may be either IPv4 or IPv6, most\nimplementations require all members of the prefix set\nto be the same address family.  Mixing address types in\nthe same prefix set is likely to cause an error."},{"name":"masklength-range","in":"path","required":true,"schema":{"type":"string"},"description":"Defines a range for the masklength, or 'exact' if\nthe prefix has an exact length.\n\nExample: 10.3.192.0/21 through 10.3.192.0/24 would be\nexpressed as prefix: 10.3.192.0/21,\nmasklength-range: 21..24.\n\nExample: 10.3.192.0/21 would be expressed as\nprefix: 10.3.192.0/21,\nmasklength-range: exact"}]},"patch":{"description":"List of prefix expressions that are part of the set","summary":"PATCH - openconfig-routing-policy - Controller - prefix","requestBody":{"description":"prefix","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:prefix":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set_prefix","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set_prefix"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"prefix-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the prefix set -- this is used to\nreference the set in match conditions"},{"name":"ip-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"The prefix member in CIDR notation -- while the\nprefix may be either IPv4 or IPv6, most\nimplementations require all members of the prefix set\nto be the same address family.  Mixing address types in\nthe same prefix set is likely to cause an error."},{"name":"masklength-range","in":"path","required":true,"schema":{"type":"string"},"description":"Defines a range for the masklength, or 'exact' if\nthe prefix has an exact length.\n\nExample: 10.3.192.0/21 through 10.3.192.0/24 would be\nexpressed as prefix: 10.3.192.0/21,\nmasklength-range: 21..24.\n\nExample: 10.3.192.0/21 would be expressed as\nprefix: 10.3.192.0/21,\nmasklength-range: exact"}]},"delete":{"description":"List of prefix expressions that are part of the set","summary":"DELETE - Controller - openconfig-routing-policy - prefix","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"prefix-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the prefix set -- this is used to\nreference the set in match conditions"},{"name":"ip-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"The prefix member in CIDR notation -- while the\nprefix may be either IPv4 or IPv6, most\nimplementations require all members of the prefix set\nto be the same address family.  Mixing address types in\nthe same prefix set is likely to cause an error."},{"name":"masklength-range","in":"path","required":true,"schema":{"type":"string"},"description":"Defines a range for the masklength, or 'exact' if\nthe prefix has an exact length.\n\nExample: 10.3.192.0/21 through 10.3.192.0/24 would be\nexpressed as prefix: 10.3.192.0/21,\nmasklength-range: 21..24.\n\nExample: 10.3.192.0/21 would be expressed as\nprefix: 10.3.192.0/21,\nmasklength-range: exact"}]},"get":{"description":"List of prefix expressions that are part of the set","summary":"GET - Controller - openconfig-routing-policy - prefix","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set_prefix"}},"application/json":{"schema":{"properties":{"prefix":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set_prefix","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"prefix-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the prefix set -- this is used to\nreference the set in match conditions"},{"name":"ip-prefix","in":"path","required":true,"schema":{"type":"string"},"description":"The prefix member in CIDR notation -- while the\nprefix may be either IPv4 or IPv6, most\nimplementations require all members of the prefix set\nto be the same address family.  Mixing address types in\nthe same prefix set is likely to cause an error."},{"name":"masklength-range","in":"path","required":true,"schema":{"type":"string"},"description":"Defines a range for the masklength, or 'exact' if\nthe prefix has an exact length.\n\nExample: 10.3.192.0/21 through 10.3.192.0/24 would be\nexpressed as prefix: 10.3.192.0/21,\nmasklength-range: 21..24.\n\nExample: 10.3.192.0/21 would be expressed as\nprefix: 10.3.192.0/21,\nmasklength-range: exact"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/neighbor-sets":{"post":{"description":"Enclosing container for defined neighbor sets for matching\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - neighbor-sets","requestBody":{"description":"neighbor-set","content":{"application/json":{"schema":{"properties":{"neighbor-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"put":{"description":"Enclosing container for defined neighbor sets for matching","summary":"PUT - openconfig-routing-policy - Controller - neighbor-sets","requestBody":{"description":"neighbor-sets","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:neighbor-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"patch":{"description":"Enclosing container for defined neighbor sets for matching","summary":"PATCH - openconfig-routing-policy - Controller - neighbor-sets","requestBody":{"description":"neighbor-sets","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:neighbor-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"delete":{"description":"Enclosing container for defined neighbor sets for matching","summary":"DELETE - Controller - openconfig-routing-policy - neighbor-sets","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"get":{"description":"Enclosing container for defined neighbor sets for matching","summary":"GET - Controller - openconfig-routing-policy - neighbor-sets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets"}},"application/json":{"schema":{"properties":{"neighbor-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/neighbor-sets/neighbor-set={neighbor-set-name}":{"put":{"description":"Definitions for neighbor sets","summary":"PUT - openconfig-routing-policy - Controller - neighbor-set","requestBody":{"description":"neighbor-set","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:neighbor-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"neighbor-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the neighbor set -- this is used to\nreference the set in match conditions"}]},"patch":{"description":"Definitions for neighbor sets","summary":"PATCH - openconfig-routing-policy - Controller - neighbor-set","requestBody":{"description":"neighbor-set","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:neighbor-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"neighbor-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the neighbor set -- this is used to\nreference the set in match conditions"}]},"delete":{"description":"Definitions for neighbor sets","summary":"DELETE - Controller - openconfig-routing-policy - neighbor-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"neighbor-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the neighbor set -- this is used to\nreference the set in match conditions"}]},"get":{"description":"Definitions for neighbor sets","summary":"GET - Controller - openconfig-routing-policy - neighbor-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set"}},"application/json":{"schema":{"properties":{"neighbor-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"neighbor-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the neighbor set -- this is used to\nreference the set in match conditions"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/neighbor-sets/neighbor-set={neighbor-set-name}/neighbor={address}":{"put":{"description":"list of addresses that are part of the neighbor set","summary":"PUT - openconfig-routing-policy - Controller - neighbor","requestBody":{"description":"neighbor","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:neighbor":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set_neighbor","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set_neighbor"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"neighbor-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the neighbor set -- this is used to\nreference the set in match conditions"},{"name":"address","in":"path","required":true,"schema":{"type":"string"},"description":"IP address of the neighbor set member"}]},"patch":{"description":"list of addresses that are part of the neighbor set","summary":"PATCH - openconfig-routing-policy - Controller - neighbor","requestBody":{"description":"neighbor","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:neighbor":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set_neighbor","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set_neighbor"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"neighbor-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the neighbor set -- this is used to\nreference the set in match conditions"},{"name":"address","in":"path","required":true,"schema":{"type":"string"},"description":"IP address of the neighbor set member"}]},"delete":{"description":"list of addresses that are part of the neighbor set","summary":"DELETE - Controller - openconfig-routing-policy - neighbor","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"neighbor-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the neighbor set -- this is used to\nreference the set in match conditions"},{"name":"address","in":"path","required":true,"schema":{"type":"string"},"description":"IP address of the neighbor set member"}]},"get":{"description":"list of addresses that are part of the neighbor set","summary":"GET - Controller - openconfig-routing-policy - neighbor","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set_neighbor"}},"application/json":{"schema":{"properties":{"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set_neighbor","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"neighbor-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the neighbor set -- this is used to\nreference the set in match conditions"},{"name":"address","in":"path","required":true,"schema":{"type":"string"},"description":"IP address of the neighbor set member"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/tag-sets":{"post":{"description":"Enclosing container for defined tag sets for matching\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - tag-sets","requestBody":{"description":"tag-set","content":{"application/json":{"schema":{"properties":{"tag-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"put":{"description":"Enclosing container for defined tag sets for matching","summary":"PUT - openconfig-routing-policy - Controller - tag-sets","requestBody":{"description":"tag-sets","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:tag-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"patch":{"description":"Enclosing container for defined tag sets for matching","summary":"PATCH - openconfig-routing-policy - Controller - tag-sets","requestBody":{"description":"tag-sets","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:tag-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"delete":{"description":"Enclosing container for defined tag sets for matching","summary":"DELETE - Controller - openconfig-routing-policy - tag-sets","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"get":{"description":"Enclosing container for defined tag sets for matching","summary":"GET - Controller - openconfig-routing-policy - tag-sets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets"}},"application/json":{"schema":{"properties":{"tag-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/tag-sets/tag-set={tag-set-name}":{"put":{"description":"Definitions for tag sets","summary":"PUT - openconfig-routing-policy - Controller - tag-set","requestBody":{"description":"tag-set","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:tag-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"tag-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the tag set -- this is used to reference\nthe set in match conditions"}]},"patch":{"description":"Definitions for tag sets","summary":"PATCH - openconfig-routing-policy - Controller - tag-set","requestBody":{"description":"tag-set","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:tag-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"tag-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the tag set -- this is used to reference\nthe set in match conditions"}]},"delete":{"description":"Definitions for tag sets","summary":"DELETE - Controller - openconfig-routing-policy - tag-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"tag-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the tag set -- this is used to reference\nthe set in match conditions"}]},"get":{"description":"Definitions for tag sets","summary":"GET - Controller - openconfig-routing-policy - tag-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set"}},"application/json":{"schema":{"properties":{"tag-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"tag-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the tag set -- this is used to reference\nthe set in match conditions"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/tag-sets/tag-set={tag-set-name}/tag={value}":{"put":{"description":"list of tags that are part of the tag set","summary":"PUT - openconfig-routing-policy - Controller - tag","requestBody":{"description":"tag","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:tag":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set_tag","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set_tag"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"tag-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the tag set -- this is used to reference\nthe set in match conditions"},{"name":"value","in":"path","required":true,"schema":{"type":"string"},"description":"Value of the tag set member"}]},"patch":{"description":"list of tags that are part of the tag set","summary":"PATCH - openconfig-routing-policy - Controller - tag","requestBody":{"description":"tag","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:tag":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set_tag","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set_tag"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"tag-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the tag set -- this is used to reference\nthe set in match conditions"},{"name":"value","in":"path","required":true,"schema":{"type":"string"},"description":"Value of the tag set member"}]},"delete":{"description":"list of tags that are part of the tag set","summary":"DELETE - Controller - openconfig-routing-policy - tag","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"tag-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the tag set -- this is used to reference\nthe set in match conditions"},{"name":"value","in":"path","required":true,"schema":{"type":"string"},"description":"Value of the tag set member"}]},"get":{"description":"list of tags that are part of the tag set","summary":"GET - Controller - openconfig-routing-policy - tag","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set_tag"}},"application/json":{"schema":{"properties":{"tag":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set_tag","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"tag-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the tag set -- this is used to reference\nthe set in match conditions"},{"name":"value","in":"path","required":true,"schema":{"type":"string"},"description":"Value of the tag set member"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets":{"post":{"description":"BGP-related set definitions for policy match conditions\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - bgp-defined-sets","requestBody":{"description":"community-sets","content":{"application/json":{"schema":{"properties":{"community-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"put":{"description":"BGP-related set definitions for policy match conditions","summary":"PUT - openconfig-routing-policy - Controller - bgp-defined-sets","requestBody":{"description":"bgp-defined-sets","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:bgp-defined-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"patch":{"description":"BGP-related set definitions for policy match conditions","summary":"PATCH - openconfig-routing-policy - Controller - bgp-defined-sets","requestBody":{"description":"bgp-defined-sets","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:bgp-defined-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"delete":{"description":"BGP-related set definitions for policy match conditions","summary":"DELETE - Controller - openconfig-routing-policy - bgp-defined-sets","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"get":{"description":"BGP-related set definitions for policy match conditions","summary":"GET - Controller - openconfig-routing-policy - bgp-defined-sets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets"}},"application/json":{"schema":{"properties":{"bgp-defined-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/community-sets":{"post":{"description":"Enclosing container for community sets\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - community-sets","requestBody":{"description":"community-set","content":{"application/json":{"schema":{"properties":{"community-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"put":{"description":"Enclosing container for community sets","summary":"PUT - openconfig-routing-policy - Controller - community-sets","requestBody":{"description":"community-sets","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:community-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"patch":{"description":"Enclosing container for community sets","summary":"PATCH - openconfig-routing-policy - Controller - community-sets","requestBody":{"description":"community-sets","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:community-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"delete":{"description":"Enclosing container for community sets","summary":"DELETE - Controller - openconfig-routing-policy - community-sets","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"get":{"description":"Enclosing container for community sets","summary":"GET - Controller - openconfig-routing-policy - community-sets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets"}},"application/json":{"schema":{"properties":{"community-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/community-sets/community-set={community-set-name}":{"put":{"description":"Definitions for community sets","summary":"PUT - openconfig-routing-policy - Controller - community-set","requestBody":{"description":"community-set","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:community-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the community set -- this is used to\nreference the set in match conditions"}]},"patch":{"description":"Definitions for community sets","summary":"PATCH - openconfig-routing-policy - Controller - community-set","requestBody":{"description":"community-set","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:community-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the community set -- this is used to\nreference the set in match conditions"}]},"delete":{"description":"Definitions for community sets","summary":"DELETE - Controller - openconfig-routing-policy - community-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the community set -- this is used to\nreference the set in match conditions"}]},"get":{"description":"Definitions for community sets","summary":"GET - Controller - openconfig-routing-policy - community-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set"}},"application/json":{"schema":{"properties":{"community-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the community set -- this is used to\nreference the set in match conditions"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/community-sets/community-set={community-set-name}/communities":{"put":{"description":"members of the community set","summary":"PUT - openconfig-routing-policy - Controller - communities","requestBody":{"description":"communities","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:communities":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set_communities","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set_communities"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the community set -- this is used to\nreference the set in match conditions"}]},"patch":{"description":"members of the community set","summary":"PATCH - openconfig-routing-policy - Controller - communities","requestBody":{"description":"communities","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:communities":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set_communities","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set_communities"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the community set -- this is used to\nreference the set in match conditions"}]},"delete":{"description":"members of the community set","summary":"DELETE - Controller - openconfig-routing-policy - communities","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the community set -- this is used to\nreference the set in match conditions"}]},"get":{"description":"members of the community set","summary":"GET - Controller - openconfig-routing-policy - communities","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set_communities"}},"application/json":{"schema":{"properties":{"communities":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set_communities","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the community set -- this is used to\nreference the set in match conditions"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/ext-community-sets":{"post":{"description":"Enclosing container for extended community sets\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - ext-community-sets","requestBody":{"description":"ext-community-set","content":{"application/json":{"schema":{"properties":{"ext-community-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"put":{"description":"Enclosing container for extended community sets","summary":"PUT - openconfig-routing-policy - Controller - ext-community-sets","requestBody":{"description":"ext-community-sets","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:ext-community-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"patch":{"description":"Enclosing container for extended community sets","summary":"PATCH - openconfig-routing-policy - Controller - ext-community-sets","requestBody":{"description":"ext-community-sets","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:ext-community-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"delete":{"description":"Enclosing container for extended community sets","summary":"DELETE - Controller - openconfig-routing-policy - ext-community-sets","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"get":{"description":"Enclosing container for extended community sets","summary":"GET - Controller - openconfig-routing-policy - ext-community-sets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets"}},"application/json":{"schema":{"properties":{"ext-community-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/ext-community-sets/ext-community-set={ext-community-set-name}":{"put":{"description":"Definitions for extended community sets","summary":"PUT - openconfig-routing-policy - Controller - ext-community-set","requestBody":{"description":"ext-community-set","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:ext-community-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"ext-community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the extended community set -- this is\nused to reference the set in match conditions"}]},"patch":{"description":"Definitions for extended community sets","summary":"PATCH - openconfig-routing-policy - Controller - ext-community-set","requestBody":{"description":"ext-community-set","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:ext-community-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"ext-community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the extended community set -- this is\nused to reference the set in match conditions"}]},"delete":{"description":"Definitions for extended community sets","summary":"DELETE - Controller - openconfig-routing-policy - ext-community-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"ext-community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the extended community set -- this is\nused to reference the set in match conditions"}]},"get":{"description":"Definitions for extended community sets","summary":"GET - Controller - openconfig-routing-policy - ext-community-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set"}},"application/json":{"schema":{"properties":{"ext-community-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"ext-community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the extended community set -- this is\nused to reference the set in match conditions"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/ext-community-sets/ext-community-set={ext-community-set-name}/ext-community-member":{"put":{"description":"members of the extended community set","summary":"PUT - openconfig-routing-policy - Controller - ext-community-member","requestBody":{"description":"ext-community-member","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:ext-community-member":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set_ext-community-member","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set_ext-community-member"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"ext-community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the extended community set -- this is\nused to reference the set in match conditions"}]},"patch":{"description":"members of the extended community set","summary":"PATCH - openconfig-routing-policy - Controller - ext-community-member","requestBody":{"description":"ext-community-member","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:ext-community-member":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set_ext-community-member","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set_ext-community-member"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"ext-community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the extended community set -- this is\nused to reference the set in match conditions"}]},"delete":{"description":"members of the extended community set","summary":"DELETE - Controller - openconfig-routing-policy - ext-community-member","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"ext-community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the extended community set -- this is\nused to reference the set in match conditions"}]},"get":{"description":"members of the extended community set","summary":"GET - Controller - openconfig-routing-policy - ext-community-member","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set_ext-community-member"}},"application/json":{"schema":{"properties":{"ext-community-member":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set_ext-community-member","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"ext-community-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the extended community set -- this is\nused to reference the set in match conditions"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/as-path-sets":{"post":{"description":"Enclosing container for AS path sets\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - as-path-sets","requestBody":{"description":"as-path-set","content":{"application/json":{"schema":{"properties":{"as-path-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets_as-path-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets_as-path-set"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"put":{"description":"Enclosing container for AS path sets","summary":"PUT - openconfig-routing-policy - Controller - as-path-sets","requestBody":{"description":"as-path-sets","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:as-path-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"patch":{"description":"Enclosing container for AS path sets","summary":"PATCH - openconfig-routing-policy - Controller - as-path-sets","requestBody":{"description":"as-path-sets","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:as-path-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"delete":{"description":"Enclosing container for AS path sets","summary":"DELETE - Controller - openconfig-routing-policy - as-path-sets","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"get":{"description":"Enclosing container for AS path sets","summary":"GET - Controller - openconfig-routing-policy - as-path-sets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets"}},"application/json":{"schema":{"properties":{"as-path-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/as-path-sets/as-path-set={as-path-set-name}":{"put":{"description":"Definitions for AS path sets","summary":"PUT - openconfig-routing-policy - Controller - as-path-set","requestBody":{"description":"as-path-set","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:as-path-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets_as-path-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets_as-path-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"as-path-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name of the AS path set -- this is used to reference\nthe set in match conditions"}]},"patch":{"description":"Definitions for AS path sets","summary":"PATCH - openconfig-routing-policy - Controller - as-path-set","requestBody":{"description":"as-path-set","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:as-path-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets_as-path-set","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets_as-path-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"as-path-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name of the AS path set -- this is used to reference\nthe set in match conditions"}]},"delete":{"description":"Definitions for AS path sets","summary":"DELETE - Controller - openconfig-routing-policy - as-path-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"as-path-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name of the AS path set -- this is used to reference\nthe set in match conditions"}]},"get":{"description":"Definitions for AS path sets","summary":"GET - Controller - openconfig-routing-policy - as-path-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets_as-path-set"}},"application/json":{"schema":{"properties":{"as-path-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets_as-path-set","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"as-path-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name of the AS path set -- this is used to reference\nthe set in match conditions"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/odl-bgp-policy:originator-id-sets":{"post":{"description":"Enclosing container for defined role sets for matching\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - originator-id-sets","requestBody":{"description":"originator-id-set","content":{"application/json":{"schema":{"properties":{"originator-id-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"put":{"description":"Enclosing container for defined role sets for matching","summary":"PUT - openconfig-routing-policy - Controller - originator-id-sets","requestBody":{"description":"originator-id-sets","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:originator-id-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"patch":{"description":"Enclosing container for defined role sets for matching","summary":"PATCH - openconfig-routing-policy - Controller - originator-id-sets","requestBody":{"description":"originator-id-sets","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:originator-id-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"delete":{"description":"Enclosing container for defined role sets for matching","summary":"DELETE - Controller - openconfig-routing-policy - originator-id-sets","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"get":{"description":"Enclosing container for defined role sets for matching","summary":"GET - Controller - openconfig-routing-policy - originator-id-sets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets"}},"application/json":{"schema":{"properties":{"originator-id-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/odl-bgp-policy:originator-id-sets/originator-id-set={originator-id-set-name}":{"put":{"description":"List of the defined Originators Ids sets","summary":"PUT - openconfig-routing-policy - Controller - originator-id-set","requestBody":{"description":"originator-id-set","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:originator-id-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"originator-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"}]},"patch":{"description":"List of the defined Originators Ids sets","summary":"PATCH - openconfig-routing-policy - Controller - originator-id-set","requestBody":{"description":"originator-id-set","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:originator-id-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"originator-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"}]},"delete":{"description":"List of the defined Originators Ids sets","summary":"DELETE - Controller - openconfig-routing-policy - originator-id-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"originator-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"}]},"get":{"description":"List of the defined Originators Ids sets","summary":"GET - Controller - openconfig-routing-policy - originator-id-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set"}},"application/json":{"schema":{"properties":{"originator-id-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"originator-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/odl-bgp-policy:originator-id-sets/originator-id-set={originator-id-set-name}/local":{"put":{"description":"Validates also Local Originator Id","summary":"PUT - openconfig-routing-policy - Controller - local","requestBody":{"description":"local","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:local":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set_local","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set_local"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"originator-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"}]},"patch":{"description":"Validates also Local Originator Id","summary":"PATCH - openconfig-routing-policy - Controller - local","requestBody":{"description":"local","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:local":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set_local","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set_local"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"originator-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"}]},"delete":{"description":"Validates also Local Originator Id","summary":"DELETE - Controller - openconfig-routing-policy - local","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"originator-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"}]},"get":{"description":"Validates also Local Originator Id","summary":"GET - Controller - openconfig-routing-policy - local","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set_local"}},"application/json":{"schema":{"properties":{"local":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set_local","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"originator-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/odl-bgp-policy:cluster-id-sets":{"post":{"description":"Enclosing container for defined cluster-id sets for matching\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - cluster-id-sets","requestBody":{"description":"cluster-id-set","content":{"application/json":{"schema":{"properties":{"cluster-id-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"put":{"description":"Enclosing container for defined cluster-id sets for matching","summary":"PUT - openconfig-routing-policy - Controller - cluster-id-sets","requestBody":{"description":"cluster-id-sets","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:cluster-id-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"patch":{"description":"Enclosing container for defined cluster-id sets for matching","summary":"PATCH - openconfig-routing-policy - Controller - cluster-id-sets","requestBody":{"description":"cluster-id-sets","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:cluster-id-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"delete":{"description":"Enclosing container for defined cluster-id sets for matching","summary":"DELETE - Controller - openconfig-routing-policy - cluster-id-sets","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"get":{"description":"Enclosing container for defined cluster-id sets for matching","summary":"GET - Controller - openconfig-routing-policy - cluster-id-sets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets"}},"application/json":{"schema":{"properties":{"cluster-id-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/odl-bgp-policy:cluster-id-sets/cluster-id-set={cluster-id-set-name}":{"put":{"description":"List of the defined cluster Ids sets","summary":"PUT - openconfig-routing-policy - Controller - cluster-id-set","requestBody":{"description":"cluster-id-set","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:cluster-id-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"cluster-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"}]},"patch":{"description":"List of the defined cluster Ids sets","summary":"PATCH - openconfig-routing-policy - Controller - cluster-id-set","requestBody":{"description":"cluster-id-set","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:cluster-id-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"cluster-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"}]},"delete":{"description":"List of the defined cluster Ids sets","summary":"DELETE - Controller - openconfig-routing-policy - cluster-id-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"cluster-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"}]},"get":{"description":"List of the defined cluster Ids sets","summary":"GET - Controller - openconfig-routing-policy - cluster-id-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set"}},"application/json":{"schema":{"properties":{"cluster-id-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"cluster-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/odl-bgp-policy:cluster-id-sets/cluster-id-set={cluster-id-set-name}/local":{"put":{"description":"Validates also cluster Originator Id","summary":"PUT - openconfig-routing-policy - Controller - local","requestBody":{"description":"local","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:local":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set_local","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set_local"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"cluster-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"}]},"patch":{"description":"Validates also cluster Originator Id","summary":"PATCH - openconfig-routing-policy - Controller - local","requestBody":{"description":"local","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:local":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set_local","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set_local"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"cluster-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"}]},"delete":{"description":"Validates also cluster Originator Id","summary":"DELETE - Controller - openconfig-routing-policy - local","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"cluster-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"}]},"get":{"description":"Validates also cluster Originator Id","summary":"GET - Controller - openconfig-routing-policy - local","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set_local"}},"application/json":{"schema":{"properties":{"local":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set_local","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"cluster-id-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the set -- this is used to\nreference the set in match conditions"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/odl-bgp-policy:role-sets":{"post":{"description":"Enclosing container for defined role sets for matching\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - role-sets","requestBody":{"description":"role-set","content":{"application/json":{"schema":{"properties":{"role-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets_role-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets_role-set"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"put":{"description":"Enclosing container for defined role sets for matching","summary":"PUT - openconfig-routing-policy - Controller - role-sets","requestBody":{"description":"role-sets","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:role-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"patch":{"description":"Enclosing container for defined role sets for matching","summary":"PATCH - openconfig-routing-policy - Controller - role-sets","requestBody":{"description":"role-sets","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:role-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"delete":{"description":"Enclosing container for defined role sets for matching","summary":"DELETE - Controller - openconfig-routing-policy - role-sets","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"get":{"description":"Enclosing container for defined role sets for matching","summary":"GET - Controller - openconfig-routing-policy - role-sets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets"}},"application/json":{"schema":{"properties":{"role-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/defined-sets/openconfig-bgp-policy:bgp-defined-sets/odl-bgp-policy:role-sets/role-set={role-set-name}":{"put":{"description":"List of the defined role sets","summary":"PUT - openconfig-routing-policy - Controller - role-set","requestBody":{"description":"role-set","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:role-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets_role-set","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets_role-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"role-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the role set -- this is used to\nreference the set in match conditions"}]},"patch":{"description":"List of the defined role sets","summary":"PATCH - openconfig-routing-policy - Controller - role-set","requestBody":{"description":"role-set","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:role-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets_role-set","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets_role-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"role-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the role set -- this is used to\nreference the set in match conditions"}]},"delete":{"description":"List of the defined role sets","summary":"DELETE - Controller - openconfig-routing-policy - role-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"role-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the role set -- this is used to\nreference the set in match conditions"}]},"get":{"description":"List of the defined role sets","summary":"GET - Controller - openconfig-routing-policy - role-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets_role-set"}},"application/json":{"schema":{"properties":{"role-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets_role-set","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"role-set-name","in":"path","required":true,"schema":{"type":"string"},"description":"name / label of the role set -- this is used to\nreference the set in match conditions"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions":{"post":{"description":"Enclosing container for the list of top-level policy\ndefinitions\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - policy-definitions","requestBody":{"description":"policy-definition","content":{"application/json":{"schema":{"properties":{"policy-definition":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"put":{"description":"Enclosing container for the list of top-level policy\ndefinitions","summary":"PUT - openconfig-routing-policy - Controller - policy-definitions","requestBody":{"description":"policy-definitions","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:policy-definitions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"patch":{"description":"Enclosing container for the list of top-level policy\ndefinitions","summary":"PATCH - openconfig-routing-policy - Controller - policy-definitions","requestBody":{"description":"policy-definitions","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:policy-definitions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"delete":{"description":"Enclosing container for the list of top-level policy\ndefinitions","summary":"DELETE - Controller - openconfig-routing-policy - policy-definitions","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[]},"get":{"description":"Enclosing container for the list of top-level policy\ndefinitions","summary":"GET - Controller - openconfig-routing-policy - policy-definitions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions"}},"application/json":{"schema":{"properties":{"policy-definitions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}":{"put":{"description":"List of top-level policy definitions, keyed by unique\nname.  These policy definitions are expected to be\nreferenced (by name) in policy chains specified in import\nor export configuration statements.","summary":"PUT - openconfig-routing-policy - Controller - policy-definition","requestBody":{"description":"policy-definition","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:policy-definition":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"}]},"patch":{"description":"List of top-level policy definitions, keyed by unique\nname.  These policy definitions are expected to be\nreferenced (by name) in policy chains specified in import\nor export configuration statements.","summary":"PATCH - openconfig-routing-policy - Controller - policy-definition","requestBody":{"description":"policy-definition","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:policy-definition":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"}]},"delete":{"description":"List of top-level policy definitions, keyed by unique\nname.  These policy definitions are expected to be\nreferenced (by name) in policy chains specified in import\nor export configuration statements.","summary":"DELETE - Controller - openconfig-routing-policy - policy-definition","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"}]},"get":{"description":"List of top-level policy definitions, keyed by unique\nname.  These policy definitions are expected to be\nreferenced (by name) in policy chains specified in import\nor export configuration statements.","summary":"GET - Controller - openconfig-routing-policy - policy-definition","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition"}},"application/json":{"schema":{"properties":{"policy-definition":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements":{"post":{"description":"Enclosing container for policy statements\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - statements","requestBody":{"description":"statement","content":{"application/json":{"schema":{"properties":{"statement":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"}]},"put":{"description":"Enclosing container for policy statements","summary":"PUT - openconfig-routing-policy - Controller - statements","requestBody":{"description":"statements","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:statements":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"}]},"patch":{"description":"Enclosing container for policy statements","summary":"PATCH - openconfig-routing-policy - Controller - statements","requestBody":{"description":"statements","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:statements":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"}]},"delete":{"description":"Enclosing container for policy statements","summary":"DELETE - Controller - openconfig-routing-policy - statements","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"}]},"get":{"description":"Enclosing container for policy statements","summary":"GET - Controller - openconfig-routing-policy - statements","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements"}},"application/json":{"schema":{"properties":{"statements":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}":{"put":{"description":"Policy statements group conditions and actions\nwithin a policy definition.  They are evaluated in\nthe order specified (see the description of policy\nevaluation at the top of this module.","summary":"PUT - openconfig-routing-policy - Controller - statement","requestBody":{"description":"statement","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:statement":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Policy statements group conditions and actions\nwithin a policy definition.  They are evaluated in\nthe order specified (see the description of policy\nevaluation at the top of this module.","summary":"PATCH - openconfig-routing-policy - Controller - statement","requestBody":{"description":"statement","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:statement":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Policy statements group conditions and actions\nwithin a policy definition.  They are evaluated in\nthe order specified (see the description of policy\nevaluation at the top of this module.","summary":"DELETE - Controller - openconfig-routing-policy - statement","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Policy statements group conditions and actions\nwithin a policy definition.  They are evaluated in\nthe order specified (see the description of policy\nevaluation at the top of this module.","summary":"GET - Controller - openconfig-routing-policy - statement","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement"}},"application/json":{"schema":{"properties":{"statement":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement","type":"object"}}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions":{"post":{"description":"Condition statements for this\npolicy statement\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - conditions","requestBody":{"description":"igp-conditions","content":{"application/json":{"schema":{"properties":{"igp-conditions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_igp-conditions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_igp-conditions"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"put":{"description":"Condition statements for this\npolicy statement","summary":"PUT - openconfig-routing-policy - Controller - conditions","requestBody":{"description":"conditions","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:conditions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Condition statements for this\npolicy statement","summary":"PATCH - openconfig-routing-policy - Controller - conditions","requestBody":{"description":"conditions","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:conditions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Condition statements for this\npolicy statement","summary":"DELETE - Controller - openconfig-routing-policy - conditions","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Condition statements for this\npolicy statement","summary":"GET - Controller - openconfig-routing-policy - conditions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions"}},"application/json":{"schema":{"properties":{"conditions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/igp-conditions":{"put":{"description":"Policy conditions for IGP attributes","summary":"PUT - openconfig-routing-policy - Controller - igp-conditions","requestBody":{"description":"igp-conditions","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:igp-conditions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_igp-conditions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_igp-conditions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Policy conditions for IGP attributes","summary":"PATCH - openconfig-routing-policy - Controller - igp-conditions","requestBody":{"description":"igp-conditions","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:igp-conditions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_igp-conditions","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_igp-conditions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Policy conditions for IGP attributes","summary":"DELETE - Controller - openconfig-routing-policy - igp-conditions","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Policy conditions for IGP attributes","summary":"GET - Controller - openconfig-routing-policy - igp-conditions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_igp-conditions"}},"application/json":{"schema":{"properties":{"igp-conditions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_igp-conditions","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/match-prefix-set":{"put":{"description":"Match a referenced prefix-set according to the logic\ndefined in the match-set-options leaf","summary":"PUT - openconfig-routing-policy - Controller - match-prefix-set","requestBody":{"description":"match-prefix-set","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:match-prefix-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-prefix-set","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-prefix-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Match a referenced prefix-set according to the logic\ndefined in the match-set-options leaf","summary":"PATCH - openconfig-routing-policy - Controller - match-prefix-set","requestBody":{"description":"match-prefix-set","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:match-prefix-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-prefix-set","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-prefix-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Match a referenced prefix-set according to the logic\ndefined in the match-set-options leaf","summary":"DELETE - Controller - openconfig-routing-policy - match-prefix-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Match a referenced prefix-set according to the logic\ndefined in the match-set-options leaf","summary":"GET - Controller - openconfig-routing-policy - match-prefix-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-prefix-set"}},"application/json":{"schema":{"properties":{"match-prefix-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-prefix-set","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/match-neighbor-set":{"put":{"description":"Match a referenced neighbor set according to the logic\ndefined in the match-set-options-leaf","summary":"PUT - openconfig-routing-policy - Controller - match-neighbor-set","requestBody":{"description":"match-neighbor-set","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:match-neighbor-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-neighbor-set","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-neighbor-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Match a referenced neighbor set according to the logic\ndefined in the match-set-options-leaf","summary":"PATCH - openconfig-routing-policy - Controller - match-neighbor-set","requestBody":{"description":"match-neighbor-set","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:match-neighbor-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-neighbor-set","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-neighbor-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Match a referenced neighbor set according to the logic\ndefined in the match-set-options-leaf","summary":"DELETE - Controller - openconfig-routing-policy - match-neighbor-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Match a referenced neighbor set according to the logic\ndefined in the match-set-options-leaf","summary":"GET - Controller - openconfig-routing-policy - match-neighbor-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-neighbor-set"}},"application/json":{"schema":{"properties":{"match-neighbor-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-neighbor-set","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/match-tag-set":{"put":{"description":"Match a referenced tag set according to the logic defined\nin the match-options-set leaf","summary":"PUT - openconfig-routing-policy - Controller - match-tag-set","requestBody":{"description":"match-tag-set","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:match-tag-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-tag-set","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-tag-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Match a referenced tag set according to the logic defined\nin the match-options-set leaf","summary":"PATCH - openconfig-routing-policy - Controller - match-tag-set","requestBody":{"description":"match-tag-set","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:match-tag-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-tag-set","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-tag-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Match a referenced tag set according to the logic defined\nin the match-options-set leaf","summary":"DELETE - Controller - openconfig-routing-policy - match-tag-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Match a referenced tag set according to the logic defined\nin the match-options-set leaf","summary":"GET - Controller - openconfig-routing-policy - match-tag-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-tag-set"}},"application/json":{"schema":{"properties":{"match-tag-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-tag-set","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions":{"post":{"description":"Policy conditions for matching\nBGP-specific defined sets or comparing BGP-specific\nattributes\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - bgp-conditions","requestBody":{"description":"match-community-set","content":{"application/json":{"schema":{"properties":{"match-community-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-community-set","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-community-set"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"put":{"description":"Policy conditions for matching\nBGP-specific defined sets or comparing BGP-specific\nattributes","summary":"PUT - openconfig-routing-policy - Controller - bgp-conditions","requestBody":{"description":"bgp-conditions","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:bgp-conditions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Policy conditions for matching\nBGP-specific defined sets or comparing BGP-specific\nattributes","summary":"PATCH - openconfig-routing-policy - Controller - bgp-conditions","requestBody":{"description":"bgp-conditions","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:bgp-conditions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Policy conditions for matching\nBGP-specific defined sets or comparing BGP-specific\nattributes","summary":"DELETE - Controller - openconfig-routing-policy - bgp-conditions","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Policy conditions for matching\nBGP-specific defined sets or comparing BGP-specific\nattributes","summary":"GET - Controller - openconfig-routing-policy - bgp-conditions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions"}},"application/json":{"schema":{"properties":{"bgp-conditions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions/match-community-set":{"put":{"description":"Match a referenced community-set according to the logic\ndefined in the match-set-options leaf","summary":"PUT - openconfig-routing-policy - Controller - match-community-set","requestBody":{"description":"match-community-set","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:match-community-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-community-set","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-community-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Match a referenced community-set according to the logic\ndefined in the match-set-options leaf","summary":"PATCH - openconfig-routing-policy - Controller - match-community-set","requestBody":{"description":"match-community-set","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:match-community-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-community-set","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-community-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Match a referenced community-set according to the logic\ndefined in the match-set-options leaf","summary":"DELETE - Controller - openconfig-routing-policy - match-community-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Match a referenced community-set according to the logic\ndefined in the match-set-options leaf","summary":"GET - Controller - openconfig-routing-policy - match-community-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-community-set"}},"application/json":{"schema":{"properties":{"match-community-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-community-set","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions/match-ext-community-set":{"put":{"description":"Match a referenced extended community-set according to the\nlogic defined in the match-set-options leaf","summary":"PUT - openconfig-routing-policy - Controller - match-ext-community-set","requestBody":{"description":"match-ext-community-set","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:match-ext-community-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-ext-community-set","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-ext-community-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Match a referenced extended community-set according to the\nlogic defined in the match-set-options leaf","summary":"PATCH - openconfig-routing-policy - Controller - match-ext-community-set","requestBody":{"description":"match-ext-community-set","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:match-ext-community-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-ext-community-set","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-ext-community-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Match a referenced extended community-set according to the\nlogic defined in the match-set-options leaf","summary":"DELETE - Controller - openconfig-routing-policy - match-ext-community-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Match a referenced extended community-set according to the\nlogic defined in the match-set-options leaf","summary":"GET - Controller - openconfig-routing-policy - match-ext-community-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-ext-community-set"}},"application/json":{"schema":{"properties":{"match-ext-community-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-ext-community-set","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions/match-as-path-set":{"put":{"description":"Match a referenced as-path set according to the logic\ndefined in the match-set-options leaf","summary":"PUT - openconfig-routing-policy - Controller - match-as-path-set","requestBody":{"description":"match-as-path-set","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:match-as-path-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-as-path-set","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-as-path-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Match a referenced as-path set according to the logic\ndefined in the match-set-options leaf","summary":"PATCH - openconfig-routing-policy - Controller - match-as-path-set","requestBody":{"description":"match-as-path-set","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:match-as-path-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-as-path-set","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-as-path-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Match a referenced as-path set according to the logic\ndefined in the match-set-options leaf","summary":"DELETE - Controller - openconfig-routing-policy - match-as-path-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Match a referenced as-path set according to the logic\ndefined in the match-set-options leaf","summary":"GET - Controller - openconfig-routing-policy - match-as-path-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-as-path-set"}},"application/json":{"schema":{"properties":{"match-as-path-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-as-path-set","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions/community-count":{"put":{"description":"Value and comparison operations for conditions based on the\nnumber of communities in the route update","summary":"PUT - openconfig-routing-policy - Controller - community-count","requestBody":{"description":"community-count","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:community-count":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_community-count","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_community-count"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Value and comparison operations for conditions based on the\nnumber of communities in the route update","summary":"PATCH - openconfig-routing-policy - Controller - community-count","requestBody":{"description":"community-count","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:community-count":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_community-count","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_community-count"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Value and comparison operations for conditions based on the\nnumber of communities in the route update","summary":"DELETE - Controller - openconfig-routing-policy - community-count","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Value and comparison operations for conditions based on the\nnumber of communities in the route update","summary":"GET - Controller - openconfig-routing-policy - community-count","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_community-count"}},"application/json":{"schema":{"properties":{"community-count":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_community-count","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions/as-path-length":{"put":{"description":"Value and comparison operations for conditions based on the\nlength of the AS path in the route update","summary":"PUT - openconfig-routing-policy - Controller - as-path-length","requestBody":{"description":"as-path-length","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:as-path-length":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_as-path-length","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_as-path-length"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Value and comparison operations for conditions based on the\nlength of the AS path in the route update","summary":"PATCH - openconfig-routing-policy - Controller - as-path-length","requestBody":{"description":"as-path-length","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:as-path-length":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_as-path-length","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_as-path-length"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Value and comparison operations for conditions based on the\nlength of the AS path in the route update","summary":"DELETE - Controller - openconfig-routing-policy - as-path-length","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Value and comparison operations for conditions based on the\nlength of the AS path in the route update","summary":"GET - Controller - openconfig-routing-policy - as-path-length","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_as-path-length"}},"application/json":{"schema":{"properties":{"as-path-length":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_as-path-length","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions/odl-bgp-policy:vpn-non-member":{"put":{"description":"","summary":"PUT - openconfig-routing-policy - Controller - vpn-non-member","requestBody":{"description":"vpn-non-member","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:vpn-non-member":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_vpn-non-member","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_vpn-non-member"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"","summary":"PATCH - openconfig-routing-policy - Controller - vpn-non-member","requestBody":{"description":"vpn-non-member","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:vpn-non-member":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_vpn-non-member","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_vpn-non-member"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"","summary":"DELETE - Controller - openconfig-routing-policy - vpn-non-member","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"","summary":"GET - Controller - openconfig-routing-policy - vpn-non-member","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_vpn-non-member"}},"application/json":{"schema":{"properties":{"vpn-non-member":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_vpn-non-member","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions/odl-bgp-policy:match-role-set":{"post":{"description":"Match a list of referenced role-set according to the logic\ndefined in the match-set-options leaf\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - match-role-set","requestBody":{"description":"from-role","content":{"application/json":{"schema":{"properties":{"from-role":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_from-role","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_from-role"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"put":{"description":"Match a list of referenced role-set according to the logic\ndefined in the match-set-options leaf","summary":"PUT - openconfig-routing-policy - Controller - match-role-set","requestBody":{"description":"match-role-set","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:match-role-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Match a list of referenced role-set according to the logic\ndefined in the match-set-options leaf","summary":"PATCH - openconfig-routing-policy - Controller - match-role-set","requestBody":{"description":"match-role-set","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:match-role-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Match a list of referenced role-set according to the logic\ndefined in the match-set-options leaf","summary":"DELETE - Controller - openconfig-routing-policy - match-role-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Match a list of referenced role-set according to the logic\ndefined in the match-set-options leaf","summary":"GET - Controller - openconfig-routing-policy - match-role-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set"}},"application/json":{"schema":{"properties":{"match-role-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions/odl-bgp-policy:match-role-set/from-role":{"put":{"description":"","summary":"PUT - openconfig-routing-policy - Controller - from-role","requestBody":{"description":"from-role","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:from-role":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_from-role","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_from-role"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"","summary":"PATCH - openconfig-routing-policy - Controller - from-role","requestBody":{"description":"from-role","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:from-role":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_from-role","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_from-role"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"","summary":"DELETE - Controller - openconfig-routing-policy - from-role","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"","summary":"GET - Controller - openconfig-routing-policy - from-role","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_from-role"}},"application/json":{"schema":{"properties":{"from-role":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_from-role","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions/odl-bgp-policy:match-role-set/to-role":{"put":{"description":"","summary":"PUT - openconfig-routing-policy - Controller - to-role","requestBody":{"description":"to-role","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:to-role":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_to-role","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_to-role"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"","summary":"PATCH - openconfig-routing-policy - Controller - to-role","requestBody":{"description":"to-role","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:to-role":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_to-role","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_to-role"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"","summary":"DELETE - Controller - openconfig-routing-policy - to-role","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"","summary":"GET - Controller - openconfig-routing-policy - to-role","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_to-role"}},"application/json":{"schema":{"properties":{"to-role":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_to-role","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions/odl-bgp-policy:match-originator-id-set-condition":{"put":{"description":"","summary":"PUT - openconfig-routing-policy - Controller - match-originator-id-set-condition","requestBody":{"description":"match-originator-id-set-condition","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:match-originator-id-set-condition":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-originator-id-set-condition","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-originator-id-set-condition"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"","summary":"PATCH - openconfig-routing-policy - Controller - match-originator-id-set-condition","requestBody":{"description":"match-originator-id-set-condition","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:match-originator-id-set-condition":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-originator-id-set-condition","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-originator-id-set-condition"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"","summary":"DELETE - Controller - openconfig-routing-policy - match-originator-id-set-condition","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"","summary":"GET - Controller - openconfig-routing-policy - match-originator-id-set-condition","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-originator-id-set-condition"}},"application/json":{"schema":{"properties":{"match-originator-id-set-condition":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-originator-id-set-condition","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions/odl-bgp-policy:match-cluster-id-set-condition":{"put":{"description":"","summary":"PUT - openconfig-routing-policy - Controller - match-cluster-id-set-condition","requestBody":{"description":"match-cluster-id-set-condition","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:match-cluster-id-set-condition":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-cluster-id-set-condition","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-cluster-id-set-condition"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"","summary":"PATCH - openconfig-routing-policy - Controller - match-cluster-id-set-condition","requestBody":{"description":"match-cluster-id-set-condition","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:match-cluster-id-set-condition":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-cluster-id-set-condition","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-cluster-id-set-condition"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"","summary":"DELETE - Controller - openconfig-routing-policy - match-cluster-id-set-condition","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"","summary":"GET - Controller - openconfig-routing-policy - match-cluster-id-set-condition","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-cluster-id-set-condition"}},"application/json":{"schema":{"properties":{"match-cluster-id-set-condition":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-cluster-id-set-condition","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions/odl-bgp-policy:match-bgp-neighbor-set":{"post":{"description":"Match a referenced neighbor set according to the logic\ndefined in the match-set-options-leaf\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - match-bgp-neighbor-set","requestBody":{"description":"from-neighbor","content":{"application/json":{"schema":{"properties":{"from-neighbor":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_from-neighbor","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_from-neighbor"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"put":{"description":"Match a referenced neighbor set according to the logic\ndefined in the match-set-options-leaf","summary":"PUT - openconfig-routing-policy - Controller - match-bgp-neighbor-set","requestBody":{"description":"match-bgp-neighbor-set","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:match-bgp-neighbor-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Match a referenced neighbor set according to the logic\ndefined in the match-set-options-leaf","summary":"PATCH - openconfig-routing-policy - Controller - match-bgp-neighbor-set","requestBody":{"description":"match-bgp-neighbor-set","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:match-bgp-neighbor-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Match a referenced neighbor set according to the logic\ndefined in the match-set-options-leaf","summary":"DELETE - Controller - openconfig-routing-policy - match-bgp-neighbor-set","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Match a referenced neighbor set according to the logic\ndefined in the match-set-options-leaf","summary":"GET - Controller - openconfig-routing-policy - match-bgp-neighbor-set","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set"}},"application/json":{"schema":{"properties":{"match-bgp-neighbor-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions/odl-bgp-policy:match-bgp-neighbor-set/from-neighbor":{"put":{"description":"","summary":"PUT - openconfig-routing-policy - Controller - from-neighbor","requestBody":{"description":"from-neighbor","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:from-neighbor":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_from-neighbor","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_from-neighbor"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"","summary":"PATCH - openconfig-routing-policy - Controller - from-neighbor","requestBody":{"description":"from-neighbor","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:from-neighbor":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_from-neighbor","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_from-neighbor"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"","summary":"DELETE - Controller - openconfig-routing-policy - from-neighbor","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"","summary":"GET - Controller - openconfig-routing-policy - from-neighbor","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_from-neighbor"}},"application/json":{"schema":{"properties":{"from-neighbor":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_from-neighbor","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/conditions/openconfig-bgp-policy:bgp-conditions/odl-bgp-policy:match-bgp-neighbor-set/to-neighbor":{"put":{"description":"","summary":"PUT - openconfig-routing-policy - Controller - to-neighbor","requestBody":{"description":"to-neighbor","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:to-neighbor":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_to-neighbor","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_to-neighbor"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"","summary":"PATCH - openconfig-routing-policy - Controller - to-neighbor","requestBody":{"description":"to-neighbor","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:to-neighbor":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_to-neighbor","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_to-neighbor"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"","summary":"DELETE - Controller - openconfig-routing-policy - to-neighbor","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"","summary":"GET - Controller - openconfig-routing-policy - to-neighbor","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_to-neighbor"}},"application/json":{"schema":{"properties":{"to-neighbor":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_to-neighbor","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/actions":{"post":{"description":"Action statements for this policy\nstatement\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - actions","requestBody":{"description":"igp-actions","content":{"application/json":{"schema":{"properties":{"igp-actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_igp-actions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_igp-actions"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"put":{"description":"Action statements for this policy\nstatement","summary":"PUT - openconfig-routing-policy - Controller - actions","requestBody":{"description":"actions","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Action statements for this policy\nstatement","summary":"PATCH - openconfig-routing-policy - Controller - actions","requestBody":{"description":"actions","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Action statements for this policy\nstatement","summary":"DELETE - Controller - openconfig-routing-policy - actions","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Action statements for this policy\nstatement","summary":"GET - Controller - openconfig-routing-policy - actions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions"}},"application/json":{"schema":{"properties":{"actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/actions/igp-actions":{"put":{"description":"Actions to set IGP route attributes; these actions\napply to multiple IGPs","summary":"PUT - openconfig-routing-policy - Controller - igp-actions","requestBody":{"description":"igp-actions","content":{"application/json":{"schema":{"properties":{"openconfig-routing-policy:igp-actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_igp-actions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_igp-actions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Actions to set IGP route attributes; these actions\napply to multiple IGPs","summary":"PATCH - openconfig-routing-policy - Controller - igp-actions","requestBody":{"description":"igp-actions","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-routing-policy:igp-actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_igp-actions","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_igp-actions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Actions to set IGP route attributes; these actions\napply to multiple IGPs","summary":"DELETE - Controller - openconfig-routing-policy - igp-actions","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Actions to set IGP route attributes; these actions\napply to multiple IGPs","summary":"GET - Controller - openconfig-routing-policy - igp-actions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_igp-actions"}},"application/json":{"schema":{"properties":{"igp-actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_igp-actions","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/actions/openconfig-bgp-policy:bgp-actions":{"post":{"description":"Definitions for policy action statements that\nchange BGP-specific attributes of the route\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openconfig-routing-policy - bgp-actions","requestBody":{"description":"set-as-path-prepend","content":{"application/json":{"schema":{"properties":{"set-as-path-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-as-path-prepend","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-as-path-prepend"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"put":{"description":"Definitions for policy action statements that\nchange BGP-specific attributes of the route","summary":"PUT - openconfig-routing-policy - Controller - bgp-actions","requestBody":{"description":"bgp-actions","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:bgp-actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Definitions for policy action statements that\nchange BGP-specific attributes of the route","summary":"PATCH - openconfig-routing-policy - Controller - bgp-actions","requestBody":{"description":"bgp-actions","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:bgp-actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Definitions for policy action statements that\nchange BGP-specific attributes of the route","summary":"DELETE - Controller - openconfig-routing-policy - bgp-actions","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Definitions for policy action statements that\nchange BGP-specific attributes of the route","summary":"GET - Controller - openconfig-routing-policy - bgp-actions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions"}},"application/json":{"schema":{"properties":{"bgp-actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/actions/openconfig-bgp-policy:bgp-actions/set-as-path-prepend":{"put":{"description":"action to prepend local AS number to the AS-path a\nspecified number of times","summary":"PUT - openconfig-routing-policy - Controller - set-as-path-prepend","requestBody":{"description":"set-as-path-prepend","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:set-as-path-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-as-path-prepend","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-as-path-prepend"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"action to prepend local AS number to the AS-path a\nspecified number of times","summary":"PATCH - openconfig-routing-policy - Controller - set-as-path-prepend","requestBody":{"description":"set-as-path-prepend","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:set-as-path-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-as-path-prepend","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-as-path-prepend"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"action to prepend local AS number to the AS-path a\nspecified number of times","summary":"DELETE - Controller - openconfig-routing-policy - set-as-path-prepend","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"action to prepend local AS number to the AS-path a\nspecified number of times","summary":"GET - Controller - openconfig-routing-policy - set-as-path-prepend","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-as-path-prepend"}},"application/json":{"schema":{"properties":{"set-as-path-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-as-path-prepend","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/actions/openconfig-bgp-policy:bgp-actions/set-community":{"put":{"description":"action to set the community attributes of the route, along\nwith options to modify how the community is modified","summary":"PUT - openconfig-routing-policy - Controller - set-community","requestBody":{"description":"set-community","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:set-community":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-community","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-community"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"action to set the community attributes of the route, along\nwith options to modify how the community is modified","summary":"PATCH - openconfig-routing-policy - Controller - set-community","requestBody":{"description":"set-community","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:set-community":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-community","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-community"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"action to set the community attributes of the route, along\nwith options to modify how the community is modified","summary":"DELETE - Controller - openconfig-routing-policy - set-community","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"action to set the community attributes of the route, along\nwith options to modify how the community is modified","summary":"GET - Controller - openconfig-routing-policy - set-community","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-community"}},"application/json":{"schema":{"properties":{"set-community":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-community","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/actions/openconfig-bgp-policy:bgp-actions/set-ext-community":{"put":{"description":"Action to set the extended community attributes of the\nroute, along with options to modify how the community is\nmodified","summary":"PUT - openconfig-routing-policy - Controller - set-ext-community","requestBody":{"description":"set-ext-community","content":{"application/json":{"schema":{"properties":{"openconfig-bgp-policy:set-ext-community":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"Action to set the extended community attributes of the\nroute, along with options to modify how the community is\nmodified","summary":"PATCH - openconfig-routing-policy - Controller - set-ext-community","requestBody":{"description":"set-ext-community","content":{"application/yang-data+json":{"schema":{"properties":{"openconfig-bgp-policy:set-ext-community":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"Action to set the extended community attributes of the\nroute, along with options to modify how the community is\nmodified","summary":"DELETE - Controller - openconfig-routing-policy - set-ext-community","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"Action to set the extended community attributes of the\nroute, along with options to modify how the community is\nmodified","summary":"GET - Controller - openconfig-routing-policy - set-ext-community","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community"}},"application/json":{"schema":{"properties":{"set-ext-community":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/actions/openconfig-bgp-policy:bgp-actions/odl-bgp-policy:set-originator-id-prepend":{"put":{"description":"action to prepend Originator Id if non Originator Id is present. If no Originator Idis defined, local Originator Id is used.","summary":"PUT - openconfig-routing-policy - Controller - set-originator-id-prepend","requestBody":{"description":"set-originator-id-prepend","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:set-originator-id-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-originator-id-prepend","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-originator-id-prepend"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"action to prepend Originator Id if non Originator Id is present. If no Originator Idis defined, local Originator Id is used.","summary":"PATCH - openconfig-routing-policy - Controller - set-originator-id-prepend","requestBody":{"description":"set-originator-id-prepend","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:set-originator-id-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-originator-id-prepend","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-originator-id-prepend"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"action to prepend Originator Id if non Originator Id is present. If no Originator Idis defined, local Originator Id is used.","summary":"DELETE - Controller - openconfig-routing-policy - set-originator-id-prepend","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"action to prepend Originator Id if non Originator Id is present. If no Originator Idis defined, local Originator Id is used.","summary":"GET - Controller - openconfig-routing-policy - set-originator-id-prepend","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-originator-id-prepend"}},"application/json":{"schema":{"properties":{"set-originator-id-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-originator-id-prepend","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/actions/openconfig-bgp-policy:bgp-actions/odl-bgp-policy:non-transitive-attributes-filter":{"put":{"description":"","summary":"PUT - openconfig-routing-policy - Controller - non-transitive-attributes-filter","requestBody":{"description":"non-transitive-attributes-filter","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:non-transitive-attributes-filter":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_non-transitive-attributes-filter","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_non-transitive-attributes-filter"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"","summary":"PATCH - openconfig-routing-policy - Controller - non-transitive-attributes-filter","requestBody":{"description":"non-transitive-attributes-filter","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:non-transitive-attributes-filter":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_non-transitive-attributes-filter","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_non-transitive-attributes-filter"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"","summary":"DELETE - Controller - openconfig-routing-policy - non-transitive-attributes-filter","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"","summary":"GET - Controller - openconfig-routing-policy - non-transitive-attributes-filter","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_non-transitive-attributes-filter"}},"application/json":{"schema":{"properties":{"non-transitive-attributes-filter":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_non-transitive-attributes-filter","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/actions/openconfig-bgp-policy:bgp-actions/odl-bgp-policy:reflect-attributes-actions":{"put":{"description":"","summary":"PUT - openconfig-routing-policy - Controller - reflect-attributes-actions","requestBody":{"description":"reflect-attributes-actions","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:reflect-attributes-actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_reflect-attributes-actions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_reflect-attributes-actions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"","summary":"PATCH - openconfig-routing-policy - Controller - reflect-attributes-actions","requestBody":{"description":"reflect-attributes-actions","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:reflect-attributes-actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_reflect-attributes-actions","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_reflect-attributes-actions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"","summary":"DELETE - Controller - openconfig-routing-policy - reflect-attributes-actions","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"","summary":"GET - Controller - openconfig-routing-policy - reflect-attributes-actions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_reflect-attributes-actions"}},"application/json":{"schema":{"properties":{"reflect-attributes-actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_reflect-attributes-actions","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/actions/openconfig-bgp-policy:bgp-actions/odl-bgp-policy:local-as-path-prepend":{"put":{"description":"","summary":"PUT - openconfig-routing-policy - Controller - local-as-path-prepend","requestBody":{"description":"local-as-path-prepend","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:local-as-path-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_local-as-path-prepend","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_local-as-path-prepend"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"","summary":"PATCH - openconfig-routing-policy - Controller - local-as-path-prepend","requestBody":{"description":"local-as-path-prepend","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:local-as-path-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_local-as-path-prepend","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_local-as-path-prepend"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"","summary":"DELETE - Controller - openconfig-routing-policy - local-as-path-prepend","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"","summary":"GET - Controller - openconfig-routing-policy - local-as-path-prepend","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_local-as-path-prepend"}},"application/json":{"schema":{"properties":{"local-as-path-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_local-as-path-prepend","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/actions/openconfig-bgp-policy:bgp-actions/odl-bgp-policy:set-cluster-id-prepend":{"put":{"description":"action to prepend local Cluster Id to the Cluster Id List","summary":"PUT - openconfig-routing-policy - Controller - set-cluster-id-prepend","requestBody":{"description":"set-cluster-id-prepend","content":{"application/json":{"schema":{"properties":{"odl-bgp-policy:set-cluster-id-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-cluster-id-prepend","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-cluster-id-prepend"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"action to prepend local Cluster Id to the Cluster Id List","summary":"PATCH - openconfig-routing-policy - Controller - set-cluster-id-prepend","requestBody":{"description":"set-cluster-id-prepend","content":{"application/yang-data+json":{"schema":{"properties":{"odl-bgp-policy:set-cluster-id-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-cluster-id-prepend","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-cluster-id-prepend"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"action to prepend local Cluster Id to the Cluster Id List","summary":"DELETE - Controller - openconfig-routing-policy - set-cluster-id-prepend","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"action to prepend local Cluster Id to the Cluster Id List","summary":"GET - Controller - openconfig-routing-policy - set-cluster-id-prepend","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-cluster-id-prepend"}},"application/json":{"schema":{"properties":{"set-cluster-id-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-cluster-id-prepend","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openconfig-routing-policy:routing-policy/policy-definitions/policy-definition={name}/statements/statement={name1}/actions/openconfig-bgp-policy:bgp-actions/bgp-route-target-constrain:client-attribute-prepend":{"put":{"description":"action to use attribute from advertized from a client(rfc4684)","summary":"PUT - openconfig-routing-policy - Controller - client-attribute-prepend","requestBody":{"description":"client-attribute-prepend","content":{"application/json":{"schema":{"properties":{"bgp-route-target-constrain:client-attribute-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_client-attribute-prepend","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_client-attribute-prepend"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"patch":{"description":"action to use attribute from advertized from a client(rfc4684)","summary":"PATCH - openconfig-routing-policy - Controller - client-attribute-prepend","requestBody":{"description":"client-attribute-prepend","content":{"application/yang-data+json":{"schema":{"properties":{"bgp-route-target-constrain:client-attribute-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_client-attribute-prepend","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_client-attribute-prepend"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"delete":{"description":"action to use attribute from advertized from a client(rfc4684)","summary":"DELETE - Controller - openconfig-routing-policy - client-attribute-prepend","responses":{"204":{"description":"Deleted"}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"}]},"get":{"description":"action to use attribute from advertized from a client(rfc4684)","summary":"GET - Controller - openconfig-routing-policy - client-attribute-prepend","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_client-attribute-prepend"}},"application/json":{"schema":{"properties":{"client-attribute-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_client-attribute-prepend","type":"object"}}}}}}},"tags":["Controller openconfig-routing-policy"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy"},{"name":"name1","in":"path","required":true,"schema":{"type":"string"},"description":"name of the policy statement"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-action-types:action-types":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-action-types - action-types","requestBody":{"description":"action","content":{"application/json":{"schema":{"properties":{"action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-action-types_action-types_action","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-action-types_action-types_action"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-action-types"],"parameters":[]},"put":{"description":"","summary":"PUT - opendaylight-action-types - Controller - action-types","requestBody":{"description":"action-types","content":{"application/json":{"schema":{"properties":{"opendaylight-action-types:action-types":{"$ref":"#/components/schemas/opendaylight-action-types_action-types","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-action-types_action-types"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-action-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-action-types - Controller - action-types","requestBody":{"description":"action-types","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-action-types:action-types":{"$ref":"#/components/schemas/opendaylight-action-types_action-types","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-action-types_action-types"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-action-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-action-types - action-types","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-action-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-action-types - action-types","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-action-types_action-types"}},"application/json":{"schema":{"properties":{"action-types":{"$ref":"#/components/schemas/opendaylight-action-types_action-types","type":"object"}}}}}}},"tags":["Controller opendaylight-action-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-action-types:action-types/action={order}":{"put":{"description":"","summary":"PUT - opendaylight-action-types - Controller - action","requestBody":{"description":"action","content":{"application/json":{"schema":{"properties":{"opendaylight-action-types:action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-action-types_action-types_action","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-action-types_action-types_action"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-action-types"],"parameters":[{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-action-types - Controller - action","requestBody":{"description":"action","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-action-types:action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-action-types_action-types_action","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-action-types_action-types_action"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-action-types"],"parameters":[{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-action-types - action","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-action-types"],"parameters":[{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-action-types - action","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-action-types_action-types_action"}},"application/json":{"schema":{"properties":{"action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-action-types_action-types_action","type":"object"}}}}}}}},"tags":["Controller opendaylight-action-types"],"parameters":[{"name":"order","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/opendaylight-direct-statistics:get-flow-statistics":{"post":{"description":"Get statistics for given flow","summary":"POST - Controller - opendaylight-direct-statistics - get-flow-statistics","requestBody":{"description":"get-flow-statistics_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-flow-statistics_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-flow-statistics_input"}}}},"responses":{"200":{"description":"RPC get-flow-statistics success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-flow-statistics_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-flow-statistics_output"}}}}},"tags":["Controller opendaylight-direct-statistics"],"parameters":[]}},"/rests/operations/opendaylight-direct-statistics:get-group-statistics":{"post":{"description":"Get statistics for given group","summary":"POST - Controller - opendaylight-direct-statistics - get-group-statistics","requestBody":{"description":"get-group-statistics_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-group-statistics_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-group-statistics_input"}}}},"responses":{"200":{"description":"RPC get-group-statistics success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-group-statistics_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-group-statistics_output"}}}}},"tags":["Controller opendaylight-direct-statistics"],"parameters":[]}},"/rests/operations/opendaylight-direct-statistics:get-meter-statistics":{"post":{"description":"Get statistics for given meter","summary":"POST - Controller - opendaylight-direct-statistics - get-meter-statistics","requestBody":{"description":"get-meter-statistics_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-meter-statistics_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-meter-statistics_input"}}}},"responses":{"200":{"description":"RPC get-meter-statistics success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-meter-statistics_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-meter-statistics_output"}}}}},"tags":["Controller opendaylight-direct-statistics"],"parameters":[]}},"/rests/operations/opendaylight-direct-statistics:get-node-connector-statistics":{"post":{"description":"Get statistics for given node connector from the node","summary":"POST - Controller - opendaylight-direct-statistics - get-node-connector-statistics","requestBody":{"description":"get-node-connector-statistics_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-node-connector-statistics_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-node-connector-statistics_input"}}}},"responses":{"200":{"description":"RPC get-node-connector-statistics success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-node-connector-statistics_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-node-connector-statistics_output"}}}}},"tags":["Controller opendaylight-direct-statistics"],"parameters":[]}},"/rests/operations/opendaylight-direct-statistics:get-queue-statistics":{"post":{"description":"Get statistics for given queues from given port of the node","summary":"POST - Controller - opendaylight-direct-statistics - get-queue-statistics","requestBody":{"description":"get-queue-statistics_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-queue-statistics_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-queue-statistics_input"}}}},"responses":{"200":{"description":"RPC get-queue-statistics success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-queue-statistics_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-direct-statistics_get-queue-statistics_output"}}}}},"tags":["Controller opendaylight-direct-statistics"],"parameters":[]}},"/rests/operations/opendaylight-flow-statistics:get-all-flows-statistics-from-all-flow-tables":{"post":{"description":"Fetch statistics of all the flow present in all the flow tables of the switch","summary":"POST - Controller - opendaylight-flow-statistics - get-all-flows-statistics-from-all-flow-tables","requestBody":{"description":"get-all-flows-statistics-from-all-flow-tables_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-all-flows-statistics-from-all-flow-tables_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-all-flows-statistics-from-all-flow-tables_input"}}}},"responses":{"200":{"description":"RPC get-all-flows-statistics-from-all-flow-tables success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-all-flows-statistics-from-all-flow-tables_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-all-flows-statistics-from-all-flow-tables_output"}}}}},"tags":["Controller opendaylight-flow-statistics"],"parameters":[]}},"/rests/operations/opendaylight-flow-statistics:get-all-flow-statistics-from-flow-table":{"post":{"description":"Fetch statistics of all the flow present in the specific flow table of the switch","summary":"POST - Controller - opendaylight-flow-statistics - get-all-flow-statistics-from-flow-table","requestBody":{"description":"get-all-flow-statistics-from-flow-table_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-all-flow-statistics-from-flow-table_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-all-flow-statistics-from-flow-table_input"}}}},"responses":{"200":{"description":"RPC get-all-flow-statistics-from-flow-table success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-all-flow-statistics-from-flow-table_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-all-flow-statistics-from-flow-table_output"}}}}},"tags":["Controller opendaylight-flow-statistics"],"parameters":[]}},"/rests/operations/opendaylight-flow-statistics:get-flow-statistics-from-flow-table":{"post":{"description":"Fetch statistics of the specific flow present in the specific flow table of the switch","summary":"POST - Controller - opendaylight-flow-statistics - get-flow-statistics-from-flow-table","requestBody":{"description":"get-flow-statistics-from-flow-table_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-flow-statistics-from-flow-table_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-flow-statistics-from-flow-table_input"}}}},"responses":{"200":{"description":"RPC get-flow-statistics-from-flow-table success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-flow-statistics-from-flow-table_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-flow-statistics-from-flow-table_output"}}}}},"tags":["Controller opendaylight-flow-statistics"],"parameters":[]}},"/rests/operations/opendaylight-flow-statistics:get-aggregate-flow-statistics-from-flow-table-for-all-flows":{"post":{"description":"Fetch aggregate statistics for all the flows present in the specific flow table of the switch","summary":"POST - Controller - opendaylight-flow-statistics - get-aggregate-flow-statistics-from-flow-table-for-all-flows","requestBody":{"description":"get-aggregate-flow-statistics-from-flow-table-for-all-flows_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-all-flows_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-all-flows_input"}}}},"responses":{"200":{"description":"RPC get-aggregate-flow-statistics-from-flow-table-for-all-flows success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-all-flows_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-all-flows_output"}}}}},"tags":["Controller opendaylight-flow-statistics"],"parameters":[]}},"/rests/operations/opendaylight-flow-statistics:get-aggregate-flow-statistics-from-flow-table-for-given-match":{"post":{"description":"Fetch aggregate statistics for flows filtered by\n- table (eventually all tables)\n- match\n- port\n- group\n- cookie\nThis values are contained in flow (among others).\nTODO:: filter values should be modeled more exact - omitting unusable fields.","summary":"POST - Controller - opendaylight-flow-statistics - get-aggregate-flow-statistics-from-flow-table-for-given-match","requestBody":{"description":"get-aggregate-flow-statistics-from-flow-table-for-given-match_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-given-match_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-given-match_input"}}}},"responses":{"200":{"description":"RPC get-aggregate-flow-statistics-from-flow-table-for-given-match success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-given-match_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-given-match_output"}}}}},"tags":["Controller opendaylight-flow-statistics"],"parameters":[]}},"/rests/operations/opendaylight-flow-table-statistics:get-flow-tables-statistics":{"post":{"description":"Fetch statistics of all the flow tables present on the tarnet node","summary":"POST - Controller - opendaylight-flow-table-statistics - get-flow-tables-statistics","requestBody":{"description":"get-flow-tables-statistics_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-flow-table-statistics_get-flow-tables-statistics_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-table-statistics_get-flow-tables-statistics_input"}}}},"responses":{"200":{"description":"RPC get-flow-tables-statistics success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-table-statistics_get-flow-tables-statistics_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-table-statistics_get-flow-tables-statistics_output"}}}}},"tags":["Controller opendaylight-flow-table-statistics"],"parameters":[]}},"/rests/data/opendaylight-flow-types:flow-message":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-flow-types - flow-message","requestBody":{"description":"match","content":{"application/json":{"schema":{"properties":{"match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - flow-message","requestBody":{"description":"flow-message","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:flow-message":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - flow-message","requestBody":{"description":"flow-message","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:flow-message":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - flow-message","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - flow-message","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message"}},"application/json":{"schema":{"properties":{"flow-message":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-flow-types - match","requestBody":{"description":"packet-type-match","content":{"application/json":{"schema":{"properties":{"packet-type-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_packet-type-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_packet-type-match"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - match","requestBody":{"description":"match","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - match","requestBody":{"description":"match","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match"}},"application/json":{"schema":{"properties":{"match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/packet-type-match":{"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - packet-type-match","requestBody":{"description":"packet-type-match","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:packet-type-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_packet-type-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_packet-type-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - packet-type-match","requestBody":{"description":"packet-type-match","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:packet-type-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_packet-type-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_packet-type-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - packet-type-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - packet-type-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_packet-type-match"}},"application/json":{"schema":{"properties":{"packet-type-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_packet-type-match","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/metadata":{"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - metadata","requestBody":{"description":"metadata","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:metadata":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_metadata","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_metadata"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - metadata","requestBody":{"description":"metadata","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:metadata":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_metadata","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_metadata"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - metadata","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - metadata","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_metadata"}},"application/json":{"schema":{"properties":{"metadata":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_metadata","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/tunnel":{"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - tunnel","requestBody":{"description":"tunnel","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:tunnel":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_tunnel","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_tunnel"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - tunnel","requestBody":{"description":"tunnel","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:tunnel":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_tunnel","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_tunnel"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - tunnel","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - tunnel","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_tunnel"}},"application/json":{"schema":{"properties":{"tunnel":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_tunnel","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/ethernet-match":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-flow-types - ethernet-match","requestBody":{"description":"ethernet-source","content":{"application/json":{"schema":{"properties":{"ethernet-source":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-source","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-source"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - ethernet-match","requestBody":{"description":"ethernet-match","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:ethernet-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - ethernet-match","requestBody":{"description":"ethernet-match","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:ethernet-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - ethernet-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - ethernet-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match"}},"application/json":{"schema":{"properties":{"ethernet-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/ethernet-match/ethernet-source":{"put":{"description":"Ethernet source address.","summary":"PUT - opendaylight-flow-types - Controller - ethernet-source","requestBody":{"description":"ethernet-source","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:ethernet-source":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-source","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-source"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"Ethernet source address.","summary":"PATCH - opendaylight-flow-types - Controller - ethernet-source","requestBody":{"description":"ethernet-source","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:ethernet-source":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-source","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-source"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"Ethernet source address.","summary":"DELETE - Controller - opendaylight-flow-types - ethernet-source","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"Ethernet source address.","summary":"GET - Controller - opendaylight-flow-types - ethernet-source","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-source"}},"application/json":{"schema":{"properties":{"ethernet-source":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-source","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/ethernet-match/ethernet-destination":{"put":{"description":"Ethernet destination address.","summary":"PUT - opendaylight-flow-types - Controller - ethernet-destination","requestBody":{"description":"ethernet-destination","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:ethernet-destination":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-destination","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-destination"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"Ethernet destination address.","summary":"PATCH - opendaylight-flow-types - Controller - ethernet-destination","requestBody":{"description":"ethernet-destination","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:ethernet-destination":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-destination","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-destination"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"Ethernet destination address.","summary":"DELETE - Controller - opendaylight-flow-types - ethernet-destination","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"Ethernet destination address.","summary":"GET - Controller - opendaylight-flow-types - ethernet-destination","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-destination"}},"application/json":{"schema":{"properties":{"ethernet-destination":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-destination","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/ethernet-match/ethernet-type":{"put":{"description":"Ethernet frame type.","summary":"PUT - opendaylight-flow-types - Controller - ethernet-type","requestBody":{"description":"ethernet-type","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:ethernet-type":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-type","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-type"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"Ethernet frame type.","summary":"PATCH - opendaylight-flow-types - Controller - ethernet-type","requestBody":{"description":"ethernet-type","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:ethernet-type":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-type","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-type"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"Ethernet frame type.","summary":"DELETE - Controller - opendaylight-flow-types - ethernet-type","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"Ethernet frame type.","summary":"GET - Controller - opendaylight-flow-types - ethernet-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-type"}},"application/json":{"schema":{"properties":{"ethernet-type":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-type","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/vlan-match":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-flow-types - vlan-match","requestBody":{"description":"vlan-id","content":{"application/json":{"schema":{"properties":{"vlan-id":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match_vlan-id","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match_vlan-id"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - vlan-match","requestBody":{"description":"vlan-match","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:vlan-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - vlan-match","requestBody":{"description":"vlan-match","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:vlan-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - vlan-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - vlan-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match"}},"application/json":{"schema":{"properties":{"vlan-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/vlan-match/vlan-id":{"put":{"description":"VLAN id.","summary":"PUT - opendaylight-flow-types - Controller - vlan-id","requestBody":{"description":"vlan-id","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:vlan-id":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match_vlan-id","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match_vlan-id"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"VLAN id.","summary":"PATCH - opendaylight-flow-types - Controller - vlan-id","requestBody":{"description":"vlan-id","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:vlan-id":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match_vlan-id","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match_vlan-id"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"VLAN id.","summary":"DELETE - Controller - opendaylight-flow-types - vlan-id","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"VLAN id.","summary":"GET - Controller - opendaylight-flow-types - vlan-id","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match_vlan-id"}},"application/json":{"schema":{"properties":{"vlan-id":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match_vlan-id","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/ip-match":{"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - ip-match","requestBody":{"description":"ip-match","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:ip-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ip-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ip-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - ip-match","requestBody":{"description":"ip-match","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:ip-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ip-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ip-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - ip-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - ip-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ip-match"}},"application/json":{"schema":{"properties":{"ip-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ip-match","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/icmpv4-match":{"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - icmpv4-match","requestBody":{"description":"icmpv4-match","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:icmpv4-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_icmpv4-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_icmpv4-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - icmpv4-match","requestBody":{"description":"icmpv4-match","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:icmpv4-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_icmpv4-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_icmpv4-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - icmpv4-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - icmpv4-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_icmpv4-match"}},"application/json":{"schema":{"properties":{"icmpv4-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_icmpv4-match","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/icmpv6-match":{"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - icmpv6-match","requestBody":{"description":"icmpv6-match","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:icmpv6-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_icmpv6-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_icmpv6-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - icmpv6-match","requestBody":{"description":"icmpv6-match","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:icmpv6-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_icmpv6-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_icmpv6-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - icmpv6-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - icmpv6-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_icmpv6-match"}},"application/json":{"schema":{"properties":{"icmpv6-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_icmpv6-match","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/protocol-match-fields":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-flow-types - protocol-match-fields","requestBody":{"description":"pbb","content":{"application/json":{"schema":{"properties":{"pbb":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields_pbb","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields_pbb"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - protocol-match-fields","requestBody":{"description":"protocol-match-fields","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - protocol-match-fields","requestBody":{"description":"protocol-match-fields","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - protocol-match-fields","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - protocol-match-fields","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields"}},"application/json":{"schema":{"properties":{"protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/protocol-match-fields/pbb":{"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - pbb","requestBody":{"description":"pbb","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:pbb":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields_pbb","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields_pbb"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - pbb","requestBody":{"description":"pbb","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:pbb":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields_pbb","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields_pbb"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - pbb","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - pbb","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields_pbb"}},"application/json":{"schema":{"properties":{"pbb":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields_pbb","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/match/tcp-flags-match":{"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - tcp-flags-match","requestBody":{"description":"tcp-flags-match","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_tcp-flags-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_tcp-flags-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - tcp-flags-match","requestBody":{"description":"tcp-flags-match","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_tcp-flags-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_tcp-flags-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - tcp-flags-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - tcp-flags-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_tcp-flags-match"}},"application/json":{"schema":{"properties":{"tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_tcp-flags-match","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/instructions":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-flow-types - instructions","requestBody":{"description":"instruction","content":{"application/json":{"schema":{"properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions_instruction","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions_instruction"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - instructions","requestBody":{"description":"instructions","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:instructions":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - instructions","requestBody":{"description":"instructions","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:instructions":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - instructions","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - instructions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions"}},"application/json":{"schema":{"properties":{"instructions":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions","type":"object"}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-flow-types:flow-message/instructions/instruction={order}":{"put":{"description":"","summary":"PUT - opendaylight-flow-types - Controller - instruction","requestBody":{"description":"instruction","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-types:instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions_instruction","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions_instruction"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-flow-types - Controller - instruction","requestBody":{"description":"instruction","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-types:instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions_instruction","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions_instruction"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-flow-types - instruction","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-flow-types - instruction","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions_instruction"}},"application/json":{"schema":{"properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions_instruction","type":"object"}}}}}}}},"tags":["Controller opendaylight-flow-types"],"parameters":[{"name":"order","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/opendaylight-group-statistics:get-all-group-statistics":{"post":{"description":"","summary":"POST - Controller - opendaylight-group-statistics - get-all-group-statistics","requestBody":{"description":"get-all-group-statistics_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-all-group-statistics_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-all-group-statistics_input"}}}},"responses":{"200":{"description":"RPC get-all-group-statistics success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-all-group-statistics_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-all-group-statistics_output"}}}}},"tags":["Controller opendaylight-group-statistics"],"parameters":[]}},"/rests/operations/opendaylight-group-statistics:get-group-statistics":{"post":{"description":"","summary":"POST - Controller - opendaylight-group-statistics - get-group-statistics","requestBody":{"description":"get-group-statistics_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-group-statistics_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-group-statistics_input"}}}},"responses":{"200":{"description":"RPC get-group-statistics success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-group-statistics_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-group-statistics_output"}}}}},"tags":["Controller opendaylight-group-statistics"],"parameters":[]}},"/rests/operations/opendaylight-group-statistics:get-group-description":{"post":{"description":"","summary":"POST - Controller - opendaylight-group-statistics - get-group-description","requestBody":{"description":"get-group-description_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-group-description_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-group-description_input"}}}},"responses":{"200":{"description":"RPC get-group-description success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-group-description_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-group-description_output"}}}}},"tags":["Controller opendaylight-group-statistics"],"parameters":[]}},"/rests/operations/opendaylight-group-statistics:get-group-features":{"post":{"description":"","summary":"POST - Controller - opendaylight-group-statistics - get-group-features","requestBody":{"description":"get-group-features_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-group-features_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-group-features_input"}}}},"responses":{"200":{"description":"RPC get-group-features success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-group-features_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-statistics_get-group-features_output"}}}}},"tags":["Controller opendaylight-group-statistics"],"parameters":[]}},"/rests/data/opendaylight-group-types:group-message":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-group-types - group-message","requestBody":{"description":"buckets","content":{"application/json":{"schema":{"properties":{"buckets":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-group-types"],"parameters":[]},"put":{"description":"","summary":"PUT - opendaylight-group-types - Controller - group-message","requestBody":{"description":"group-message","content":{"application/json":{"schema":{"properties":{"opendaylight-group-types:group-message":{"$ref":"#/components/schemas/opendaylight-group-types_group-message","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-types_group-message"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-group-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-group-types - Controller - group-message","requestBody":{"description":"group-message","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-group-types:group-message":{"$ref":"#/components/schemas/opendaylight-group-types_group-message","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-types_group-message"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-group-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-group-types - group-message","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-group-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-group-types - group-message","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-types_group-message"}},"application/json":{"schema":{"properties":{"group-message":{"$ref":"#/components/schemas/opendaylight-group-types_group-message","type":"object"}}}}}}},"tags":["Controller opendaylight-group-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-group-types:group-message/buckets":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-group-types - buckets","requestBody":{"description":"bucket","content":{"application/json":{"schema":{"properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-group-types"],"parameters":[]},"put":{"description":"","summary":"PUT - opendaylight-group-types - Controller - buckets","requestBody":{"description":"buckets","content":{"application/json":{"schema":{"properties":{"opendaylight-group-types:buckets":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-group-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-group-types - Controller - buckets","requestBody":{"description":"buckets","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-group-types:buckets":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-group-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-group-types - buckets","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-group-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-group-types - buckets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets"}},"application/json":{"schema":{"properties":{"buckets":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets","type":"object"}}}}}}},"tags":["Controller opendaylight-group-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-group-types:group-message/buckets/bucket={bucket-id}":{"put":{"description":"","summary":"PUT - opendaylight-group-types - Controller - bucket","requestBody":{"description":"bucket","content":{"application/json":{"schema":{"properties":{"opendaylight-group-types:bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-group-types"],"parameters":[{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-group-types - Controller - bucket","requestBody":{"description":"bucket","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-group-types:bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-group-types"],"parameters":[{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-group-types - bucket","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-group-types"],"parameters":[{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-group-types - bucket","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket"}},"application/json":{"schema":{"properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket","type":"object"}}}}}}}},"tags":["Controller opendaylight-group-types"],"parameters":[{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-group-types:group-message/buckets/bucket={bucket-id}/action={order}":{"put":{"description":"","summary":"PUT - opendaylight-group-types - Controller - action","requestBody":{"description":"action","content":{"application/json":{"schema":{"properties":{"opendaylight-group-types:action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket_action","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket_action"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-group-types"],"parameters":[{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-group-types - Controller - action","requestBody":{"description":"action","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-group-types:action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket_action","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket_action"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-group-types"],"parameters":[{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-group-types - action","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-group-types"],"parameters":[{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-group-types - action","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket_action"}},"application/json":{"schema":{"properties":{"action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket_action","type":"object"}}}}}}}},"tags":["Controller opendaylight-group-types"],"parameters":[{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes":{"post":{"description":"The root container of all nodes.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - nodes","requestBody":{"description":"node","content":{"application/json":{"schema":{"properties":{"node":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[]},"put":{"description":"The root container of all nodes.","summary":"PUT - opendaylight-inventory - Controller - nodes","requestBody":{"description":"nodes","content":{"application/json":{"schema":{"properties":{"opendaylight-inventory:nodes":{"$ref":"#/components/schemas/opendaylight-inventory_nodes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[]},"patch":{"description":"The root container of all nodes.","summary":"PATCH - opendaylight-inventory - Controller - nodes","requestBody":{"description":"nodes","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-inventory:nodes":{"$ref":"#/components/schemas/opendaylight-inventory_nodes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[]},"delete":{"description":"The root container of all nodes.","summary":"DELETE - Controller - opendaylight-inventory - nodes","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[]},"get":{"description":"The root container of all nodes.","summary":"GET - Controller - opendaylight-inventory - nodes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes"}},"application/json":{"schema":{"properties":{"nodes":{"$ref":"#/components/schemas/opendaylight-inventory_nodes","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}":{"put":{"description":"A list of nodes (as defined by the 'grouping node').","summary":"PUT - opendaylight-inventory - Controller - node","requestBody":{"description":"node","content":{"application/json":{"schema":{"properties":{"opendaylight-inventory:node":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"patch":{"description":"A list of nodes (as defined by the 'grouping node').","summary":"PATCH - opendaylight-inventory - Controller - node","requestBody":{"description":"node","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-inventory:node":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"delete":{"description":"A list of nodes (as defined by the 'grouping node').","summary":"DELETE - Controller - opendaylight-inventory - node","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"get":{"description":"A list of nodes (as defined by the 'grouping node').","summary":"GET - Controller - opendaylight-inventory - node","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node"}},"application/json":{"schema":{"properties":{"node":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/node-connector={id1}":{"put":{"description":"A list of node connectors that belong this node.","summary":"PUT - opendaylight-inventory - Controller - node-connector","requestBody":{"description":"node-connector","content":{"application/json":{"schema":{"properties":{"opendaylight-inventory:node-connector":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"patch":{"description":"A list of node connectors that belong this node.","summary":"PATCH - opendaylight-inventory - Controller - node-connector","requestBody":{"description":"node-connector","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-inventory:node-connector":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"delete":{"description":"A list of node connectors that belong this node.","summary":"DELETE - Controller - opendaylight-inventory - node-connector","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"get":{"description":"A list of node connectors that belong this node.","summary":"GET - Controller - opendaylight-inventory - node-connector","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector"}},"application/json":{"schema":{"properties":{"node-connector":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/node-connector={id1}/opendaylight-port-statistics:flow-capable-node-connector-statistics":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - flow-capable-node-connector-statistics","requestBody":{"description":"packets","content":{"application/json":{"schema":{"properties":{"packets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_packets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_packets"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - flow-capable-node-connector-statistics","requestBody":{"description":"flow-capable-node-connector-statistics","content":{"application/json":{"schema":{"properties":{"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - flow-capable-node-connector-statistics","requestBody":{"description":"flow-capable-node-connector-statistics","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - flow-capable-node-connector-statistics","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - flow-capable-node-connector-statistics","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics"}},"application/json":{"schema":{"properties":{"flow-capable-node-connector-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/node-connector={id1}/opendaylight-port-statistics:flow-capable-node-connector-statistics/packets":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - packets","requestBody":{"description":"packets","content":{"application/json":{"schema":{"properties":{"opendaylight-port-statistics:packets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_packets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_packets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - packets","requestBody":{"description":"packets","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-port-statistics:packets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_packets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_packets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - packets","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - packets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_packets"}},"application/json":{"schema":{"properties":{"packets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_packets","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/node-connector={id1}/opendaylight-port-statistics:flow-capable-node-connector-statistics/bytes":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - bytes","requestBody":{"description":"bytes","content":{"application/json":{"schema":{"properties":{"opendaylight-port-statistics:bytes":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_bytes","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_bytes"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - bytes","requestBody":{"description":"bytes","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-port-statistics:bytes":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_bytes","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_bytes"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - bytes","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - bytes","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_bytes"}},"application/json":{"schema":{"properties":{"bytes":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_bytes","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/node-connector={id1}/opendaylight-port-statistics:flow-capable-node-connector-statistics/duration":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - duration","requestBody":{"description":"duration","content":{"application/json":{"schema":{"properties":{"opendaylight-port-statistics:duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_duration","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_duration"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - duration","requestBody":{"description":"duration","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-port-statistics:duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_duration","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_duration"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - duration","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - duration","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_duration"}},"application/json":{"schema":{"properties":{"duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_duration","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/node-connector={id1}/flow-node-inventory:state":{"put":{"description":"Description of state of port","summary":"PUT - opendaylight-inventory - Controller - state","requestBody":{"description":"state","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:state":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_state","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_state"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"patch":{"description":"Description of state of port","summary":"PATCH - opendaylight-inventory - Controller - state","requestBody":{"description":"state","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:state":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_state","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_state"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"delete":{"description":"Description of state of port","summary":"DELETE - Controller - opendaylight-inventory - state","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."}]},"get":{"description":"Description of state of port","summary":"GET - Controller - opendaylight-inventory - state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_state"}},"application/json":{"schema":{"properties":{"state":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_state","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/node-connector={id1}/flow-node-inventory:queue={queue-id}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - queue","requestBody":{"description":"queue","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:queue":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"integer"},"description":"id for the specific queue."}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - queue","requestBody":{"description":"queue","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:queue":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"integer"},"description":"id for the specific queue."}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - queue","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"integer"},"description":"id for the specific queue."}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - queue","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue"}},"application/json":{"schema":{"properties":{"queue":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"integer"},"description":"id for the specific queue."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/node-connector={id1}/flow-node-inventory:queue={queue-id}/opendaylight-queue-statistics:flow-capable-node-connector-queue-statistics":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - flow-capable-node-connector-queue-statistics","requestBody":{"description":"duration","content":{"application/json":{"schema":{"properties":{"duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics_duration","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics_duration"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"integer"},"description":"id for the specific queue."}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - flow-capable-node-connector-queue-statistics","requestBody":{"description":"flow-capable-node-connector-queue-statistics","content":{"application/json":{"schema":{"properties":{"opendaylight-queue-statistics:flow-capable-node-connector-queue-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"integer"},"description":"id for the specific queue."}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - flow-capable-node-connector-queue-statistics","requestBody":{"description":"flow-capable-node-connector-queue-statistics","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-queue-statistics:flow-capable-node-connector-queue-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"integer"},"description":"id for the specific queue."}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - flow-capable-node-connector-queue-statistics","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"integer"},"description":"id for the specific queue."}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - flow-capable-node-connector-queue-statistics","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics"}},"application/json":{"schema":{"properties":{"flow-capable-node-connector-queue-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"integer"},"description":"id for the specific queue."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/node-connector={id1}/flow-node-inventory:queue={queue-id}/opendaylight-queue-statistics:flow-capable-node-connector-queue-statistics/duration":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - duration","requestBody":{"description":"duration","content":{"application/json":{"schema":{"properties":{"opendaylight-queue-statistics:duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics_duration","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics_duration"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"integer"},"description":"id for the specific queue."}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - duration","requestBody":{"description":"duration","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-queue-statistics:duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics_duration","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics_duration"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"integer"},"description":"id for the specific queue."}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - duration","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"integer"},"description":"id for the specific queue."}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - duration","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics_duration"}},"application/json":{"schema":{"properties":{"duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics_duration","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node-connector."},{"name":"queue-id","in":"path","required":true,"schema":{"type":"integer"},"description":"id for the specific queue."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/opendaylight-group-statistics:group-features":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - group-features","requestBody":{"description":"group-features","content":{"application/json":{"schema":{"properties":{"opendaylight-group-statistics:group-features":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group-features","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group-features"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - group-features","requestBody":{"description":"group-features","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-group-statistics:group-features":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group-features","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group-features"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - group-features","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - group-features","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group-features"}},"application/json":{"schema":{"properties":{"group-features":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group-features","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:snapshot-gathering-status-start":{"put":{"description":"gathering start mark","summary":"PUT - opendaylight-inventory - Controller - snapshot-gathering-status-start","requestBody":{"description":"snapshot-gathering-status-start","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:snapshot-gathering-status-start":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_snapshot-gathering-status-start","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_snapshot-gathering-status-start"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"patch":{"description":"gathering start mark","summary":"PATCH - opendaylight-inventory - Controller - snapshot-gathering-status-start","requestBody":{"description":"snapshot-gathering-status-start","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:snapshot-gathering-status-start":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_snapshot-gathering-status-start","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_snapshot-gathering-status-start"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"delete":{"description":"gathering start mark","summary":"DELETE - Controller - opendaylight-inventory - snapshot-gathering-status-start","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"get":{"description":"gathering start mark","summary":"GET - Controller - opendaylight-inventory - snapshot-gathering-status-start","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_snapshot-gathering-status-start"}},"application/json":{"schema":{"properties":{"snapshot-gathering-status-start":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_snapshot-gathering-status-start","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:snapshot-gathering-status-end":{"put":{"description":"gathering end mark + result","summary":"PUT - opendaylight-inventory - Controller - snapshot-gathering-status-end","requestBody":{"description":"snapshot-gathering-status-end","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:snapshot-gathering-status-end":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_snapshot-gathering-status-end","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_snapshot-gathering-status-end"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"patch":{"description":"gathering end mark + result","summary":"PATCH - opendaylight-inventory - Controller - snapshot-gathering-status-end","requestBody":{"description":"snapshot-gathering-status-end","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:snapshot-gathering-status-end":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_snapshot-gathering-status-end","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_snapshot-gathering-status-end"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"delete":{"description":"gathering end mark + result","summary":"DELETE - Controller - opendaylight-inventory - snapshot-gathering-status-end","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"get":{"description":"gathering end mark + result","summary":"GET - Controller - opendaylight-inventory - snapshot-gathering-status-end","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_snapshot-gathering-status-end"}},"application/json":{"schema":{"properties":{"snapshot-gathering-status-end":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_snapshot-gathering-status-end","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/opendaylight-meter-statistics:meter-features":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - meter-features","requestBody":{"description":"meter-features","content":{"application/json":{"schema":{"properties":{"opendaylight-meter-statistics:meter-features":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter-features","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter-features"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - meter-features","requestBody":{"description":"meter-features","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-meter-statistics:meter-features":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter-features","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter-features"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - meter-features","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - meter-features","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter-features"}},"application/json":{"schema":{"properties":{"meter-features":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter-features","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:supported-match-types":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - supported-match-types","requestBody":{"description":"match-type","content":{"application/json":{"schema":{"properties":{"match-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types_match-type","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types_match-type"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - supported-match-types","requestBody":{"description":"supported-match-types","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:supported-match-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - supported-match-types","requestBody":{"description":"supported-match-types","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:supported-match-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - supported-match-types","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - supported-match-types","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types"}},"application/json":{"schema":{"properties":{"supported-match-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:supported-match-types/match-type={match}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - match-type","requestBody":{"description":"match-type","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:match-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types_match-type","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types_match-type"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"match","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - match-type","requestBody":{"description":"match-type","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:match-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types_match-type","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types_match-type"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"match","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - match-type","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"match","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - match-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types_match-type"}},"application/json":{"schema":{"properties":{"match-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types_match-type","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"match","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:supported-instructions":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - supported-instructions","requestBody":{"description":"instruction-type","content":{"application/json":{"schema":{"properties":{"instruction-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions_instruction-type","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions_instruction-type"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - supported-instructions","requestBody":{"description":"supported-instructions","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:supported-instructions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - supported-instructions","requestBody":{"description":"supported-instructions","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:supported-instructions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - supported-instructions","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - supported-instructions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions"}},"application/json":{"schema":{"properties":{"supported-instructions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:supported-instructions/instruction-type={instruction}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - instruction-type","requestBody":{"description":"instruction-type","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:instruction-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions_instruction-type","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions_instruction-type"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"instruction","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - instruction-type","requestBody":{"description":"instruction-type","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:instruction-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions_instruction-type","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions_instruction-type"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"instruction","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - instruction-type","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"instruction","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - instruction-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions_instruction-type"}},"application/json":{"schema":{"properties":{"instruction-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions_instruction-type","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"instruction","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:supported-actions":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - supported-actions","requestBody":{"description":"action-type","content":{"application/json":{"schema":{"properties":{"action-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions_action-type","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions_action-type"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - supported-actions","requestBody":{"description":"supported-actions","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:supported-actions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - supported-actions","requestBody":{"description":"supported-actions","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:supported-actions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - supported-actions","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - supported-actions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions"}},"application/json":{"schema":{"properties":{"supported-actions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:supported-actions/action-type={action}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - action-type","requestBody":{"description":"action-type","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:action-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions_action-type","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions_action-type"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"action","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - action-type","requestBody":{"description":"action-type","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:action-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions_action-type","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions_action-type"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"action","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - action-type","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"action","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - action-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions_action-type"}},"application/json":{"schema":{"properties":{"action-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions_action-type","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"action","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:switch-features":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - switch-features","requestBody":{"description":"switch-features","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:switch-features":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_switch-features","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_switch-features"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - switch-features","requestBody":{"description":"switch-features","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:switch-features":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_switch-features","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_switch-features"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - switch-features","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - switch-features","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_switch-features"}},"application/json":{"schema":{"properties":{"switch-features":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_switch-features","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:meter={meter-id}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - meter","requestBody":{"description":"meter","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:meter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - meter","requestBody":{"description":"meter","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:meter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - meter","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - meter","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter"}},"application/json":{"schema":{"properties":{"meter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:meter={meter-id}/meter-band-headers":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - meter-band-headers","requestBody":{"description":"meter-band-header","content":{"application/json":{"schema":{"properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - meter-band-headers","requestBody":{"description":"meter-band-headers","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:meter-band-headers":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - meter-band-headers","requestBody":{"description":"meter-band-headers","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:meter-band-headers":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - meter-band-headers","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - meter-band-headers","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers"}},"application/json":{"schema":{"properties":{"meter-band-headers":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:meter={meter-id}/meter-band-headers/meter-band-header={band-id}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - meter-band-header","requestBody":{"description":"meter-band-header","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - meter-band-header","requestBody":{"description":"meter-band-header","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - meter-band-header","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - meter-band-header","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header"}},"application/json":{"schema":{"properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:meter={meter-id}/meter-band-headers/meter-band-header={band-id}/meter-band-types":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - meter-band-types","requestBody":{"description":"meter-band-types","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:meter-band-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header_meter-band-types","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header_meter-band-types"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - meter-band-types","requestBody":{"description":"meter-band-types","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:meter-band-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header_meter-band-types","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header_meter-band-types"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - meter-band-types","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - meter-band-types","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header_meter-band-types"}},"application/json":{"schema":{"properties":{"meter-band-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header_meter-band-types","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:meter={meter-id}/opendaylight-meter-statistics:meter-config-stats":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - meter-config-stats","requestBody":{"description":"meter-band-headers","content":{"application/json":{"schema":{"properties":{"meter-band-headers":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - meter-config-stats","requestBody":{"description":"meter-config-stats","content":{"application/json":{"schema":{"properties":{"opendaylight-meter-statistics:meter-config-stats":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - meter-config-stats","requestBody":{"description":"meter-config-stats","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-meter-statistics:meter-config-stats":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - meter-config-stats","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - meter-config-stats","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats"}},"application/json":{"schema":{"properties":{"meter-config-stats":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:meter={meter-id}/opendaylight-meter-statistics:meter-config-stats/meter-band-headers":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - meter-band-headers","requestBody":{"description":"meter-band-header","content":{"application/json":{"schema":{"properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - meter-band-headers","requestBody":{"description":"meter-band-headers","content":{"application/json":{"schema":{"properties":{"opendaylight-meter-statistics:meter-band-headers":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - meter-band-headers","requestBody":{"description":"meter-band-headers","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-meter-statistics:meter-band-headers":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - meter-band-headers","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - meter-band-headers","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers"}},"application/json":{"schema":{"properties":{"meter-band-headers":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:meter={meter-id}/opendaylight-meter-statistics:meter-config-stats/meter-band-headers/meter-band-header={band-id}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - meter-band-header","requestBody":{"description":"meter-band-header","content":{"application/json":{"schema":{"properties":{"opendaylight-meter-statistics:meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - meter-band-header","requestBody":{"description":"meter-band-header","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-meter-statistics:meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - meter-band-header","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - meter-band-header","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header"}},"application/json":{"schema":{"properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:meter={meter-id}/opendaylight-meter-statistics:meter-config-stats/meter-band-headers/meter-band-header={band-id}/meter-band-types":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - meter-band-types","requestBody":{"description":"meter-band-types","content":{"application/json":{"schema":{"properties":{"opendaylight-meter-statistics:meter-band-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header_meter-band-types","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header_meter-band-types"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - meter-band-types","requestBody":{"description":"meter-band-types","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-meter-statistics:meter-band-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header_meter-band-types","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header_meter-band-types"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - meter-band-types","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - meter-band-types","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header_meter-band-types"}},"application/json":{"schema":{"properties":{"meter-band-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header_meter-band-types","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:meter={meter-id}/opendaylight-meter-statistics:meter-statistics":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - meter-statistics","requestBody":{"description":"duration","content":{"application/json":{"schema":{"properties":{"duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_duration","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_duration"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - meter-statistics","requestBody":{"description":"meter-statistics","content":{"application/json":{"schema":{"properties":{"opendaylight-meter-statistics:meter-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - meter-statistics","requestBody":{"description":"meter-statistics","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-meter-statistics:meter-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - meter-statistics","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - meter-statistics","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics"}},"application/json":{"schema":{"properties":{"meter-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:meter={meter-id}/opendaylight-meter-statistics:meter-statistics/duration":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - duration","requestBody":{"description":"duration","content":{"application/json":{"schema":{"properties":{"opendaylight-meter-statistics:duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_duration","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_duration"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - duration","requestBody":{"description":"duration","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-meter-statistics:duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_duration","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_duration"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - duration","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - duration","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_duration"}},"application/json":{"schema":{"properties":{"duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_duration","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:meter={meter-id}/opendaylight-meter-statistics:meter-statistics/meter-band-stats":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - meter-band-stats","requestBody":{"description":"band-stat","content":{"application/json":{"schema":{"properties":{"band-stat":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats_band-stat","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats_band-stat"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - meter-band-stats","requestBody":{"description":"meter-band-stats","content":{"application/json":{"schema":{"properties":{"opendaylight-meter-statistics:meter-band-stats":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - meter-band-stats","requestBody":{"description":"meter-band-stats","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-meter-statistics:meter-band-stats":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - meter-band-stats","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - meter-band-stats","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats"}},"application/json":{"schema":{"properties":{"meter-band-stats":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:meter={meter-id}/opendaylight-meter-statistics:meter-statistics/meter-band-stats/band-stat={band-id}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - band-stat","requestBody":{"description":"band-stat","content":{"application/json":{"schema":{"properties":{"opendaylight-meter-statistics:band-stat":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats_band-stat","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats_band-stat"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - band-stat","requestBody":{"description":"band-stat","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-meter-statistics:band-stat":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats_band-stat","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats_band-stat"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - band-stat","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - band-stat","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats_band-stat"}},"application/json":{"schema":{"properties":{"band-stat":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats_band-stat","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:stale-meter={meter-id}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - stale-meter","requestBody":{"description":"stale-meter","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:stale-meter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - stale-meter","requestBody":{"description":"stale-meter","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:stale-meter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - stale-meter","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - stale-meter","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter"}},"application/json":{"schema":{"properties":{"stale-meter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:stale-meter={meter-id}/meter-band-headers":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - meter-band-headers","requestBody":{"description":"meter-band-header","content":{"application/json":{"schema":{"properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - meter-band-headers","requestBody":{"description":"meter-band-headers","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:meter-band-headers":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - meter-band-headers","requestBody":{"description":"meter-band-headers","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:meter-band-headers":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - meter-band-headers","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - meter-band-headers","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers"}},"application/json":{"schema":{"properties":{"meter-band-headers":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:stale-meter={meter-id}/meter-band-headers/meter-band-header={band-id}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - meter-band-header","requestBody":{"description":"meter-band-header","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - meter-band-header","requestBody":{"description":"meter-band-header","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - meter-band-header","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - meter-band-header","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header"}},"application/json":{"schema":{"properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:stale-meter={meter-id}/meter-band-headers/meter-band-header={band-id}/meter-band-types":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - meter-band-types","requestBody":{"description":"meter-band-types","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:meter-band-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header_meter-band-types","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header_meter-band-types"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - meter-band-types","requestBody":{"description":"meter-band-types","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:meter-band-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header_meter-band-types","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header_meter-band-types"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - meter-band-types","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - meter-band-types","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header_meter-band-types"}},"application/json":{"schema":{"properties":{"meter-band-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header_meter-band-types","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"meter-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter instance"},{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:group={group-id}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - group","requestBody":{"description":"group","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:group":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - group","requestBody":{"description":"group","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:group":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - group","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - group","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group"}},"application/json":{"schema":{"properties":{"group":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:group={group-id}/buckets":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - buckets","requestBody":{"description":"bucket","content":{"application/json":{"schema":{"properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - buckets","requestBody":{"description":"buckets","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - buckets","requestBody":{"description":"buckets","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - buckets","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - buckets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets"}},"application/json":{"schema":{"properties":{"buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:group={group-id}/buckets/bucket={bucket-id}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - bucket","requestBody":{"description":"bucket","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - bucket","requestBody":{"description":"bucket","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - bucket","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - bucket","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket"}},"application/json":{"schema":{"properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:group={group-id}/buckets/bucket={bucket-id}/action={order}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - action","requestBody":{"description":"action","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket_action","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket_action"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - action","requestBody":{"description":"action","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket_action","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket_action"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - action","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - action","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket_action"}},"application/json":{"schema":{"properties":{"action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket_action","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:group={group-id}/opendaylight-group-statistics:group-desc":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - group-desc","requestBody":{"description":"buckets","content":{"application/json":{"schema":{"properties":{"buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - group-desc","requestBody":{"description":"group-desc","content":{"application/json":{"schema":{"properties":{"opendaylight-group-statistics:group-desc":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - group-desc","requestBody":{"description":"group-desc","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-group-statistics:group-desc":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - group-desc","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - group-desc","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc"}},"application/json":{"schema":{"properties":{"group-desc":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:group={group-id}/opendaylight-group-statistics:group-desc/buckets":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - buckets","requestBody":{"description":"bucket","content":{"application/json":{"schema":{"properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - buckets","requestBody":{"description":"buckets","content":{"application/json":{"schema":{"properties":{"opendaylight-group-statistics:buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - buckets","requestBody":{"description":"buckets","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-group-statistics:buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - buckets","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - buckets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets"}},"application/json":{"schema":{"properties":{"buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:group={group-id}/opendaylight-group-statistics:group-desc/buckets/bucket={bucket-id}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - bucket","requestBody":{"description":"bucket","content":{"application/json":{"schema":{"properties":{"opendaylight-group-statistics:bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - bucket","requestBody":{"description":"bucket","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-group-statistics:bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - bucket","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - bucket","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket"}},"application/json":{"schema":{"properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:group={group-id}/opendaylight-group-statistics:group-desc/buckets/bucket={bucket-id}/action={order}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - action","requestBody":{"description":"action","content":{"application/json":{"schema":{"properties":{"opendaylight-group-statistics:action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket_action","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket_action"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - action","requestBody":{"description":"action","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-group-statistics:action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket_action","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket_action"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - action","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - action","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket_action"}},"application/json":{"schema":{"properties":{"action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket_action","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:group={group-id}/opendaylight-group-statistics:group-statistics":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - group-statistics","requestBody":{"description":"duration","content":{"application/json":{"schema":{"properties":{"duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_duration","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_duration"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - group-statistics","requestBody":{"description":"group-statistics","content":{"application/json":{"schema":{"properties":{"opendaylight-group-statistics:group-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - group-statistics","requestBody":{"description":"group-statistics","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-group-statistics:group-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - group-statistics","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - group-statistics","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics"}},"application/json":{"schema":{"properties":{"group-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:group={group-id}/opendaylight-group-statistics:group-statistics/duration":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - duration","requestBody":{"description":"duration","content":{"application/json":{"schema":{"properties":{"opendaylight-group-statistics:duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_duration","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_duration"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - duration","requestBody":{"description":"duration","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-group-statistics:duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_duration","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_duration"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - duration","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - duration","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_duration"}},"application/json":{"schema":{"properties":{"duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_duration","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:group={group-id}/opendaylight-group-statistics:group-statistics/buckets":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - buckets","requestBody":{"description":"bucket-counter","content":{"application/json":{"schema":{"properties":{"bucket-counter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets_bucket-counter","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets_bucket-counter"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - buckets","requestBody":{"description":"buckets","content":{"application/json":{"schema":{"properties":{"opendaylight-group-statistics:buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - buckets","requestBody":{"description":"buckets","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-group-statistics:buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - buckets","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - buckets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets"}},"application/json":{"schema":{"properties":{"buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:group={group-id}/opendaylight-group-statistics:group-statistics/buckets/bucket-counter={bucket-id}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - bucket-counter","requestBody":{"description":"bucket-counter","content":{"application/json":{"schema":{"properties":{"opendaylight-group-statistics:bucket-counter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets_bucket-counter","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets_bucket-counter"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - bucket-counter","requestBody":{"description":"bucket-counter","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-group-statistics:bucket-counter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets_bucket-counter","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets_bucket-counter"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - bucket-counter","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - bucket-counter","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets_bucket-counter"}},"application/json":{"schema":{"properties":{"bucket-counter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets_bucket-counter","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:stale-group={group-id}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - stale-group","requestBody":{"description":"stale-group","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:stale-group":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - stale-group","requestBody":{"description":"stale-group","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:stale-group":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - stale-group","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - stale-group","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group"}},"application/json":{"schema":{"properties":{"stale-group":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:stale-group={group-id}/buckets":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - buckets","requestBody":{"description":"bucket","content":{"application/json":{"schema":{"properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - buckets","requestBody":{"description":"buckets","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - buckets","requestBody":{"description":"buckets","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - buckets","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - buckets","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets"}},"application/json":{"schema":{"properties":{"buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:stale-group={group-id}/buckets/bucket={bucket-id}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - bucket","requestBody":{"description":"bucket","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - bucket","requestBody":{"description":"bucket","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - bucket","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - bucket","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket"}},"application/json":{"schema":{"properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:stale-group={group-id}/buckets/bucket={bucket-id}/action={order}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - action","requestBody":{"description":"action","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket_action","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket_action"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - action","requestBody":{"description":"action","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket_action","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket_action"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - action","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - action","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket_action"}},"application/json":{"schema":{"properties":{"action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket_action","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"group-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"bucket-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table-features={table-id}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - table-features","requestBody":{"description":"table-features","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:table-features":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"table-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - table-features","requestBody":{"description":"table-features","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:table-features":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"table-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - table-features","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"table-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - table-features","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features"}},"application/json":{"schema":{"properties":{"table-features":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"table-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table-features={table-id}/table-properties":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - table-properties","requestBody":{"description":"table-feature-properties","content":{"application/json":{"schema":{"properties":{"table-feature-properties":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"table-id","in":"path","required":true,"schema":{"type":"integer"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - table-properties","requestBody":{"description":"table-properties","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:table-properties":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"table-id","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - table-properties","requestBody":{"description":"table-properties","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:table-properties":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"table-id","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - table-properties","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"table-id","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - table-properties","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties"}},"application/json":{"schema":{"properties":{"table-properties":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"table-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table-features={table-id}/table-properties/table-feature-properties={order}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - table-feature-properties","requestBody":{"description":"table-feature-properties","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:table-feature-properties":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"table-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - table-feature-properties","requestBody":{"description":"table-feature-properties","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:table-feature-properties":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"table-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - table-feature-properties","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"table-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - table-feature-properties","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties"}},"application/json":{"schema":{"properties":{"table-feature-properties":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"table-id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - table","requestBody":{"description":"table","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:table":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - table","requestBody":{"description":"table","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:table":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - table","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - table","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table"}},"application/json":{"schema":{"properties":{"table":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - flow","requestBody":{"description":"flow","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:flow":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - flow","requestBody":{"description":"flow","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:flow":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - flow","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - flow","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow"}},"application/json":{"schema":{"properties":{"flow":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - match","requestBody":{"description":"packet-type-match","content":{"application/json":{"schema":{"properties":{"packet-type-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_packet-type-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_packet-type-match"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - match","requestBody":{"description":"match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - match","requestBody":{"description":"match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match"}},"application/json":{"schema":{"properties":{"match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/packet-type-match":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - packet-type-match","requestBody":{"description":"packet-type-match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:packet-type-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_packet-type-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_packet-type-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - packet-type-match","requestBody":{"description":"packet-type-match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:packet-type-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_packet-type-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_packet-type-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - packet-type-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - packet-type-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_packet-type-match"}},"application/json":{"schema":{"properties":{"packet-type-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_packet-type-match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/metadata":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - metadata","requestBody":{"description":"metadata","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:metadata":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_metadata","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_metadata"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - metadata","requestBody":{"description":"metadata","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:metadata":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_metadata","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_metadata"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - metadata","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - metadata","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_metadata"}},"application/json":{"schema":{"properties":{"metadata":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_metadata","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/tunnel":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - tunnel","requestBody":{"description":"tunnel","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:tunnel":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_tunnel","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_tunnel"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - tunnel","requestBody":{"description":"tunnel","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:tunnel":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_tunnel","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_tunnel"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - tunnel","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - tunnel","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_tunnel"}},"application/json":{"schema":{"properties":{"tunnel":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_tunnel","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/ethernet-match":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - ethernet-match","requestBody":{"description":"ethernet-source","content":{"application/json":{"schema":{"properties":{"ethernet-source":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-source","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-source"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - ethernet-match","requestBody":{"description":"ethernet-match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:ethernet-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - ethernet-match","requestBody":{"description":"ethernet-match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:ethernet-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - ethernet-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - ethernet-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match"}},"application/json":{"schema":{"properties":{"ethernet-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/ethernet-match/ethernet-source":{"put":{"description":"Ethernet source address.","summary":"PUT - opendaylight-inventory - Controller - ethernet-source","requestBody":{"description":"ethernet-source","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:ethernet-source":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-source","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-source"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Ethernet source address.","summary":"PATCH - opendaylight-inventory - Controller - ethernet-source","requestBody":{"description":"ethernet-source","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:ethernet-source":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-source","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-source"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Ethernet source address.","summary":"DELETE - Controller - opendaylight-inventory - ethernet-source","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Ethernet source address.","summary":"GET - Controller - opendaylight-inventory - ethernet-source","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-source"}},"application/json":{"schema":{"properties":{"ethernet-source":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-source","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/ethernet-match/ethernet-destination":{"put":{"description":"Ethernet destination address.","summary":"PUT - opendaylight-inventory - Controller - ethernet-destination","requestBody":{"description":"ethernet-destination","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:ethernet-destination":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-destination","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-destination"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Ethernet destination address.","summary":"PATCH - opendaylight-inventory - Controller - ethernet-destination","requestBody":{"description":"ethernet-destination","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:ethernet-destination":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-destination","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-destination"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Ethernet destination address.","summary":"DELETE - Controller - opendaylight-inventory - ethernet-destination","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Ethernet destination address.","summary":"GET - Controller - opendaylight-inventory - ethernet-destination","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-destination"}},"application/json":{"schema":{"properties":{"ethernet-destination":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-destination","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/ethernet-match/ethernet-type":{"put":{"description":"Ethernet frame type.","summary":"PUT - opendaylight-inventory - Controller - ethernet-type","requestBody":{"description":"ethernet-type","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:ethernet-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-type","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-type"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Ethernet frame type.","summary":"PATCH - opendaylight-inventory - Controller - ethernet-type","requestBody":{"description":"ethernet-type","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:ethernet-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-type","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-type"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Ethernet frame type.","summary":"DELETE - Controller - opendaylight-inventory - ethernet-type","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Ethernet frame type.","summary":"GET - Controller - opendaylight-inventory - ethernet-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-type"}},"application/json":{"schema":{"properties":{"ethernet-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-type","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/vlan-match":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - vlan-match","requestBody":{"description":"vlan-id","content":{"application/json":{"schema":{"properties":{"vlan-id":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match_vlan-id","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match_vlan-id"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - vlan-match","requestBody":{"description":"vlan-match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:vlan-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - vlan-match","requestBody":{"description":"vlan-match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:vlan-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - vlan-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - vlan-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match"}},"application/json":{"schema":{"properties":{"vlan-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/vlan-match/vlan-id":{"put":{"description":"VLAN id.","summary":"PUT - opendaylight-inventory - Controller - vlan-id","requestBody":{"description":"vlan-id","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:vlan-id":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match_vlan-id","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match_vlan-id"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"VLAN id.","summary":"PATCH - opendaylight-inventory - Controller - vlan-id","requestBody":{"description":"vlan-id","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:vlan-id":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match_vlan-id","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match_vlan-id"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"VLAN id.","summary":"DELETE - Controller - opendaylight-inventory - vlan-id","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"VLAN id.","summary":"GET - Controller - opendaylight-inventory - vlan-id","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match_vlan-id"}},"application/json":{"schema":{"properties":{"vlan-id":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match_vlan-id","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/ip-match":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - ip-match","requestBody":{"description":"ip-match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:ip-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ip-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ip-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - ip-match","requestBody":{"description":"ip-match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:ip-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ip-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ip-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - ip-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - ip-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ip-match"}},"application/json":{"schema":{"properties":{"ip-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ip-match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/icmpv4-match":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - icmpv4-match","requestBody":{"description":"icmpv4-match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:icmpv4-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_icmpv4-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_icmpv4-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - icmpv4-match","requestBody":{"description":"icmpv4-match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:icmpv4-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_icmpv4-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_icmpv4-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - icmpv4-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - icmpv4-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_icmpv4-match"}},"application/json":{"schema":{"properties":{"icmpv4-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_icmpv4-match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/icmpv6-match":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - icmpv6-match","requestBody":{"description":"icmpv6-match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:icmpv6-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_icmpv6-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_icmpv6-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - icmpv6-match","requestBody":{"description":"icmpv6-match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:icmpv6-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_icmpv6-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_icmpv6-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - icmpv6-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - icmpv6-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_icmpv6-match"}},"application/json":{"schema":{"properties":{"icmpv6-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_icmpv6-match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/protocol-match-fields":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - protocol-match-fields","requestBody":{"description":"pbb","content":{"application/json":{"schema":{"properties":{"pbb":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields_pbb","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields_pbb"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - protocol-match-fields","requestBody":{"description":"protocol-match-fields","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - protocol-match-fields","requestBody":{"description":"protocol-match-fields","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - protocol-match-fields","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - protocol-match-fields","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields"}},"application/json":{"schema":{"properties":{"protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/protocol-match-fields/pbb":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - pbb","requestBody":{"description":"pbb","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:pbb":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields_pbb","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields_pbb"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - pbb","requestBody":{"description":"pbb","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:pbb":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields_pbb","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields_pbb"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - pbb","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - pbb","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields_pbb"}},"application/json":{"schema":{"properties":{"pbb":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields_pbb","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/tcp-flags-match":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - tcp-flags-match","requestBody":{"description":"tcp-flags-match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_tcp-flags-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_tcp-flags-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - tcp-flags-match","requestBody":{"description":"tcp-flags-match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_tcp-flags-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_tcp-flags-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - tcp-flags-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - tcp-flags-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_tcp-flags-match"}},"application/json":{"schema":{"properties":{"tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_tcp-flags-match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - extension-list","requestBody":{"description":"extension-list","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-general:extension-list":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - extension-list","requestBody":{"description":"extension-list","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-general:extension-list":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - extension-list","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - extension-list","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list"}},"application/json":{"schema":{"properties":{"extension-list":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension":{"post":{"description":"A vendor has to augment this container.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - extension","requestBody":{"description":"nxm-nx-reg","content":{"application/json":{"schema":{"properties":{"nxm-nx-reg":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-reg","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-reg"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"A vendor has to augment this container.","summary":"PUT - opendaylight-inventory - Controller - extension","requestBody":{"description":"extension","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-general:extension":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"A vendor has to augment this container.","summary":"PATCH - opendaylight-inventory - Controller - extension","requestBody":{"description":"extension","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-general:extension":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"A vendor has to augment this container.","summary":"DELETE - Controller - opendaylight-inventory - extension","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"A vendor has to augment this container.","summary":"GET - Controller - opendaylight-inventory - extension","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension"}},"application/json":{"schema":{"properties":{"extension":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-reg":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-reg","requestBody":{"description":"nxm-nx-reg","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-reg":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-reg","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-reg"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-reg","requestBody":{"description":"nxm-nx-reg","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-reg":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-reg","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-reg"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-reg","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-reg","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-reg"}},"application/json":{"schema":{"properties":{"nxm-nx-reg":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-reg","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-tun-id":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-tun-id","requestBody":{"description":"nxm-nx-tun-id","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-id":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-id","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-id"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-tun-id","requestBody":{"description":"nxm-nx-tun-id","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-id":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-id","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-id"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-tun-id","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-tun-id","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-id"}},"application/json":{"schema":{"properties":{"nxm-nx-tun-id":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-id","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-arp-sha":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-arp-sha","requestBody":{"description":"nxm-nx-arp-sha","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-arp-sha":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-sha","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-sha"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-arp-sha","requestBody":{"description":"nxm-nx-arp-sha","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-arp-sha":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-sha","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-sha"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-arp-sha","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-arp-sha","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-sha"}},"application/json":{"schema":{"properties":{"nxm-nx-arp-sha":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-sha","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-arp-tha":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-arp-tha","requestBody":{"description":"nxm-nx-arp-tha","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-arp-tha":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-tha","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-tha"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-arp-tha","requestBody":{"description":"nxm-nx-arp-tha","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-arp-tha":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-tha","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-tha"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-arp-tha","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-arp-tha","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-tha"}},"application/json":{"schema":{"properties":{"nxm-nx-arp-tha":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-tha","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-arp-op":{"put":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"PUT - opendaylight-inventory - Controller - nxm-of-arp-op","requestBody":{"description":"nxm-of-arp-op","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-arp-op":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-op","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-op"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"PATCH - opendaylight-inventory - Controller - nxm-of-arp-op","requestBody":{"description":"nxm-of-arp-op","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-arp-op":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-op","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-op"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"DELETE - Controller - opendaylight-inventory - nxm-of-arp-op","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"GET - Controller - opendaylight-inventory - nxm-of-arp-op","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-op"}},"application/json":{"schema":{"properties":{"nxm-of-arp-op":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-op","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-arp-spa":{"put":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"PUT - opendaylight-inventory - Controller - nxm-of-arp-spa","requestBody":{"description":"nxm-of-arp-spa","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-arp-spa":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-spa","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-spa"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"PATCH - opendaylight-inventory - Controller - nxm-of-arp-spa","requestBody":{"description":"nxm-of-arp-spa","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-arp-spa":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-spa","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-spa"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"DELETE - Controller - opendaylight-inventory - nxm-of-arp-spa","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"GET - Controller - opendaylight-inventory - nxm-of-arp-spa","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-spa"}},"application/json":{"schema":{"properties":{"nxm-of-arp-spa":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-spa","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:of-in-port":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - of-in-port","requestBody":{"description":"of-in-port","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:of-in-port":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_of-in-port","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_of-in-port"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - of-in-port","requestBody":{"description":"of-in-port","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:of-in-port":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_of-in-port","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_of-in-port"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - of-in-port","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - of-in-port","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_of-in-port"}},"application/json":{"schema":{"properties":{"of-in-port":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_of-in-port","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-tcp-src":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-of-tcp-src","requestBody":{"description":"nxm-of-tcp-src","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-tcp-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-src","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-src"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-of-tcp-src","requestBody":{"description":"nxm-of-tcp-src","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-tcp-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-src","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-src"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-of-tcp-src","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-of-tcp-src","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-src"}},"application/json":{"schema":{"properties":{"nxm-of-tcp-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-src","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-tcp-dst":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-of-tcp-dst","requestBody":{"description":"nxm-of-tcp-dst","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-tcp-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-dst","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-dst"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-of-tcp-dst","requestBody":{"description":"nxm-of-tcp-dst","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-tcp-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-dst","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-dst"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-of-tcp-dst","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-of-tcp-dst","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-dst"}},"application/json":{"schema":{"properties":{"nxm-of-tcp-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-dst","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-udp-src":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-of-udp-src","requestBody":{"description":"nxm-of-udp-src","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-udp-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-src","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-src"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-of-udp-src","requestBody":{"description":"nxm-of-udp-src","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-udp-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-src","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-src"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-of-udp-src","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-of-udp-src","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-src"}},"application/json":{"schema":{"properties":{"nxm-of-udp-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-src","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-udp-dst":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-of-udp-dst","requestBody":{"description":"nxm-of-udp-dst","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-udp-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-dst","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-dst"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-of-udp-dst","requestBody":{"description":"nxm-of-udp-dst","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-udp-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-dst","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-dst"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-of-udp-dst","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-of-udp-dst","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-dst"}},"application/json":{"schema":{"properties":{"nxm-of-udp-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-dst","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-arp-tpa":{"put":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"PUT - opendaylight-inventory - Controller - nxm-of-arp-tpa","requestBody":{"description":"nxm-of-arp-tpa","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-arp-tpa":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-tpa","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-tpa"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"PATCH - opendaylight-inventory - Controller - nxm-of-arp-tpa","requestBody":{"description":"nxm-of-arp-tpa","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-arp-tpa":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-tpa","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-tpa"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"DELETE - Controller - opendaylight-inventory - nxm-of-arp-tpa","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"GET - Controller - opendaylight-inventory - nxm-of-arp-tpa","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-tpa"}},"application/json":{"schema":{"properties":{"nxm-of-arp-tpa":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-tpa","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-dst":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-tun-ipv4-dst","requestBody":{"description":"nxm-nx-tun-ipv4-dst","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-tun-ipv4-dst","requestBody":{"description":"nxm-nx-tun-ipv4-dst","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-tun-ipv4-dst","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-tun-ipv4-dst","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst"}},"application/json":{"schema":{"properties":{"nxm-nx-tun-ipv4-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-src":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-tun-ipv4-src","requestBody":{"description":"nxm-nx-tun-ipv4-src","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-src","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-src"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-tun-ipv4-src","requestBody":{"description":"nxm-nx-tun-ipv4-src","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-src","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-src"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-tun-ipv4-src","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-tun-ipv4-src","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-src"}},"application/json":{"schema":{"properties":{"nxm-nx-tun-ipv4-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-src","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-eth-src":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-of-eth-src","requestBody":{"description":"nxm-of-eth-src","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-eth-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-src","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-src"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-of-eth-src","requestBody":{"description":"nxm-of-eth-src","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-eth-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-src","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-src"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-of-eth-src","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-of-eth-src","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-src"}},"application/json":{"schema":{"properties":{"nxm-of-eth-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-src","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-eth-dst":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-of-eth-dst","requestBody":{"description":"nxm-of-eth-dst","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-eth-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-dst","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-dst"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-of-eth-dst","requestBody":{"description":"nxm-of-eth-dst","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-eth-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-dst","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-dst"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-of-eth-dst","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-of-eth-dst","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-dst"}},"application/json":{"schema":{"properties":{"nxm-of-eth-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-dst","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-eth-type":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-of-eth-type","requestBody":{"description":"nxm-of-eth-type","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-eth-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-type","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-type"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-of-eth-type","requestBody":{"description":"nxm-of-eth-type","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-eth-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-type","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-type"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-of-eth-type","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-of-eth-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-type"}},"application/json":{"schema":{"properties":{"nxm-of-eth-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-type","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nsp":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-nsp","requestBody":{"description":"nxm-nx-nsp","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsp":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-nsp","requestBody":{"description":"nxm-nx-nsp","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsp":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-nsp","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-nsp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsp"}},"application/json":{"schema":{"properties":{"nxm-nx-nsp":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsp","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nsi":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-nsi","requestBody":{"description":"nxm-nx-nsi","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsi":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsi","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsi"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-nsi","requestBody":{"description":"nxm-nx-nsi","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsi":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsi","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsi"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-nsi","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-nsi","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsi"}},"application/json":{"schema":{"properties":{"nxm-nx-nsi":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsi","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nshc-1":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-nshc-1","requestBody":{"description":"nxm-nx-nshc-1","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-1":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-1","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-1"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-nshc-1","requestBody":{"description":"nxm-nx-nshc-1","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-1":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-1","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-1"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-nshc-1","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-nshc-1","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-1"}},"application/json":{"schema":{"properties":{"nxm-nx-nshc-1":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-1","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nshc-2":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-nshc-2","requestBody":{"description":"nxm-nx-nshc-2","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-2":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-2","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-2"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-nshc-2","requestBody":{"description":"nxm-nx-nshc-2","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-2":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-2","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-2"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-nshc-2","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-nshc-2","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-2"}},"application/json":{"schema":{"properties":{"nxm-nx-nshc-2":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-2","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nshc-3":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-nshc-3","requestBody":{"description":"nxm-nx-nshc-3","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-3":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-3","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-3"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-nshc-3","requestBody":{"description":"nxm-nx-nshc-3","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-3":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-3","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-3"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-nshc-3","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-nshc-3","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-3"}},"application/json":{"schema":{"properties":{"nxm-nx-nshc-3":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-3","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nshc-4":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-nshc-4","requestBody":{"description":"nxm-nx-nshc-4","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-4":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-4","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-4"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-nshc-4","requestBody":{"description":"nxm-nx-nshc-4","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-4":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-4","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-4"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-nshc-4","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-nshc-4","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-4"}},"application/json":{"schema":{"properties":{"nxm-nx-nshc-4":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-4","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-ct-state":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-ct-state","requestBody":{"description":"nxm-nx-ct-state","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-state":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-state","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-state"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-ct-state","requestBody":{"description":"nxm-nx-ct-state","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-state":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-state","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-state"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-ct-state","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-ct-state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-state"}},"application/json":{"schema":{"properties":{"nxm-nx-ct-state":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-state","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-ct-zone":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-ct-zone","requestBody":{"description":"nxm-nx-ct-zone","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-zone":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-zone","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-zone"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-ct-zone","requestBody":{"description":"nxm-nx-ct-zone","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-zone":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-zone","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-zone"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-ct-zone","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-ct-zone","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-zone"}},"application/json":{"schema":{"properties":{"nxm-nx-ct-zone":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-zone","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-ip-dst":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-of-ip-dst","requestBody":{"description":"nxm-of-ip-dst","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-ip-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-dst","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-dst"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-of-ip-dst","requestBody":{"description":"nxm-of-ip-dst","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-ip-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-dst","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-dst"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-of-ip-dst","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-of-ip-dst","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-dst"}},"application/json":{"schema":{"properties":{"nxm-of-ip-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-dst","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-ip-src":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-of-ip-src","requestBody":{"description":"nxm-of-ip-src","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-ip-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-src","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-src"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-of-ip-src","requestBody":{"description":"nxm-of-ip-src","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-ip-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-src","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-src"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-of-ip-src","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-of-ip-src","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-src"}},"application/json":{"schema":{"properties":{"nxm-of-ip-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-src","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-icmp-type":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-of-icmp-type","requestBody":{"description":"nxm-of-icmp-type","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-icmp-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-icmp-type","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-icmp-type"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-of-icmp-type","requestBody":{"description":"nxm-of-icmp-type","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-icmp-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-icmp-type","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-icmp-type"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-of-icmp-type","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-of-icmp-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-icmp-type"}},"application/json":{"schema":{"properties":{"nxm-of-icmp-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-icmp-type","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nsh-flags":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-nsh-flags","requestBody":{"description":"nxm-nx-nsh-flags","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-flags":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-flags","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-flags"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-nsh-flags","requestBody":{"description":"nxm-nx-nsh-flags","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-flags":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-flags","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-flags"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-nsh-flags","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-nsh-flags","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-flags"}},"application/json":{"schema":{"properties":{"nxm-nx-nsh-flags":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-flags","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nsh-mdtype":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-nsh-mdtype","requestBody":{"description":"nxm-nx-nsh-mdtype","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-mdtype":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-mdtype","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-mdtype"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-nsh-mdtype","requestBody":{"description":"nxm-nx-nsh-mdtype","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-mdtype":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-mdtype","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-mdtype"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-nsh-mdtype","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-nsh-mdtype","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-mdtype"}},"application/json":{"schema":{"properties":{"nxm-nx-nsh-mdtype":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-mdtype","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nsh-np":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-nsh-np","requestBody":{"description":"nxm-nx-nsh-np","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-np":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-np","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-np"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-nsh-np","requestBody":{"description":"nxm-nx-nsh-np","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-np":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-np","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-np"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-nsh-np","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-nsh-np","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-np"}},"application/json":{"schema":{"properties":{"nxm-nx-nsh-np":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-np","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nsh-ttl":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-nsh-ttl","requestBody":{"description":"nxm-nx-nsh-ttl","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-ttl":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-ttl","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-ttl"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-nsh-ttl","requestBody":{"description":"nxm-nx-nsh-ttl","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-ttl":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-ttl","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-ttl"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-nsh-ttl","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-nsh-ttl","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-ttl"}},"application/json":{"schema":{"properties":{"nxm-nx-nsh-ttl":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-ttl","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-ct-mark":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-ct-mark","requestBody":{"description":"nxm-nx-ct-mark","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-mark":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-mark","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-mark"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-ct-mark","requestBody":{"description":"nxm-nx-ct-mark","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-mark":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-mark","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-mark"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-ct-mark","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-ct-mark","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-mark"}},"application/json":{"schema":{"properties":{"nxm-nx-ct-mark":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-mark","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-ct-tp-src":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-ct-tp-src","requestBody":{"description":"nxm-nx-ct-tp-src","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-src","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-src"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-ct-tp-src","requestBody":{"description":"nxm-nx-ct-tp-src","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-src","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-src"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-ct-tp-src","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-ct-tp-src","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-src"}},"application/json":{"schema":{"properties":{"nxm-nx-ct-tp-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-src","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-ct-tp-dst":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-ct-tp-dst","requestBody":{"description":"nxm-nx-ct-tp-dst","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-dst","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-dst"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-ct-tp-dst","requestBody":{"description":"nxm-nx-ct-tp-dst","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-dst","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-dst"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-ct-tp-dst","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-ct-tp-dst","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-dst"}},"application/json":{"schema":{"properties":{"nxm-nx-ct-tp-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-dst","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-pkt-mark":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - nxm-nx-pkt-mark","requestBody":{"description":"nxm-nx-pkt-mark","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-pkt-mark":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-pkt-mark","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-pkt-mark"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - nxm-nx-pkt-mark","requestBody":{"description":"nxm-nx-pkt-mark","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-pkt-mark":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-pkt-mark","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-pkt-mark"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - nxm-nx-pkt-mark","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - nxm-nx-pkt-mark","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-pkt-mark"}},"application/json":{"schema":{"properties":{"nxm-nx-pkt-mark":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-pkt-mark","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/instructions":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - instructions","requestBody":{"description":"instruction","content":{"application/json":{"schema":{"properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions_instruction","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions_instruction"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - instructions","requestBody":{"description":"instructions","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:instructions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - instructions","requestBody":{"description":"instructions","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:instructions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - instructions","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - instructions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions"}},"application/json":{"schema":{"properties":{"instructions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/instructions/instruction={order}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - instruction","requestBody":{"description":"instruction","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions_instruction","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions_instruction"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - instruction","requestBody":{"description":"instruction","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions_instruction","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions_instruction"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - instruction","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - instruction","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions_instruction"}},"application/json":{"schema":{"properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions_instruction","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/opendaylight-flow-statistics:flow-statistics":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - flow-statistics","requestBody":{"description":"duration","content":{"application/json":{"schema":{"properties":{"duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics_duration","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics_duration"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - flow-statistics","requestBody":{"description":"flow-statistics","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-statistics:flow-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - flow-statistics","requestBody":{"description":"flow-statistics","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-statistics:flow-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - flow-statistics","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - flow-statistics","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics"}},"application/json":{"schema":{"properties":{"flow-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow={id2}/opendaylight-flow-statistics:flow-statistics/duration":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - duration","requestBody":{"description":"duration","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-statistics:duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics_duration","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics_duration"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - duration","requestBody":{"description":"duration","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-statistics:duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics_duration","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics_duration"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - duration","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - duration","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics_duration"}},"application/json":{"schema":{"properties":{"duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics_duration","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - stale-flow","requestBody":{"description":"stale-flow","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:stale-flow":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - stale-flow","requestBody":{"description":"stale-flow","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:stale-flow":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - stale-flow","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - stale-flow","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow"}},"application/json":{"schema":{"properties":{"stale-flow":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - match","requestBody":{"description":"packet-type-match","content":{"application/json":{"schema":{"properties":{"packet-type-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_packet-type-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_packet-type-match"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - match","requestBody":{"description":"match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - match","requestBody":{"description":"match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match"}},"application/json":{"schema":{"properties":{"match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/packet-type-match":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - packet-type-match","requestBody":{"description":"packet-type-match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:packet-type-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_packet-type-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_packet-type-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - packet-type-match","requestBody":{"description":"packet-type-match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:packet-type-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_packet-type-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_packet-type-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - packet-type-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - packet-type-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_packet-type-match"}},"application/json":{"schema":{"properties":{"packet-type-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_packet-type-match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/metadata":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - metadata","requestBody":{"description":"metadata","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:metadata":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_metadata","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_metadata"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - metadata","requestBody":{"description":"metadata","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:metadata":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_metadata","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_metadata"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - metadata","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - metadata","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_metadata"}},"application/json":{"schema":{"properties":{"metadata":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_metadata","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/tunnel":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - tunnel","requestBody":{"description":"tunnel","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:tunnel":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_tunnel","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_tunnel"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - tunnel","requestBody":{"description":"tunnel","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:tunnel":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_tunnel","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_tunnel"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - tunnel","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - tunnel","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_tunnel"}},"application/json":{"schema":{"properties":{"tunnel":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_tunnel","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/ethernet-match":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - ethernet-match","requestBody":{"description":"ethernet-source","content":{"application/json":{"schema":{"properties":{"ethernet-source":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-source","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-source"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - ethernet-match","requestBody":{"description":"ethernet-match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:ethernet-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - ethernet-match","requestBody":{"description":"ethernet-match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:ethernet-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - ethernet-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - ethernet-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match"}},"application/json":{"schema":{"properties":{"ethernet-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/ethernet-match/ethernet-source":{"put":{"description":"Ethernet source address.","summary":"PUT - opendaylight-inventory - Controller - ethernet-source","requestBody":{"description":"ethernet-source","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:ethernet-source":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-source","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-source"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Ethernet source address.","summary":"PATCH - opendaylight-inventory - Controller - ethernet-source","requestBody":{"description":"ethernet-source","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:ethernet-source":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-source","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-source"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Ethernet source address.","summary":"DELETE - Controller - opendaylight-inventory - ethernet-source","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Ethernet source address.","summary":"GET - Controller - opendaylight-inventory - ethernet-source","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-source"}},"application/json":{"schema":{"properties":{"ethernet-source":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-source","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/ethernet-match/ethernet-destination":{"put":{"description":"Ethernet destination address.","summary":"PUT - opendaylight-inventory - Controller - ethernet-destination","requestBody":{"description":"ethernet-destination","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:ethernet-destination":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-destination","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-destination"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Ethernet destination address.","summary":"PATCH - opendaylight-inventory - Controller - ethernet-destination","requestBody":{"description":"ethernet-destination","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:ethernet-destination":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-destination","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-destination"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Ethernet destination address.","summary":"DELETE - Controller - opendaylight-inventory - ethernet-destination","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Ethernet destination address.","summary":"GET - Controller - opendaylight-inventory - ethernet-destination","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-destination"}},"application/json":{"schema":{"properties":{"ethernet-destination":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-destination","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/ethernet-match/ethernet-type":{"put":{"description":"Ethernet frame type.","summary":"PUT - opendaylight-inventory - Controller - ethernet-type","requestBody":{"description":"ethernet-type","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:ethernet-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-type","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-type"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Ethernet frame type.","summary":"PATCH - opendaylight-inventory - Controller - ethernet-type","requestBody":{"description":"ethernet-type","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:ethernet-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-type","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-type"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Ethernet frame type.","summary":"DELETE - Controller - opendaylight-inventory - ethernet-type","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Ethernet frame type.","summary":"GET - Controller - opendaylight-inventory - ethernet-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-type"}},"application/json":{"schema":{"properties":{"ethernet-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-type","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/vlan-match":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - vlan-match","requestBody":{"description":"vlan-id","content":{"application/json":{"schema":{"properties":{"vlan-id":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match_vlan-id","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match_vlan-id"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - vlan-match","requestBody":{"description":"vlan-match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:vlan-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - vlan-match","requestBody":{"description":"vlan-match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:vlan-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - vlan-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - vlan-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match"}},"application/json":{"schema":{"properties":{"vlan-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/vlan-match/vlan-id":{"put":{"description":"VLAN id.","summary":"PUT - opendaylight-inventory - Controller - vlan-id","requestBody":{"description":"vlan-id","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:vlan-id":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match_vlan-id","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match_vlan-id"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"VLAN id.","summary":"PATCH - opendaylight-inventory - Controller - vlan-id","requestBody":{"description":"vlan-id","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:vlan-id":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match_vlan-id","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match_vlan-id"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"VLAN id.","summary":"DELETE - Controller - opendaylight-inventory - vlan-id","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"VLAN id.","summary":"GET - Controller - opendaylight-inventory - vlan-id","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match_vlan-id"}},"application/json":{"schema":{"properties":{"vlan-id":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match_vlan-id","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/ip-match":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - ip-match","requestBody":{"description":"ip-match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:ip-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ip-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ip-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - ip-match","requestBody":{"description":"ip-match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:ip-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ip-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ip-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - ip-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - ip-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ip-match"}},"application/json":{"schema":{"properties":{"ip-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ip-match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/icmpv4-match":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - icmpv4-match","requestBody":{"description":"icmpv4-match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:icmpv4-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv4-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv4-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - icmpv4-match","requestBody":{"description":"icmpv4-match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:icmpv4-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv4-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv4-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - icmpv4-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - icmpv4-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv4-match"}},"application/json":{"schema":{"properties":{"icmpv4-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv4-match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/icmpv6-match":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - icmpv6-match","requestBody":{"description":"icmpv6-match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:icmpv6-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv6-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv6-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - icmpv6-match","requestBody":{"description":"icmpv6-match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:icmpv6-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv6-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv6-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - icmpv6-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - icmpv6-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv6-match"}},"application/json":{"schema":{"properties":{"icmpv6-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv6-match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/protocol-match-fields":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - protocol-match-fields","requestBody":{"description":"pbb","content":{"application/json":{"schema":{"properties":{"pbb":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields_pbb","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields_pbb"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - protocol-match-fields","requestBody":{"description":"protocol-match-fields","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - protocol-match-fields","requestBody":{"description":"protocol-match-fields","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - protocol-match-fields","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - protocol-match-fields","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields"}},"application/json":{"schema":{"properties":{"protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/protocol-match-fields/pbb":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - pbb","requestBody":{"description":"pbb","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:pbb":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields_pbb","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields_pbb"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - pbb","requestBody":{"description":"pbb","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:pbb":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields_pbb","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields_pbb"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - pbb","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - pbb","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields_pbb"}},"application/json":{"schema":{"properties":{"pbb":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields_pbb","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/match/tcp-flags-match":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - tcp-flags-match","requestBody":{"description":"tcp-flags-match","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_tcp-flags-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_tcp-flags-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - tcp-flags-match","requestBody":{"description":"tcp-flags-match","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_tcp-flags-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_tcp-flags-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - tcp-flags-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - tcp-flags-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_tcp-flags-match"}},"application/json":{"schema":{"properties":{"tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_tcp-flags-match","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/instructions":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-inventory - instructions","requestBody":{"description":"instruction","content":{"application/json":{"schema":{"properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions_instruction","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions_instruction"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - instructions","requestBody":{"description":"instructions","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:instructions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - instructions","requestBody":{"description":"instructions","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:instructions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - instructions","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - instructions","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions"}},"application/json":{"schema":{"properties":{"instructions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/stale-flow={id2}/instructions/instruction={order}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - instruction","requestBody":{"description":"instruction","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions_instruction","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions_instruction"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - instruction","requestBody":{"description":"instruction","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions_instruction","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions_instruction"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - instruction","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - instruction","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions_instruction"}},"application/json":{"schema":{"properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions_instruction","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"id2","in":"path","required":true,"schema":{"type":"string"}},{"name":"order","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/flow-hash-id-map={hash}":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - flow-hash-id-map","requestBody":{"description":"flow-hash-id-map","content":{"application/json":{"schema":{"properties":{"flow-node-inventory:flow-hash-id-map":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow-hash-id-map","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow-hash-id-map"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"hash","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - flow-hash-id-map","requestBody":{"description":"flow-hash-id-map","content":{"application/yang-data+json":{"schema":{"properties":{"flow-node-inventory:flow-hash-id-map":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow-hash-id-map","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow-hash-id-map"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"hash","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - flow-hash-id-map","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"hash","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - flow-hash-id-map","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow-hash-id-map"}},"application/json":{"schema":{"properties":{"flow-hash-id-map":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow-hash-id-map","type":"object"}}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"hash","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/opendaylight-flow-statistics:aggregate-flow-statistics":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - aggregate-flow-statistics","requestBody":{"description":"aggregate-flow-statistics","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-statistics:aggregate-flow-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_aggregate-flow-statistics","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_aggregate-flow-statistics"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - aggregate-flow-statistics","requestBody":{"description":"aggregate-flow-statistics","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-statistics:aggregate-flow-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_aggregate-flow-statistics","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_aggregate-flow-statistics"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - aggregate-flow-statistics","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - aggregate-flow-statistics","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_aggregate-flow-statistics"}},"application/json":{"schema":{"properties":{"aggregate-flow-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_aggregate-flow-statistics","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-inventory:nodes/node={id}/flow-node-inventory:table={id1}/opendaylight-flow-table-statistics:flow-table-statistics":{"put":{"description":"","summary":"PUT - opendaylight-inventory - Controller - flow-table-statistics","requestBody":{"description":"flow-table-statistics","content":{"application/json":{"schema":{"properties":{"opendaylight-flow-table-statistics:flow-table-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow-table-statistics","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow-table-statistics"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}}]},"patch":{"description":"","summary":"PATCH - opendaylight-inventory - Controller - flow-table-statistics","requestBody":{"description":"flow-table-statistics","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-flow-table-statistics:flow-table-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow-table-statistics","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow-table-statistics"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-inventory - flow-table-statistics","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}}]},"get":{"description":"","summary":"GET - Controller - opendaylight-inventory - flow-table-statistics","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow-table-statistics"}},"application/json":{"schema":{"properties":{"flow-table-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow-table-statistics","type":"object"}}}}}}},"tags":["Controller opendaylight-inventory"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier for the node."},{"name":"id1","in":"path","required":true,"schema":{"type":"integer"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/opendaylight-meter-statistics:get-all-meter-statistics":{"post":{"description":"","summary":"POST - Controller - opendaylight-meter-statistics - get-all-meter-statistics","requestBody":{"description":"get-all-meter-statistics_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-all-meter-statistics_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-all-meter-statistics_input"}}}},"responses":{"200":{"description":"RPC get-all-meter-statistics success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-all-meter-statistics_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-all-meter-statistics_output"}}}}},"tags":["Controller opendaylight-meter-statistics"],"parameters":[]}},"/rests/operations/opendaylight-meter-statistics:get-meter-statistics":{"post":{"description":"","summary":"POST - Controller - opendaylight-meter-statistics - get-meter-statistics","requestBody":{"description":"get-meter-statistics_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-meter-statistics_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-meter-statistics_input"}}}},"responses":{"200":{"description":"RPC get-meter-statistics success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-meter-statistics_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-meter-statistics_output"}}}}},"tags":["Controller opendaylight-meter-statistics"],"parameters":[]}},"/rests/operations/opendaylight-meter-statistics:get-all-meter-config-statistics":{"post":{"description":"","summary":"POST - Controller - opendaylight-meter-statistics - get-all-meter-config-statistics","requestBody":{"description":"get-all-meter-config-statistics_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-all-meter-config-statistics_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-all-meter-config-statistics_input"}}}},"responses":{"200":{"description":"RPC get-all-meter-config-statistics success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-all-meter-config-statistics_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-all-meter-config-statistics_output"}}}}},"tags":["Controller opendaylight-meter-statistics"],"parameters":[]}},"/rests/operations/opendaylight-meter-statistics:get-meter-features":{"post":{"description":"","summary":"POST - Controller - opendaylight-meter-statistics - get-meter-features","requestBody":{"description":"get-meter-features_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-meter-features_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-meter-features_input"}}}},"responses":{"200":{"description":"RPC get-meter-features success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-meter-features_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-statistics_get-meter-features_output"}}}}},"tags":["Controller opendaylight-meter-statistics"],"parameters":[]}},"/rests/data/opendaylight-meter-types:meter-message":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-meter-types - meter-message","requestBody":{"description":"meter-band-headers","content":{"application/json":{"schema":{"properties":{"meter-band-headers":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-meter-types"],"parameters":[]},"put":{"description":"","summary":"PUT - opendaylight-meter-types - Controller - meter-message","requestBody":{"description":"meter-message","content":{"application/json":{"schema":{"properties":{"opendaylight-meter-types:meter-message":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-meter-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-meter-types - Controller - meter-message","requestBody":{"description":"meter-message","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-meter-types:meter-message":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-meter-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-meter-types - meter-message","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-meter-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-meter-types - meter-message","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message"}},"application/json":{"schema":{"properties":{"meter-message":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message","type":"object"}}}}}}},"tags":["Controller opendaylight-meter-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-meter-types:meter-message/meter-band-headers":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - opendaylight-meter-types - meter-band-headers","requestBody":{"description":"meter-band-header","content":{"application/json":{"schema":{"properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller opendaylight-meter-types"],"parameters":[]},"put":{"description":"","summary":"PUT - opendaylight-meter-types - Controller - meter-band-headers","requestBody":{"description":"meter-band-headers","content":{"application/json":{"schema":{"properties":{"opendaylight-meter-types:meter-band-headers":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-meter-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-meter-types - Controller - meter-band-headers","requestBody":{"description":"meter-band-headers","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-meter-types:meter-band-headers":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-meter-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-meter-types - meter-band-headers","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-meter-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-meter-types - meter-band-headers","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers"}},"application/json":{"schema":{"properties":{"meter-band-headers":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers","type":"object"}}}}}}},"tags":["Controller opendaylight-meter-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-meter-types:meter-message/meter-band-headers/meter-band-header={band-id}":{"put":{"description":"","summary":"PUT - opendaylight-meter-types - Controller - meter-band-header","requestBody":{"description":"meter-band-header","content":{"application/json":{"schema":{"properties":{"opendaylight-meter-types:meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-meter-types"],"parameters":[{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"patch":{"description":"","summary":"PATCH - opendaylight-meter-types - Controller - meter-band-header","requestBody":{"description":"meter-band-header","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-meter-types:meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-meter-types"],"parameters":[{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-meter-types - meter-band-header","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-meter-types"],"parameters":[{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-meter-types - meter-band-header","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header"}},"application/json":{"schema":{"properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header","type":"object"}}}}}}}},"tags":["Controller opendaylight-meter-types"],"parameters":[{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-meter-types:meter-message/meter-band-headers/meter-band-header={band-id}/meter-band-types":{"put":{"description":"","summary":"PUT - opendaylight-meter-types - Controller - meter-band-types","requestBody":{"description":"meter-band-types","content":{"application/json":{"schema":{"properties":{"opendaylight-meter-types:meter-band-types":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header_meter-band-types","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header_meter-band-types"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-meter-types"],"parameters":[{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"patch":{"description":"","summary":"PATCH - opendaylight-meter-types - Controller - meter-band-types","requestBody":{"description":"meter-band-types","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-meter-types:meter-band-types":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header_meter-band-types","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header_meter-band-types"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-meter-types"],"parameters":[{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-meter-types - meter-band-types","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-meter-types"],"parameters":[{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"}]},"get":{"description":"","summary":"GET - Controller - opendaylight-meter-types - meter-band-types","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header_meter-band-types"}},"application/json":{"schema":{"properties":{"meter-band-types":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header_meter-band-types","type":"object"}}}}}}},"tags":["Controller opendaylight-meter-types"],"parameters":[{"name":"band-id","in":"path","required":true,"schema":{"type":"integer"},"description":"Meter band id"},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-multipart-types:multipart-reply":{"put":{"description":"","summary":"PUT - opendaylight-multipart-types - Controller - multipart-reply","requestBody":{"description":"multipart-reply","content":{"application/json":{"schema":{"properties":{"opendaylight-multipart-types:multipart-reply":{"$ref":"#/components/schemas/opendaylight-multipart-types_multipart-reply","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-multipart-types_multipart-reply"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-multipart-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-multipart-types - Controller - multipart-reply","requestBody":{"description":"multipart-reply","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-multipart-types:multipart-reply":{"$ref":"#/components/schemas/opendaylight-multipart-types_multipart-reply","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-multipart-types_multipart-reply"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-multipart-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-multipart-types - multipart-reply","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-multipart-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-multipart-types - multipart-reply","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-multipart-types_multipart-reply"}},"application/json":{"schema":{"properties":{"multipart-reply":{"$ref":"#/components/schemas/opendaylight-multipart-types_multipart-reply","type":"object"}}}}}}},"tags":["Controller opendaylight-multipart-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/opendaylight-multipart-types:multipart-request":{"put":{"description":"","summary":"PUT - opendaylight-multipart-types - Controller - multipart-request","requestBody":{"description":"multipart-request","content":{"application/json":{"schema":{"properties":{"opendaylight-multipart-types:multipart-request":{"$ref":"#/components/schemas/opendaylight-multipart-types_multipart-request","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-multipart-types_multipart-request"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-multipart-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-multipart-types - Controller - multipart-request","requestBody":{"description":"multipart-request","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-multipart-types:multipart-request":{"$ref":"#/components/schemas/opendaylight-multipart-types_multipart-request","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-multipart-types_multipart-request"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-multipart-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-multipart-types - multipart-request","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-multipart-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-multipart-types - multipart-request","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-multipart-types_multipart-request"}},"application/json":{"schema":{"properties":{"multipart-request":{"$ref":"#/components/schemas/opendaylight-multipart-types_multipart-request","type":"object"}}}}}}},"tags":["Controller opendaylight-multipart-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/opendaylight-port-statistics:get-all-node-connectors-statistics":{"post":{"description":"Get statistics for all node connectors from the node","summary":"POST - Controller - opendaylight-port-statistics - get-all-node-connectors-statistics","requestBody":{"description":"get-all-node-connectors-statistics_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-port-statistics_get-all-node-connectors-statistics_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-port-statistics_get-all-node-connectors-statistics_input"}}}},"responses":{"200":{"description":"RPC get-all-node-connectors-statistics success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-port-statistics_get-all-node-connectors-statistics_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-port-statistics_get-all-node-connectors-statistics_output"}}}}},"tags":["Controller opendaylight-port-statistics"],"parameters":[]}},"/rests/operations/opendaylight-port-statistics:get-node-connector-statistics":{"post":{"description":"Get statistics for given node connector from the node","summary":"POST - Controller - opendaylight-port-statistics - get-node-connector-statistics","requestBody":{"description":"get-node-connector-statistics_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-port-statistics_get-node-connector-statistics_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-port-statistics_get-node-connector-statistics_input"}}}},"responses":{"200":{"description":"RPC get-node-connector-statistics success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-port-statistics_get-node-connector-statistics_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-port-statistics_get-node-connector-statistics_output"}}}}},"tags":["Controller opendaylight-port-statistics"],"parameters":[]}},"/rests/data/opendaylight-port-types:port-message":{"put":{"description":"","summary":"PUT - opendaylight-port-types - Controller - port-message","requestBody":{"description":"port-message","content":{"application/json":{"schema":{"properties":{"opendaylight-port-types:port-message":{"$ref":"#/components/schemas/opendaylight-port-types_port-message","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-port-types_port-message"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-port-types"],"parameters":[]},"patch":{"description":"","summary":"PATCH - opendaylight-port-types - Controller - port-message","requestBody":{"description":"port-message","content":{"application/yang-data+json":{"schema":{"properties":{"opendaylight-port-types:port-message":{"$ref":"#/components/schemas/opendaylight-port-types_port-message","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/opendaylight-port-types_port-message"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller opendaylight-port-types"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - opendaylight-port-types - port-message","responses":{"204":{"description":"Deleted"}},"tags":["Controller opendaylight-port-types"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - opendaylight-port-types - port-message","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-port-types_port-message"}},"application/json":{"schema":{"properties":{"port-message":{"$ref":"#/components/schemas/opendaylight-port-types_port-message","type":"object"}}}}}}},"tags":["Controller opendaylight-port-types"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/opendaylight-queue-statistics:get-all-queues-statistics-from-all-ports":{"post":{"description":"Get statistics for all the queues attached to all the ports from the node","summary":"POST - Controller - opendaylight-queue-statistics - get-all-queues-statistics-from-all-ports","requestBody":{"description":"get-all-queues-statistics-from-all-ports_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-queue-statistics_get-all-queues-statistics-from-all-ports_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-queue-statistics_get-all-queues-statistics-from-all-ports_input"}}}},"responses":{"200":{"description":"RPC get-all-queues-statistics-from-all-ports success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-queue-statistics_get-all-queues-statistics-from-all-ports_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-queue-statistics_get-all-queues-statistics-from-all-ports_output"}}}}},"tags":["Controller opendaylight-queue-statistics"],"parameters":[]}},"/rests/operations/opendaylight-queue-statistics:get-all-queues-statistics-from-given-port":{"post":{"description":"Get statistics for all queues for given port of the node","summary":"POST - Controller - opendaylight-queue-statistics - get-all-queues-statistics-from-given-port","requestBody":{"description":"get-all-queues-statistics-from-given-port_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-queue-statistics_get-all-queues-statistics-from-given-port_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-queue-statistics_get-all-queues-statistics-from-given-port_input"}}}},"responses":{"200":{"description":"RPC get-all-queues-statistics-from-given-port success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-queue-statistics_get-all-queues-statistics-from-given-port_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-queue-statistics_get-all-queues-statistics-from-given-port_output"}}}}},"tags":["Controller opendaylight-queue-statistics"],"parameters":[]}},"/rests/operations/opendaylight-queue-statistics:get-queue-statistics-from-given-port":{"post":{"description":"Get statistics for given queues from given port of the node","summary":"POST - Controller - opendaylight-queue-statistics - get-queue-statistics-from-given-port","requestBody":{"description":"get-queue-statistics-from-given-port_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/opendaylight-queue-statistics_get-queue-statistics-from-given-port_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-queue-statistics_get-queue-statistics-from-given-port_input"}}}},"responses":{"200":{"description":"RPC get-queue-statistics-from-given-port success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/opendaylight-queue-statistics_get-queue-statistics-from-given-port_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/opendaylight-queue-statistics_get-queue-statistics-from-given-port_output"}}}}},"tags":["Controller opendaylight-queue-statistics"],"parameters":[]}},"/rests/data/openflow-action:action-container":{"put":{"description":"","summary":"PUT - openflow-action - Controller - action-container","requestBody":{"description":"action-container","content":{"application/json":{"schema":{"properties":{"openflow-action:action-container":{"$ref":"#/components/schemas/openflow-action_action-container","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-action_action-container"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openflow-action"],"parameters":[]},"patch":{"description":"","summary":"PATCH - openflow-action - Controller - action-container","requestBody":{"description":"action-container","content":{"application/yang-data+json":{"schema":{"properties":{"openflow-action:action-container":{"$ref":"#/components/schemas/openflow-action_action-container","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openflow-action_action-container"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openflow-action"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - openflow-action - action-container","responses":{"204":{"description":"Deleted"}},"tags":["Controller openflow-action"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - openflow-action - action-container","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-action_action-container"}},"application/json":{"schema":{"properties":{"action-container":{"$ref":"#/components/schemas/openflow-action_action-container","type":"object"}}}}}}},"tags":["Controller openflow-action"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openflow-extensible-match:oxm-container":{"put":{"description":"","summary":"PUT - openflow-extensible-match - Controller - oxm-container","requestBody":{"description":"oxm-container","content":{"application/json":{"schema":{"properties":{"openflow-extensible-match:oxm-container":{"$ref":"#/components/schemas/openflow-extensible-match_oxm-container","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-extensible-match_oxm-container"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openflow-extensible-match"],"parameters":[]},"patch":{"description":"","summary":"PATCH - openflow-extensible-match - Controller - oxm-container","requestBody":{"description":"oxm-container","content":{"application/yang-data+json":{"schema":{"properties":{"openflow-extensible-match:oxm-container":{"$ref":"#/components/schemas/openflow-extensible-match_oxm-container","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openflow-extensible-match_oxm-container"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openflow-extensible-match"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - openflow-extensible-match - oxm-container","responses":{"204":{"description":"Deleted"}},"tags":["Controller openflow-extensible-match"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - openflow-extensible-match - oxm-container","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-extensible-match_oxm-container"}},"application/json":{"schema":{"properties":{"oxm-container":{"$ref":"#/components/schemas/openflow-extensible-match_oxm-container","type":"object"}}}}}}},"tags":["Controller openflow-extensible-match"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openflow-instruction:instruction-container":{"put":{"description":"","summary":"PUT - openflow-instruction - Controller - instruction-container","requestBody":{"description":"instruction-container","content":{"application/json":{"schema":{"properties":{"openflow-instruction:instruction-container":{"$ref":"#/components/schemas/openflow-instruction_instruction-container","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-instruction_instruction-container"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openflow-instruction"],"parameters":[]},"patch":{"description":"","summary":"PATCH - openflow-instruction - Controller - instruction-container","requestBody":{"description":"instruction-container","content":{"application/yang-data+json":{"schema":{"properties":{"openflow-instruction:instruction-container":{"$ref":"#/components/schemas/openflow-instruction_instruction-container","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openflow-instruction_instruction-container"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openflow-instruction"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - openflow-instruction - instruction-container","responses":{"204":{"description":"Deleted"}},"tags":["Controller openflow-instruction"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - openflow-instruction - instruction-container","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-instruction_instruction-container"}},"application/json":{"schema":{"properties":{"instruction-container":{"$ref":"#/components/schemas/openflow-instruction_instruction-container","type":"object"}}}}}}},"tags":["Controller openflow-instruction"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/openflow-protocol:echo":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - echo","requestBody":{"description":"echo_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_echo_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_echo_input"}}}},"responses":{"200":{"description":"RPC echo success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/openflow-protocol_echo_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_echo_output"}}}}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:echo-reply":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - echo-reply","requestBody":{"description":"echo-reply_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_echo-reply_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_echo-reply_input"}}}},"responses":{"204":{"description":"RPC echo-reply success"}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:hello":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - hello","requestBody":{"description":"hello_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_hello_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_hello_input"}}}},"responses":{"204":{"description":"RPC hello success"}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:experimenter":{"post":{"description":"Send experimenter message to device, reply is not solicitated.","summary":"POST - Controller - openflow-protocol - experimenter","requestBody":{"description":"experimenter_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_experimenter_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_experimenter_input"}}}},"responses":{"204":{"description":"RPC experimenter success"}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:get-features":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - get-features","requestBody":{"description":"get-features_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_get-features_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_get-features_input"}}}},"responses":{"200":{"description":"RPC get-features success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/openflow-protocol_get-features_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_get-features_output"}}}}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:get-config":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - get-config","requestBody":{"description":"get-config_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_get-config_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_get-config_input"}}}},"responses":{"200":{"description":"RPC get-config success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/openflow-protocol_get-config_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_get-config_output"}}}}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:set-config":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - set-config","requestBody":{"description":"set-config_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_set-config_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_set-config_input"}}}},"responses":{"204":{"description":"RPC set-config success"}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:packet-out":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - packet-out","requestBody":{"description":"packet-out_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_packet-out_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_packet-out_input"}}}},"responses":{"204":{"description":"RPC packet-out success"}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:flow-mod":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - flow-mod","requestBody":{"description":"flow-mod_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_flow-mod_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_flow-mod_input"}}}},"responses":{"204":{"description":"RPC flow-mod success"}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:group-mod":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - group-mod","requestBody":{"description":"group-mod_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_group-mod_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_group-mod_input"}}}},"responses":{"204":{"description":"RPC group-mod success"}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:port-mod":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - port-mod","requestBody":{"description":"port-mod_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_port-mod_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_port-mod_input"}}}},"responses":{"204":{"description":"RPC port-mod success"}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:table-mod":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - table-mod","requestBody":{"description":"table-mod_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_table-mod_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_table-mod_input"}}}},"responses":{"204":{"description":"RPC table-mod success"}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:multipart-request":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - multipart-request","requestBody":{"description":"multipart-request_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_multipart-request_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_multipart-request_input"}}}},"responses":{"204":{"description":"RPC multipart-request success"}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:barrier":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - barrier","requestBody":{"description":"barrier_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_barrier_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_barrier_input"}}}},"responses":{"200":{"description":"RPC barrier success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/openflow-protocol_barrier_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_barrier_output"}}}}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:get-queue-config":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - get-queue-config","requestBody":{"description":"get-queue-config_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_get-queue-config_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_get-queue-config_input"}}}},"responses":{"200":{"description":"RPC get-queue-config success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/openflow-protocol_get-queue-config_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_get-queue-config_output"}}}}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:role-request":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - role-request","requestBody":{"description":"role-request_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_role-request_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_role-request_input"}}}},"responses":{"200":{"description":"RPC role-request success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/openflow-protocol_role-request_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_role-request_output"}}}}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:get-async":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - get-async","requestBody":{"description":"get-async_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_get-async_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_get-async_input"}}}},"responses":{"200":{"description":"RPC get-async success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/openflow-protocol_get-async_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_get-async_output"}}}}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:set-async":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - set-async","requestBody":{"description":"set-async_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_set-async_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_set-async_input"}}}},"responses":{"204":{"description":"RPC set-async success"}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/operations/openflow-protocol:meter-mod":{"post":{"description":"","summary":"POST - Controller - openflow-protocol - meter-mod","requestBody":{"description":"meter-mod_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/openflow-protocol_meter-mod_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_meter-mod_input"}}}},"responses":{"204":{"description":"RPC meter-mod success"}},"tags":["Controller openflow-protocol"],"parameters":[]}},"/rests/data/openflow-protocol:table-features-properties-container":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openflow-protocol - table-features-properties-container","requestBody":{"description":"table-features-properties-container","content":{"application/json":{"schema":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container"}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openflow-protocol"],"parameters":[]},"put":{"description":"","summary":"PUT - openflow-protocol - Controller - table-features-properties-container","requestBody":{"description":"table-features-properties-container","content":{"application/json":{"schema":{"properties":{"openflow-protocol:table-features-properties-container":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openflow-protocol"],"parameters":[]},"patch":{"description":"","summary":"PATCH - openflow-protocol - Controller - table-features-properties-container","requestBody":{"description":"table-features-properties-container","content":{"application/yang-data+json":{"schema":{"properties":{"openflow-protocol:table-features-properties-container":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openflow-protocol"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - openflow-protocol - table-features-properties-container","responses":{"204":{"description":"Deleted"}},"tags":["Controller openflow-protocol"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - openflow-protocol - table-features-properties-container","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container"}},"application/json":{"schema":{"properties":{"table-features-properties-container":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container","type":"object"}}}}}}},"tags":["Controller openflow-protocol"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openflow-protocol:table-features-properties-container/table-feature-properties":{"get":{"description":"","summary":"GET - Controller - openflow-protocol - table-feature-properties","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties"}},"application/json":{"schema":{"properties":{"table-feature-properties":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties","type":"object"}}}}}}}},"tags":["Controller openflow-protocol"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openflow-protocol:table-features-properties-container/table-feature-properties/openflow-augments:next-table-ids":{"get":{"description":"","summary":"GET - Controller - openflow-protocol - next-table-ids","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_next-table-ids"}},"application/json":{"schema":{"properties":{"next-table-ids":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_next-table-ids","type":"object"}}}}}}}},"tags":["Controller openflow-protocol"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openflow-protocol:table-features-properties-container/table-feature-properties/openflow-augments:match-entry":{"get":{"description":"","summary":"GET - Controller - openflow-protocol - match-entry","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_match-entry"}},"application/json":{"schema":{"properties":{"match-entry":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_match-entry","type":"object"}}}}}}}},"tags":["Controller openflow-protocol"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openflow-protocol:table-features-properties-container/table-feature-properties/openflow-augments:action":{"get":{"description":"","summary":"GET - Controller - openflow-protocol - action","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_action"}},"application/json":{"schema":{"properties":{"action":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_action","type":"object"}}}}}}}},"tags":["Controller openflow-protocol"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openflow-protocol:table-features-properties-container/table-feature-properties/openflow-augments:instruction":{"get":{"description":"","summary":"GET - Controller - openflow-protocol - instruction","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_instruction"}},"application/json":{"schema":{"properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_instruction","type":"object"}}}}}}}},"tags":["Controller openflow-protocol"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openflow-protocol:queue-prop-container":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - openflow-protocol - queue-prop-container","requestBody":{"description":"queue-prop-container","content":{"application/json":{"schema":{"$ref":"#/components/schemas/openflow-protocol_queue-prop-container"}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_queue-prop-container"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller openflow-protocol"],"parameters":[]},"put":{"description":"","summary":"PUT - openflow-protocol - Controller - queue-prop-container","requestBody":{"description":"queue-prop-container","content":{"application/json":{"schema":{"properties":{"openflow-protocol:queue-prop-container":{"$ref":"#/components/schemas/openflow-protocol_queue-prop-container","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_queue-prop-container"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openflow-protocol"],"parameters":[]},"patch":{"description":"","summary":"PATCH - openflow-protocol - Controller - queue-prop-container","requestBody":{"description":"queue-prop-container","content":{"application/yang-data+json":{"schema":{"properties":{"openflow-protocol:queue-prop-container":{"$ref":"#/components/schemas/openflow-protocol_queue-prop-container","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_queue-prop-container"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openflow-protocol"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - openflow-protocol - queue-prop-container","responses":{"204":{"description":"Deleted"}},"tags":["Controller openflow-protocol"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - openflow-protocol - queue-prop-container","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_queue-prop-container"}},"application/json":{"schema":{"properties":{"queue-prop-container":{"$ref":"#/components/schemas/openflow-protocol_queue-prop-container","type":"object"}}}}}}},"tags":["Controller openflow-protocol"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openflow-protocol:queue-prop-container/queue-property":{"get":{"description":"","summary":"GET - Controller - openflow-protocol - queue-property","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_queue-prop-container_queue-property"}},"application/json":{"schema":{"properties":{"queue-property":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_queue-prop-container_queue-property","type":"object"}}}}}}}},"tags":["Controller openflow-protocol"],"parameters":[{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openflow-protocol:meter-band-container":{"put":{"description":"","summary":"PUT - openflow-protocol - Controller - meter-band-container","requestBody":{"description":"meter-band-container","content":{"application/json":{"schema":{"properties":{"openflow-protocol:meter-band-container":{"$ref":"#/components/schemas/openflow-protocol_meter-band-container","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_meter-band-container"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openflow-protocol"],"parameters":[]},"patch":{"description":"","summary":"PATCH - openflow-protocol - Controller - meter-band-container","requestBody":{"description":"meter-band-container","content":{"application/yang-data+json":{"schema":{"properties":{"openflow-protocol:meter-band-container":{"$ref":"#/components/schemas/openflow-protocol_meter-band-container","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_meter-band-container"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openflow-protocol"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - openflow-protocol - meter-band-container","responses":{"204":{"description":"Deleted"}},"tags":["Controller openflow-protocol"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - openflow-protocol - meter-band-container","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-protocol_meter-band-container"}},"application/json":{"schema":{"properties":{"meter-band-container":{"$ref":"#/components/schemas/openflow-protocol_meter-band-container","type":"object"}}}}}}},"tags":["Controller openflow-protocol"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openflow-provider-config:openflow-provider-config":{"put":{"description":"","summary":"PUT - openflow-provider-config - Controller - openflow-provider-config","requestBody":{"description":"openflow-provider-config","content":{"application/json":{"schema":{"properties":{"openflow-provider-config:openflow-provider-config":{"$ref":"#/components/schemas/openflow-provider-config_openflow-provider-config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-provider-config_openflow-provider-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openflow-provider-config"],"parameters":[]},"patch":{"description":"","summary":"PATCH - openflow-provider-config - Controller - openflow-provider-config","requestBody":{"description":"openflow-provider-config","content":{"application/yang-data+json":{"schema":{"properties":{"openflow-provider-config:openflow-provider-config":{"$ref":"#/components/schemas/openflow-provider-config_openflow-provider-config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openflow-provider-config_openflow-provider-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openflow-provider-config"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - openflow-provider-config - openflow-provider-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openflow-provider-config"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - openflow-provider-config - openflow-provider-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-provider-config_openflow-provider-config"}},"application/json":{"schema":{"properties":{"openflow-provider-config":{"$ref":"#/components/schemas/openflow-provider-config_openflow-provider-config","type":"object"}}}}}}},"tags":["Controller openflow-provider-config"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openflow-switch-connection-config:switch-connection-config={instance-name}":{"put":{"description":"","summary":"PUT - openflow-switch-connection-config - Controller - switch-connection-config","requestBody":{"description":"switch-connection-config","content":{"application/json":{"schema":{"properties":{"openflow-switch-connection-config:switch-connection-config":{"type":"array","items":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openflow-switch-connection-config"],"parameters":[{"name":"instance-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the switch connection instance."}]},"patch":{"description":"","summary":"PATCH - openflow-switch-connection-config - Controller - switch-connection-config","requestBody":{"description":"switch-connection-config","content":{"application/yang-data+json":{"schema":{"properties":{"openflow-switch-connection-config:switch-connection-config":{"type":"array","items":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openflow-switch-connection-config"],"parameters":[{"name":"instance-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the switch connection instance."}]},"delete":{"description":"","summary":"DELETE - Controller - openflow-switch-connection-config - switch-connection-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller openflow-switch-connection-config"],"parameters":[{"name":"instance-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the switch connection instance."}]},"get":{"description":"","summary":"GET - Controller - openflow-switch-connection-config - switch-connection-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config"}},"application/json":{"schema":{"properties":{"switch-connection-config":{"type":"array","items":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config","type":"object"}}}}}}}},"tags":["Controller openflow-switch-connection-config"],"parameters":[{"name":"instance-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the switch connection instance."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openflow-switch-connection-config:switch-connection-config={instance-name}/tls":{"put":{"description":"","summary":"PUT - openflow-switch-connection-config - Controller - tls","requestBody":{"description":"tls","content":{"application/json":{"schema":{"properties":{"openflow-switch-connection-config:tls":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config_tls","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config_tls"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openflow-switch-connection-config"],"parameters":[{"name":"instance-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the switch connection instance."}]},"patch":{"description":"","summary":"PATCH - openflow-switch-connection-config - Controller - tls","requestBody":{"description":"tls","content":{"application/yang-data+json":{"schema":{"properties":{"openflow-switch-connection-config:tls":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config_tls","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config_tls"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openflow-switch-connection-config"],"parameters":[{"name":"instance-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the switch connection instance."}]},"delete":{"description":"","summary":"DELETE - Controller - openflow-switch-connection-config - tls","responses":{"204":{"description":"Deleted"}},"tags":["Controller openflow-switch-connection-config"],"parameters":[{"name":"instance-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the switch connection instance."}]},"get":{"description":"","summary":"GET - Controller - openflow-switch-connection-config - tls","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config_tls"}},"application/json":{"schema":{"properties":{"tls":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config_tls","type":"object"}}}}}}},"tags":["Controller openflow-switch-connection-config"],"parameters":[{"name":"instance-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the switch connection instance."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/openflow-switch-connection-config:switch-connection-config={instance-name}/threads":{"put":{"description":"","summary":"PUT - openflow-switch-connection-config - Controller - threads","requestBody":{"description":"threads","content":{"application/json":{"schema":{"properties":{"openflow-switch-connection-config:threads":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config_threads","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config_threads"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller openflow-switch-connection-config"],"parameters":[{"name":"instance-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the switch connection instance."}]},"patch":{"description":"","summary":"PATCH - openflow-switch-connection-config - Controller - threads","requestBody":{"description":"threads","content":{"application/yang-data+json":{"schema":{"properties":{"openflow-switch-connection-config:threads":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config_threads","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config_threads"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller openflow-switch-connection-config"],"parameters":[{"name":"instance-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the switch connection instance."}]},"delete":{"description":"","summary":"DELETE - Controller - openflow-switch-connection-config - threads","responses":{"204":{"description":"Deleted"}},"tags":["Controller openflow-switch-connection-config"],"parameters":[{"name":"instance-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the switch connection instance."}]},"get":{"description":"","summary":"GET - Controller - openflow-switch-connection-config - threads","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config_threads"}},"application/json":{"schema":{"properties":{"threads":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config_threads","type":"object"}}}}}}},"tags":["Controller openflow-switch-connection-config"],"parameters":[{"name":"instance-name","in":"path","required":true,"schema":{"type":"string"},"description":"Name of the switch connection instance."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/packet-processing:transmit-packet":{"post":{"description":"Sending packet out through openflow device.","summary":"POST - Controller - packet-processing - transmit-packet","requestBody":{"description":"transmit-packet_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/packet-processing_transmit-packet_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_transmit-packet_input"}}}},"responses":{"204":{"description":"RPC transmit-packet success"}},"tags":["Controller packet-processing"],"parameters":[]}},"/rests/data/packet-processing:packet-in-message":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - packet-processing - packet-in-message","requestBody":{"description":"match","content":{"application/json":{"schema":{"properties":{"match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller packet-processing"],"parameters":[]},"put":{"description":"","summary":"PUT - packet-processing - Controller - packet-in-message","requestBody":{"description":"packet-in-message","content":{"application/json":{"schema":{"properties":{"packet-processing:packet-in-message":{"$ref":"#/components/schemas/packet-processing_packet-in-message","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - packet-in-message","requestBody":{"description":"packet-in-message","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:packet-in-message":{"$ref":"#/components/schemas/packet-processing_packet-in-message","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - packet-in-message","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - packet-processing - packet-in-message","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message"}},"application/json":{"schema":{"properties":{"packet-in-message":{"$ref":"#/components/schemas/packet-processing_packet-in-message","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - packet-processing - match","requestBody":{"description":"packet-type-match","content":{"application/json":{"schema":{"properties":{"packet-type-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_packet-type-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_packet-type-match"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller packet-processing"],"parameters":[]},"put":{"description":"","summary":"PUT - packet-processing - Controller - match","requestBody":{"description":"match","content":{"application/json":{"schema":{"properties":{"packet-processing:match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - match","requestBody":{"description":"match","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - match","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - packet-processing - match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match"}},"application/json":{"schema":{"properties":{"match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/packet-type-match":{"put":{"description":"","summary":"PUT - packet-processing - Controller - packet-type-match","requestBody":{"description":"packet-type-match","content":{"application/json":{"schema":{"properties":{"packet-processing:packet-type-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_packet-type-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_packet-type-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - packet-type-match","requestBody":{"description":"packet-type-match","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:packet-type-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_packet-type-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_packet-type-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - packet-type-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - packet-processing - packet-type-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_packet-type-match"}},"application/json":{"schema":{"properties":{"packet-type-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_packet-type-match","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/metadata":{"put":{"description":"","summary":"PUT - packet-processing - Controller - metadata","requestBody":{"description":"metadata","content":{"application/json":{"schema":{"properties":{"packet-processing:metadata":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_metadata","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_metadata"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - metadata","requestBody":{"description":"metadata","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:metadata":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_metadata","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_metadata"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - metadata","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - packet-processing - metadata","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_metadata"}},"application/json":{"schema":{"properties":{"metadata":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_metadata","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/tunnel":{"put":{"description":"","summary":"PUT - packet-processing - Controller - tunnel","requestBody":{"description":"tunnel","content":{"application/json":{"schema":{"properties":{"packet-processing:tunnel":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_tunnel","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_tunnel"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - tunnel","requestBody":{"description":"tunnel","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:tunnel":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_tunnel","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_tunnel"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - tunnel","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - packet-processing - tunnel","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_tunnel"}},"application/json":{"schema":{"properties":{"tunnel":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_tunnel","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/ethernet-match":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - packet-processing - ethernet-match","requestBody":{"description":"ethernet-source","content":{"application/json":{"schema":{"properties":{"ethernet-source":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-source","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-source"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller packet-processing"],"parameters":[]},"put":{"description":"","summary":"PUT - packet-processing - Controller - ethernet-match","requestBody":{"description":"ethernet-match","content":{"application/json":{"schema":{"properties":{"packet-processing:ethernet-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - ethernet-match","requestBody":{"description":"ethernet-match","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:ethernet-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - ethernet-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - packet-processing - ethernet-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match"}},"application/json":{"schema":{"properties":{"ethernet-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/ethernet-match/ethernet-source":{"put":{"description":"Ethernet source address.","summary":"PUT - packet-processing - Controller - ethernet-source","requestBody":{"description":"ethernet-source","content":{"application/json":{"schema":{"properties":{"packet-processing:ethernet-source":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-source","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-source"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"Ethernet source address.","summary":"PATCH - packet-processing - Controller - ethernet-source","requestBody":{"description":"ethernet-source","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:ethernet-source":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-source","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-source"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"Ethernet source address.","summary":"DELETE - Controller - packet-processing - ethernet-source","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"Ethernet source address.","summary":"GET - Controller - packet-processing - ethernet-source","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-source"}},"application/json":{"schema":{"properties":{"ethernet-source":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-source","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/ethernet-match/ethernet-destination":{"put":{"description":"Ethernet destination address.","summary":"PUT - packet-processing - Controller - ethernet-destination","requestBody":{"description":"ethernet-destination","content":{"application/json":{"schema":{"properties":{"packet-processing:ethernet-destination":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-destination","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-destination"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"Ethernet destination address.","summary":"PATCH - packet-processing - Controller - ethernet-destination","requestBody":{"description":"ethernet-destination","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:ethernet-destination":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-destination","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-destination"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"Ethernet destination address.","summary":"DELETE - Controller - packet-processing - ethernet-destination","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"Ethernet destination address.","summary":"GET - Controller - packet-processing - ethernet-destination","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-destination"}},"application/json":{"schema":{"properties":{"ethernet-destination":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-destination","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/ethernet-match/ethernet-type":{"put":{"description":"Ethernet frame type.","summary":"PUT - packet-processing - Controller - ethernet-type","requestBody":{"description":"ethernet-type","content":{"application/json":{"schema":{"properties":{"packet-processing:ethernet-type":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-type","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-type"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"Ethernet frame type.","summary":"PATCH - packet-processing - Controller - ethernet-type","requestBody":{"description":"ethernet-type","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:ethernet-type":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-type","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-type"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"Ethernet frame type.","summary":"DELETE - Controller - packet-processing - ethernet-type","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"Ethernet frame type.","summary":"GET - Controller - packet-processing - ethernet-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-type"}},"application/json":{"schema":{"properties":{"ethernet-type":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-type","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/vlan-match":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - packet-processing - vlan-match","requestBody":{"description":"vlan-id","content":{"application/json":{"schema":{"properties":{"vlan-id":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match_vlan-id","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match_vlan-id"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller packet-processing"],"parameters":[]},"put":{"description":"","summary":"PUT - packet-processing - Controller - vlan-match","requestBody":{"description":"vlan-match","content":{"application/json":{"schema":{"properties":{"packet-processing:vlan-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - vlan-match","requestBody":{"description":"vlan-match","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:vlan-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - vlan-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - packet-processing - vlan-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match"}},"application/json":{"schema":{"properties":{"vlan-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/vlan-match/vlan-id":{"put":{"description":"VLAN id.","summary":"PUT - packet-processing - Controller - vlan-id","requestBody":{"description":"vlan-id","content":{"application/json":{"schema":{"properties":{"packet-processing:vlan-id":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match_vlan-id","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match_vlan-id"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"VLAN id.","summary":"PATCH - packet-processing - Controller - vlan-id","requestBody":{"description":"vlan-id","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:vlan-id":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match_vlan-id","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match_vlan-id"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"VLAN id.","summary":"DELETE - Controller - packet-processing - vlan-id","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"VLAN id.","summary":"GET - Controller - packet-processing - vlan-id","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match_vlan-id"}},"application/json":{"schema":{"properties":{"vlan-id":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match_vlan-id","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/ip-match":{"put":{"description":"","summary":"PUT - packet-processing - Controller - ip-match","requestBody":{"description":"ip-match","content":{"application/json":{"schema":{"properties":{"packet-processing:ip-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ip-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ip-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - ip-match","requestBody":{"description":"ip-match","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:ip-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ip-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ip-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - ip-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - packet-processing - ip-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ip-match"}},"application/json":{"schema":{"properties":{"ip-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ip-match","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/icmpv4-match":{"put":{"description":"","summary":"PUT - packet-processing - Controller - icmpv4-match","requestBody":{"description":"icmpv4-match","content":{"application/json":{"schema":{"properties":{"packet-processing:icmpv4-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_icmpv4-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_icmpv4-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - icmpv4-match","requestBody":{"description":"icmpv4-match","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:icmpv4-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_icmpv4-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_icmpv4-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - icmpv4-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - packet-processing - icmpv4-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_icmpv4-match"}},"application/json":{"schema":{"properties":{"icmpv4-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_icmpv4-match","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/icmpv6-match":{"put":{"description":"","summary":"PUT - packet-processing - Controller - icmpv6-match","requestBody":{"description":"icmpv6-match","content":{"application/json":{"schema":{"properties":{"packet-processing:icmpv6-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_icmpv6-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_icmpv6-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - icmpv6-match","requestBody":{"description":"icmpv6-match","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:icmpv6-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_icmpv6-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_icmpv6-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - icmpv6-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - packet-processing - icmpv6-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_icmpv6-match"}},"application/json":{"schema":{"properties":{"icmpv6-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_icmpv6-match","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/protocol-match-fields":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - packet-processing - protocol-match-fields","requestBody":{"description":"pbb","content":{"application/json":{"schema":{"properties":{"pbb":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields_pbb","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields_pbb"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller packet-processing"],"parameters":[]},"put":{"description":"","summary":"PUT - packet-processing - Controller - protocol-match-fields","requestBody":{"description":"protocol-match-fields","content":{"application/json":{"schema":{"properties":{"packet-processing:protocol-match-fields":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - protocol-match-fields","requestBody":{"description":"protocol-match-fields","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:protocol-match-fields":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - protocol-match-fields","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - packet-processing - protocol-match-fields","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields"}},"application/json":{"schema":{"properties":{"protocol-match-fields":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/protocol-match-fields/pbb":{"put":{"description":"","summary":"PUT - packet-processing - Controller - pbb","requestBody":{"description":"pbb","content":{"application/json":{"schema":{"properties":{"packet-processing:pbb":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields_pbb","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields_pbb"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - pbb","requestBody":{"description":"pbb","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:pbb":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields_pbb","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields_pbb"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - pbb","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - packet-processing - pbb","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields_pbb"}},"application/json":{"schema":{"properties":{"pbb":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields_pbb","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/tcp-flags-match":{"put":{"description":"","summary":"PUT - packet-processing - Controller - tcp-flags-match","requestBody":{"description":"tcp-flags-match","content":{"application/json":{"schema":{"properties":{"packet-processing:tcp-flags-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_tcp-flags-match","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_tcp-flags-match"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - tcp-flags-match","requestBody":{"description":"tcp-flags-match","content":{"application/yang-data+json":{"schema":{"properties":{"packet-processing:tcp-flags-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_tcp-flags-match","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_tcp-flags-match"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - tcp-flags-match","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - packet-processing - tcp-flags-match","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_tcp-flags-match"}},"application/json":{"schema":{"properties":{"tcp-flags-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_tcp-flags-match","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}":{"put":{"description":"","summary":"PUT - packet-processing - Controller - extension-list","requestBody":{"description":"extension-list","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-general:extension-list":{"type":"array","items":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - extension-list","requestBody":{"description":"extension-list","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-general:extension-list":{"type":"array","items":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - extension-list","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - extension-list","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list"}},"application/json":{"schema":{"properties":{"extension-list":{"type":"array","items":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list","type":"object"}}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension":{"post":{"description":"A vendor has to augment this container.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - packet-processing - extension","requestBody":{"description":"nxm-nx-reg","content":{"application/json":{"schema":{"properties":{"nxm-nx-reg":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-reg","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-reg"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"description":"A vendor has to augment this container.","summary":"PUT - packet-processing - Controller - extension","requestBody":{"description":"extension","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-general:extension":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"A vendor has to augment this container.","summary":"PATCH - packet-processing - Controller - extension","requestBody":{"description":"extension","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-general:extension":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"A vendor has to augment this container.","summary":"DELETE - Controller - packet-processing - extension","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"A vendor has to augment this container.","summary":"GET - Controller - packet-processing - extension","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension"}},"application/json":{"schema":{"properties":{"extension":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-reg":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-reg","requestBody":{"description":"nxm-nx-reg","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-reg":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-reg","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-reg"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-reg","requestBody":{"description":"nxm-nx-reg","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-reg":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-reg","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-reg"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-reg","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-reg","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-reg"}},"application/json":{"schema":{"properties":{"nxm-nx-reg":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-reg","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-tun-id":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-tun-id","requestBody":{"description":"nxm-nx-tun-id","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-id":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-id","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-id"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-tun-id","requestBody":{"description":"nxm-nx-tun-id","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-id":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-id","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-id"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-tun-id","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-tun-id","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-id"}},"application/json":{"schema":{"properties":{"nxm-nx-tun-id":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-id","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-arp-sha":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-arp-sha","requestBody":{"description":"nxm-nx-arp-sha","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-arp-sha":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-sha","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-sha"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-arp-sha","requestBody":{"description":"nxm-nx-arp-sha","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-arp-sha":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-sha","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-sha"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-arp-sha","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-arp-sha","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-sha"}},"application/json":{"schema":{"properties":{"nxm-nx-arp-sha":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-sha","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-arp-tha":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-arp-tha","requestBody":{"description":"nxm-nx-arp-tha","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-arp-tha":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-tha","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-tha"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-arp-tha","requestBody":{"description":"nxm-nx-arp-tha","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-arp-tha":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-tha","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-tha"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-arp-tha","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-arp-tha","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-tha"}},"application/json":{"schema":{"properties":{"nxm-nx-arp-tha":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-tha","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-arp-op":{"put":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"PUT - packet-processing - Controller - nxm-of-arp-op","requestBody":{"description":"nxm-of-arp-op","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-arp-op":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-op","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-op"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"PATCH - packet-processing - Controller - nxm-of-arp-op","requestBody":{"description":"nxm-of-arp-op","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-arp-op":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-op","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-op"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"DELETE - Controller - packet-processing - nxm-of-arp-op","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"GET - Controller - packet-processing - nxm-of-arp-op","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-op"}},"application/json":{"schema":{"properties":{"nxm-of-arp-op":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-op","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-arp-spa":{"put":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"PUT - packet-processing - Controller - nxm-of-arp-spa","requestBody":{"description":"nxm-of-arp-spa","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-arp-spa":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-spa","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-spa"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"PATCH - packet-processing - Controller - nxm-of-arp-spa","requestBody":{"description":"nxm-of-arp-spa","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-arp-spa":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-spa","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-spa"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"DELETE - Controller - packet-processing - nxm-of-arp-spa","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"GET - Controller - packet-processing - nxm-of-arp-spa","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-spa"}},"application/json":{"schema":{"properties":{"nxm-of-arp-spa":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-spa","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:of-in-port":{"put":{"description":"","summary":"PUT - packet-processing - Controller - of-in-port","requestBody":{"description":"of-in-port","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:of-in-port":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_of-in-port","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_of-in-port"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - of-in-port","requestBody":{"description":"of-in-port","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:of-in-port":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_of-in-port","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_of-in-port"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - of-in-port","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - of-in-port","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_of-in-port"}},"application/json":{"schema":{"properties":{"of-in-port":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_of-in-port","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-tcp-src":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-of-tcp-src","requestBody":{"description":"nxm-of-tcp-src","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-tcp-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-src","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-src"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-of-tcp-src","requestBody":{"description":"nxm-of-tcp-src","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-tcp-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-src","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-src"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-of-tcp-src","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-of-tcp-src","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-src"}},"application/json":{"schema":{"properties":{"nxm-of-tcp-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-src","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-tcp-dst":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-of-tcp-dst","requestBody":{"description":"nxm-of-tcp-dst","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-tcp-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-dst","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-dst"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-of-tcp-dst","requestBody":{"description":"nxm-of-tcp-dst","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-tcp-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-dst","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-dst"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-of-tcp-dst","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-of-tcp-dst","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-dst"}},"application/json":{"schema":{"properties":{"nxm-of-tcp-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-dst","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-udp-src":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-of-udp-src","requestBody":{"description":"nxm-of-udp-src","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-udp-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-src","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-src"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-of-udp-src","requestBody":{"description":"nxm-of-udp-src","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-udp-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-src","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-src"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-of-udp-src","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-of-udp-src","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-src"}},"application/json":{"schema":{"properties":{"nxm-of-udp-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-src","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-udp-dst":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-of-udp-dst","requestBody":{"description":"nxm-of-udp-dst","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-udp-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-dst","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-dst"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-of-udp-dst","requestBody":{"description":"nxm-of-udp-dst","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-udp-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-dst","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-dst"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-of-udp-dst","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-of-udp-dst","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-dst"}},"application/json":{"schema":{"properties":{"nxm-of-udp-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-dst","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-arp-tpa":{"put":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"PUT - packet-processing - Controller - nxm-of-arp-tpa","requestBody":{"description":"nxm-of-arp-tpa","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-arp-tpa":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-tpa","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-tpa"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"PATCH - packet-processing - Controller - nxm-of-arp-tpa","requestBody":{"description":"nxm-of-arp-tpa","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-arp-tpa":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-tpa","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-tpa"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"DELETE - Controller - packet-processing - nxm-of-arp-tpa","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","summary":"GET - Controller - packet-processing - nxm-of-arp-tpa","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-tpa"}},"application/json":{"schema":{"properties":{"nxm-of-arp-tpa":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-tpa","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-dst":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-tun-ipv4-dst","requestBody":{"description":"nxm-nx-tun-ipv4-dst","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-dst","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-dst"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-tun-ipv4-dst","requestBody":{"description":"nxm-nx-tun-ipv4-dst","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-dst","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-dst"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-tun-ipv4-dst","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-tun-ipv4-dst","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-dst"}},"application/json":{"schema":{"properties":{"nxm-nx-tun-ipv4-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-dst","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-src":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-tun-ipv4-src","requestBody":{"description":"nxm-nx-tun-ipv4-src","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-src","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-src"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-tun-ipv4-src","requestBody":{"description":"nxm-nx-tun-ipv4-src","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-src","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-src"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-tun-ipv4-src","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-tun-ipv4-src","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-src"}},"application/json":{"schema":{"properties":{"nxm-nx-tun-ipv4-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-src","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-eth-src":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-of-eth-src","requestBody":{"description":"nxm-of-eth-src","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-eth-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-src","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-src"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-of-eth-src","requestBody":{"description":"nxm-of-eth-src","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-eth-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-src","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-src"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-of-eth-src","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-of-eth-src","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-src"}},"application/json":{"schema":{"properties":{"nxm-of-eth-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-src","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-eth-dst":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-of-eth-dst","requestBody":{"description":"nxm-of-eth-dst","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-eth-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-dst","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-dst"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-of-eth-dst","requestBody":{"description":"nxm-of-eth-dst","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-eth-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-dst","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-dst"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-of-eth-dst","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-of-eth-dst","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-dst"}},"application/json":{"schema":{"properties":{"nxm-of-eth-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-dst","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-eth-type":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-of-eth-type","requestBody":{"description":"nxm-of-eth-type","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-eth-type":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-type","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-type"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-of-eth-type","requestBody":{"description":"nxm-of-eth-type","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-eth-type":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-type","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-type"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-of-eth-type","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-of-eth-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-type"}},"application/json":{"schema":{"properties":{"nxm-of-eth-type":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-type","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nsp":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-nsp","requestBody":{"description":"nxm-nx-nsp","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsp":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsp","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsp"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-nsp","requestBody":{"description":"nxm-nx-nsp","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsp":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsp","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsp"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-nsp","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-nsp","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsp"}},"application/json":{"schema":{"properties":{"nxm-nx-nsp":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsp","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nsi":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-nsi","requestBody":{"description":"nxm-nx-nsi","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsi":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsi","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsi"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-nsi","requestBody":{"description":"nxm-nx-nsi","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsi":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsi","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsi"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-nsi","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-nsi","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsi"}},"application/json":{"schema":{"properties":{"nxm-nx-nsi":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsi","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nshc-1":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-nshc-1","requestBody":{"description":"nxm-nx-nshc-1","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-1":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-1","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-1"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-nshc-1","requestBody":{"description":"nxm-nx-nshc-1","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-1":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-1","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-1"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-nshc-1","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-nshc-1","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-1"}},"application/json":{"schema":{"properties":{"nxm-nx-nshc-1":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-1","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nshc-2":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-nshc-2","requestBody":{"description":"nxm-nx-nshc-2","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-2":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-2","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-2"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-nshc-2","requestBody":{"description":"nxm-nx-nshc-2","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-2":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-2","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-2"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-nshc-2","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-nshc-2","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-2"}},"application/json":{"schema":{"properties":{"nxm-nx-nshc-2":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-2","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nshc-3":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-nshc-3","requestBody":{"description":"nxm-nx-nshc-3","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-3":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-3","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-3"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-nshc-3","requestBody":{"description":"nxm-nx-nshc-3","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-3":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-3","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-3"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-nshc-3","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-nshc-3","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-3"}},"application/json":{"schema":{"properties":{"nxm-nx-nshc-3":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-3","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nshc-4":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-nshc-4","requestBody":{"description":"nxm-nx-nshc-4","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-4":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-4","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-4"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-nshc-4","requestBody":{"description":"nxm-nx-nshc-4","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nshc-4":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-4","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-4"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-nshc-4","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-nshc-4","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-4"}},"application/json":{"schema":{"properties":{"nxm-nx-nshc-4":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-4","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-ct-state":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-ct-state","requestBody":{"description":"nxm-nx-ct-state","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-state":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-state","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-state"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-ct-state","requestBody":{"description":"nxm-nx-ct-state","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-state":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-state","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-state"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-ct-state","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-ct-state","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-state"}},"application/json":{"schema":{"properties":{"nxm-nx-ct-state":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-state","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-ct-zone":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-ct-zone","requestBody":{"description":"nxm-nx-ct-zone","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-zone":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-zone","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-zone"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-ct-zone","requestBody":{"description":"nxm-nx-ct-zone","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-zone":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-zone","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-zone"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-ct-zone","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-ct-zone","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-zone"}},"application/json":{"schema":{"properties":{"nxm-nx-ct-zone":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-zone","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-ip-dst":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-of-ip-dst","requestBody":{"description":"nxm-of-ip-dst","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-ip-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-dst","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-dst"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-of-ip-dst","requestBody":{"description":"nxm-of-ip-dst","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-ip-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-dst","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-dst"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-of-ip-dst","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-of-ip-dst","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-dst"}},"application/json":{"schema":{"properties":{"nxm-of-ip-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-dst","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-ip-src":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-of-ip-src","requestBody":{"description":"nxm-of-ip-src","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-ip-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-src","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-src"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-of-ip-src","requestBody":{"description":"nxm-of-ip-src","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-ip-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-src","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-src"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-of-ip-src","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-of-ip-src","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-src"}},"application/json":{"schema":{"properties":{"nxm-of-ip-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-src","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-of-icmp-type":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-of-icmp-type","requestBody":{"description":"nxm-of-icmp-type","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-icmp-type":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-icmp-type","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-icmp-type"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-of-icmp-type","requestBody":{"description":"nxm-of-icmp-type","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-of-icmp-type":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-icmp-type","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-icmp-type"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-of-icmp-type","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-of-icmp-type","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-icmp-type"}},"application/json":{"schema":{"properties":{"nxm-of-icmp-type":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-icmp-type","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nsh-flags":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-nsh-flags","requestBody":{"description":"nxm-nx-nsh-flags","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-flags":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-flags","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-flags"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-nsh-flags","requestBody":{"description":"nxm-nx-nsh-flags","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-flags":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-flags","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-flags"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-nsh-flags","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-nsh-flags","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-flags"}},"application/json":{"schema":{"properties":{"nxm-nx-nsh-flags":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-flags","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nsh-mdtype":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-nsh-mdtype","requestBody":{"description":"nxm-nx-nsh-mdtype","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-mdtype":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-mdtype","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-mdtype"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-nsh-mdtype","requestBody":{"description":"nxm-nx-nsh-mdtype","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-mdtype":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-mdtype","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-mdtype"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-nsh-mdtype","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-nsh-mdtype","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-mdtype"}},"application/json":{"schema":{"properties":{"nxm-nx-nsh-mdtype":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-mdtype","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nsh-np":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-nsh-np","requestBody":{"description":"nxm-nx-nsh-np","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-np":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-np","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-np"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-nsh-np","requestBody":{"description":"nxm-nx-nsh-np","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-np":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-np","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-np"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-nsh-np","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-nsh-np","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-np"}},"application/json":{"schema":{"properties":{"nxm-nx-nsh-np":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-np","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-nsh-ttl":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-nsh-ttl","requestBody":{"description":"nxm-nx-nsh-ttl","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-ttl":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-ttl","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-ttl"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-nsh-ttl","requestBody":{"description":"nxm-nx-nsh-ttl","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-nsh-ttl":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-ttl","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-ttl"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-nsh-ttl","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-nsh-ttl","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-ttl"}},"application/json":{"schema":{"properties":{"nxm-nx-nsh-ttl":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-ttl","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-ct-mark":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-ct-mark","requestBody":{"description":"nxm-nx-ct-mark","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-mark":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-mark","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-mark"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-ct-mark","requestBody":{"description":"nxm-nx-ct-mark","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-mark":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-mark","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-mark"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-ct-mark","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-ct-mark","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-mark"}},"application/json":{"schema":{"properties":{"nxm-nx-ct-mark":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-mark","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-ct-tp-src":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-ct-tp-src","requestBody":{"description":"nxm-nx-ct-tp-src","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-src","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-src"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-ct-tp-src","requestBody":{"description":"nxm-nx-ct-tp-src","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-src","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-src"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-ct-tp-src","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-ct-tp-src","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-src"}},"application/json":{"schema":{"properties":{"nxm-nx-ct-tp-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-src","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-ct-tp-dst":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-ct-tp-dst","requestBody":{"description":"nxm-nx-ct-tp-dst","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-dst","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-dst"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-ct-tp-dst","requestBody":{"description":"nxm-nx-ct-tp-dst","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-dst","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-dst"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-ct-tp-dst","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-ct-tp-dst","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-dst"}},"application/json":{"schema":{"properties":{"nxm-nx-ct-tp-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-dst","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/packet-processing:packet-in-message/match/openflowplugin-extension-general:extension-list={extension-key}/extension/openflowplugin-extension-nicira-match:nxm-nx-pkt-mark":{"put":{"description":"","summary":"PUT - packet-processing - Controller - nxm-nx-pkt-mark","requestBody":{"description":"nxm-nx-pkt-mark","content":{"application/json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-pkt-mark":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-pkt-mark","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-pkt-mark"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - packet-processing - Controller - nxm-nx-pkt-mark","requestBody":{"description":"nxm-nx-pkt-mark","content":{"application/yang-data+json":{"schema":{"properties":{"openflowplugin-extension-nicira-match:nxm-nx-pkt-mark":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-pkt-mark","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-pkt-mark"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - packet-processing - nxm-nx-pkt-mark","responses":{"204":{"description":"Deleted"}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - packet-processing - nxm-nx-pkt-mark","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-pkt-mark"}},"application/json":{"schema":{"properties":{"nxm-nx-pkt-mark":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-pkt-mark","type":"object"}}}}}}},"tags":["Controller packet-processing"],"parameters":[{"name":"extension-key","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/path-computation:get-constrained-path":{"post":{"description":"","summary":"POST - Controller - path-computation - get-constrained-path","requestBody":{"description":"get-constrained-path_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/path-computation_get-constrained-path_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/path-computation_get-constrained-path_input"}}}},"responses":{"200":{"description":"RPC get-constrained-path success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/path-computation_get-constrained-path_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/path-computation_get-constrained-path_output"}}}}},"tags":["Controller path-computation"],"parameters":[]}},"/rests/data/path-computation:constrained-path":{"post":{"description":"Computed Path as result of Path Computation Algorithms\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - path-computation - constrained-path","requestBody":{"description":"include-route","content":{"application/json":{"schema":{"properties":{"include-route":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constrained-path_include-route","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/path-computation_constrained-path_include-route"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller path-computation"],"parameters":[]},"put":{"description":"Computed Path as result of Path Computation Algorithms","summary":"PUT - path-computation - Controller - constrained-path","requestBody":{"description":"constrained-path","content":{"application/json":{"schema":{"properties":{"path-computation:constrained-path":{"$ref":"#/components/schemas/path-computation_constrained-path","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/path-computation_constrained-path"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller path-computation"],"parameters":[]},"patch":{"description":"Computed Path as result of Path Computation Algorithms","summary":"PATCH - path-computation - Controller - constrained-path","requestBody":{"description":"constrained-path","content":{"application/yang-data+json":{"schema":{"properties":{"path-computation:constrained-path":{"$ref":"#/components/schemas/path-computation_constrained-path","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/path-computation_constrained-path"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller path-computation"],"parameters":[]},"delete":{"description":"Computed Path as result of Path Computation Algorithms","summary":"DELETE - Controller - path-computation - constrained-path","responses":{"204":{"description":"Deleted"}},"tags":["Controller path-computation"],"parameters":[]},"get":{"description":"Computed Path as result of Path Computation Algorithms","summary":"GET - Controller - path-computation - constrained-path","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/path-computation_constrained-path"}},"application/json":{"schema":{"properties":{"constrained-path":{"$ref":"#/components/schemas/path-computation_constrained-path","type":"object"}}}}}}},"tags":["Controller path-computation"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/path-computation:constrained-path/include-route":{"put":{"description":"Speficy routes which must be included in the computed path, i.e. IRO","summary":"PUT - path-computation - Controller - include-route","requestBody":{"description":"include-route","content":{"application/json":{"schema":{"properties":{"path-computation:include-route":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constrained-path_include-route","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/path-computation_constrained-path_include-route"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller path-computation"],"parameters":[]},"patch":{"description":"Speficy routes which must be included in the computed path, i.e. IRO","summary":"PATCH - path-computation - Controller - include-route","requestBody":{"description":"include-route","content":{"application/yang-data+json":{"schema":{"properties":{"path-computation:include-route":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constrained-path_include-route","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/path-computation_constrained-path_include-route"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller path-computation"],"parameters":[]},"delete":{"description":"Speficy routes which must be included in the computed path, i.e. IRO","summary":"DELETE - Controller - path-computation - include-route","responses":{"204":{"description":"Deleted"}},"tags":["Controller path-computation"],"parameters":[]},"get":{"description":"Speficy routes which must be included in the computed path, i.e. IRO","summary":"GET - Controller - path-computation - include-route","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/path-computation_constrained-path_include-route"}},"application/json":{"schema":{"properties":{"include-route":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constrained-path_include-route","type":"object"}}}}}}}},"tags":["Controller path-computation"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/path-computation:constrained-path/exclude-route":{"put":{"description":"Speficy routes which must be excluded in the computed path, i.e. XRO","summary":"PUT - path-computation - Controller - exclude-route","requestBody":{"description":"exclude-route","content":{"application/json":{"schema":{"properties":{"path-computation:exclude-route":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constrained-path_exclude-route","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/path-computation_constrained-path_exclude-route"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller path-computation"],"parameters":[]},"patch":{"description":"Speficy routes which must be excluded in the computed path, i.e. XRO","summary":"PATCH - path-computation - Controller - exclude-route","requestBody":{"description":"exclude-route","content":{"application/yang-data+json":{"schema":{"properties":{"path-computation:exclude-route":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constrained-path_exclude-route","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/path-computation_constrained-path_exclude-route"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller path-computation"],"parameters":[]},"delete":{"description":"Speficy routes which must be excluded in the computed path, i.e. XRO","summary":"DELETE - Controller - path-computation - exclude-route","responses":{"204":{"description":"Deleted"}},"tags":["Controller path-computation"],"parameters":[]},"get":{"description":"Speficy routes which must be excluded in the computed path, i.e. XRO","summary":"GET - Controller - path-computation - exclude-route","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/path-computation_constrained-path_exclude-route"}},"application/json":{"schema":{"properties":{"exclude-route":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constrained-path_exclude-route","type":"object"}}}}}}}},"tags":["Controller path-computation"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/path-computation:constrained-path/path-description":{"put":{"description":"","summary":"PUT - path-computation - Controller - path-description","requestBody":{"description":"path-description","content":{"application/json":{"schema":{"properties":{"path-computation:path-description":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constrained-path_path-description","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/path-computation_constrained-path_path-description"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller path-computation"],"parameters":[]},"patch":{"description":"","summary":"PATCH - path-computation - Controller - path-description","requestBody":{"description":"path-description","content":{"application/yang-data+json":{"schema":{"properties":{"path-computation:path-description":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constrained-path_path-description","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/path-computation_constrained-path_path-description"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller path-computation"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - path-computation - path-description","responses":{"204":{"description":"Deleted"}},"tags":["Controller path-computation"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - path-computation - path-description","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/path-computation_constrained-path_path-description"}},"application/json":{"schema":{"properties":{"path-description":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constrained-path_path-description","type":"object"}}}}}}}},"tags":["Controller path-computation"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/pcep-topology-stats-rpc:get-stats":{"post":{"description":"Fetch PCEP session statistics for given PCEP topology and node.\nIf topology and/or node details are absent, statistics for all\nnodes under the context are returned.","summary":"POST - Controller - pcep-topology-stats-rpc - get-stats","requestBody":{"description":"get-stats_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_get-stats_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_get-stats_input"}}}},"responses":{"200":{"description":"RPC get-stats success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_get-stats_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_get-stats_output"}}}}},"tags":["Controller pcep-topology-stats-rpc"],"parameters":[]}},"/rests/operations/people:add-person":{"post":{"description":"Add a person entry into database","summary":"POST - Controller - people - add-person","requestBody":{"description":"add-person_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/people_add-person_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/people_add-person_input"}}}},"responses":{"204":{"description":"RPC add-person success"}},"tags":["Controller people"],"parameters":[]}},"/rests/data/people:people":{"post":{"description":"Top-level container for all people\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - people - people","requestBody":{"description":"person","content":{"application/json":{"schema":{"properties":{"person":{"type":"array","items":{"$ref":"#/components/schemas/people_people_person","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/people_people_person"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller people"],"parameters":[]},"put":{"description":"Top-level container for all people","summary":"PUT - people - Controller - people","requestBody":{"description":"people","content":{"application/json":{"schema":{"properties":{"people:people":{"$ref":"#/components/schemas/people_people","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/people_people"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller people"],"parameters":[]},"patch":{"description":"Top-level container for all people","summary":"PATCH - people - Controller - people","requestBody":{"description":"people","content":{"application/yang-data+json":{"schema":{"properties":{"people:people":{"$ref":"#/components/schemas/people_people","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/people_people"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller people"],"parameters":[]},"delete":{"description":"Top-level container for all people","summary":"DELETE - Controller - people - people","responses":{"204":{"description":"Deleted"}},"tags":["Controller people"],"parameters":[]},"get":{"description":"Top-level container for all people","summary":"GET - Controller - people - people","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/people_people"}},"application/json":{"schema":{"properties":{"people":{"$ref":"#/components/schemas/people_people","type":"object"}}}}}}},"tags":["Controller people"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/people:people/person={id}":{"put":{"description":"A list of people (as defined by the 'grouping person').","summary":"PUT - people - Controller - person","requestBody":{"description":"person","content":{"application/json":{"schema":{"properties":{"people:person":{"type":"array","items":{"$ref":"#/components/schemas/people_people_person","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/people_people_person"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller people"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"identifier of single list of entries."}]},"patch":{"description":"A list of people (as defined by the 'grouping person').","summary":"PATCH - people - Controller - person","requestBody":{"description":"person","content":{"application/yang-data+json":{"schema":{"properties":{"people:person":{"type":"array","items":{"$ref":"#/components/schemas/people_people_person","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/people_people_person"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller people"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"identifier of single list of entries."}]},"delete":{"description":"A list of people (as defined by the 'grouping person').","summary":"DELETE - Controller - people - person","responses":{"204":{"description":"Deleted"}},"tags":["Controller people"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"identifier of single list of entries."}]},"get":{"description":"A list of people (as defined by the 'grouping person').","summary":"GET - Controller - people - person","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/people_people_person"}},"application/json":{"schema":{"properties":{"person":{"type":"array","items":{"$ref":"#/components/schemas/people_people_person","type":"object"}}}}}}}},"tags":["Controller people"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"identifier of single list of entries."},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/programming:cancel-instruction":{"post":{"description":"","summary":"POST - Controller - programming - cancel-instruction","requestBody":{"description":"cancel-instruction_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/programming_cancel-instruction_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/programming_cancel-instruction_input"}}}},"responses":{"200":{"description":"RPC cancel-instruction success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/programming_cancel-instruction_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/programming_cancel-instruction_output"}}}}},"tags":["Controller programming"],"parameters":[]}},"/rests/operations/programming:clean-instructions":{"post":{"description":"Attempt to clean out a certain set of instructions.\nInstructions flushed this way need to be in a terminal\nstate, e.g. Successful, Failed or Cancelled. Instructions\nwhich were not cleaned are reported in the output of\nthis RPC.","summary":"POST - Controller - programming - clean-instructions","requestBody":{"description":"clean-instructions_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/programming_clean-instructions_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/programming_clean-instructions_input"}}}},"responses":{"200":{"description":"RPC clean-instructions success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/programming_clean-instructions_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/programming_clean-instructions_output"}}}}},"tags":["Controller programming"],"parameters":[]}},"/rests/data/programming:instructions-queue={instruction-queue-id}":{"put":{"description":"","summary":"PUT - programming - Controller - instructions-queue","requestBody":{"description":"instructions-queue","content":{"application/json":{"schema":{"properties":{"programming:instructions-queue":{"type":"array","items":{"$ref":"#/components/schemas/programming_instructions-queue","type":"object"}}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/programming_instructions-queue"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller programming"],"parameters":[{"name":"instruction-queue-id","in":"path","required":true,"schema":{"type":"string"}}]},"patch":{"description":"","summary":"PATCH - programming - Controller - instructions-queue","requestBody":{"description":"instructions-queue","content":{"application/yang-data+json":{"schema":{"properties":{"programming:instructions-queue":{"type":"array","items":{"$ref":"#/components/schemas/programming_instructions-queue","type":"object"}}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/programming_instructions-queue"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller programming"],"parameters":[{"name":"instruction-queue-id","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"description":"","summary":"DELETE - Controller - programming - instructions-queue","responses":{"204":{"description":"Deleted"}},"tags":["Controller programming"],"parameters":[{"name":"instruction-queue-id","in":"path","required":true,"schema":{"type":"string"}}]},"get":{"description":"","summary":"GET - Controller - programming - instructions-queue","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/programming_instructions-queue"}},"application/json":{"schema":{"properties":{"instructions-queue":{"type":"array","items":{"$ref":"#/components/schemas/programming_instructions-queue","type":"object"}}}}}}}},"tags":["Controller programming"],"parameters":[{"name":"instruction-queue-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/programming:instructions-queue={instruction-queue-id}/instruction={id}":{"get":{"description":"List of all instructions known to the\nscheduler.","summary":"GET - Controller - programming - instruction","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/programming_instructions-queue_instruction"}},"application/json":{"schema":{"properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/programming_instructions-queue_instruction","type":"object"}}}}}}}},"tags":["Controller programming"],"parameters":[{"name":"instruction-queue-id","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"content","in":"query","required":true,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/sal-async-config:set-async":{"post":{"description":"Controller to switch message set configuration.","summary":"POST - Controller - sal-async-config - set-async","requestBody":{"description":"set-async_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-async-config_set-async_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_set-async_input"}}}},"responses":{"204":{"description":"RPC set-async success"}},"tags":["Controller sal-async-config"],"parameters":[]}},"/rests/operations/sal-async-config:get-async":{"post":{"description":"Controller to switch message get configuration.","summary":"POST - Controller - sal-async-config - get-async","requestBody":{"description":"get-async_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-async-config_get-async_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_get-async_input"}}}},"responses":{"200":{"description":"RPC get-async success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-async-config_get-async_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_get-async_output"}}}}},"tags":["Controller sal-async-config"],"parameters":[]}},"/rests/data/sal-async-config:async-config-message":{"post":{"description":"\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n","summary":"POST - Controller - sal-async-config - async-config-message","requestBody":{"description":"packet-in-mask","content":{"application/json":{"schema":{"properties":{"packet-in-mask":{"$ref":"#/components/schemas/sal-async-config_async-config-message_packet-in-mask","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_async-config-message_packet-in-mask"}}}},"responses":{"201":{"description":"Created"}},"tags":["Controller sal-async-config"],"parameters":[]},"put":{"description":"","summary":"PUT - sal-async-config - Controller - async-config-message","requestBody":{"description":"async-config-message","content":{"application/json":{"schema":{"properties":{"sal-async-config:async-config-message":{"$ref":"#/components/schemas/sal-async-config_async-config-message","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_async-config-message"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller sal-async-config"],"parameters":[]},"patch":{"description":"","summary":"PATCH - sal-async-config - Controller - async-config-message","requestBody":{"description":"async-config-message","content":{"application/yang-data+json":{"schema":{"properties":{"sal-async-config:async-config-message":{"$ref":"#/components/schemas/sal-async-config_async-config-message","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_async-config-message"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller sal-async-config"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - sal-async-config - async-config-message","responses":{"204":{"description":"Deleted"}},"tags":["Controller sal-async-config"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - sal-async-config - async-config-message","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_async-config-message"}},"application/json":{"schema":{"properties":{"async-config-message":{"$ref":"#/components/schemas/sal-async-config_async-config-message","type":"object"}}}}}}},"tags":["Controller sal-async-config"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/sal-async-config:async-config-message/packet-in-mask":{"put":{"description":"","summary":"PUT - sal-async-config - Controller - packet-in-mask","requestBody":{"description":"packet-in-mask","content":{"application/json":{"schema":{"properties":{"sal-async-config:packet-in-mask":{"$ref":"#/components/schemas/sal-async-config_async-config-message_packet-in-mask","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_async-config-message_packet-in-mask"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller sal-async-config"],"parameters":[]},"patch":{"description":"","summary":"PATCH - sal-async-config - Controller - packet-in-mask","requestBody":{"description":"packet-in-mask","content":{"application/yang-data+json":{"schema":{"properties":{"sal-async-config:packet-in-mask":{"$ref":"#/components/schemas/sal-async-config_async-config-message_packet-in-mask","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_async-config-message_packet-in-mask"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller sal-async-config"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - sal-async-config - packet-in-mask","responses":{"204":{"description":"Deleted"}},"tags":["Controller sal-async-config"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - sal-async-config - packet-in-mask","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_async-config-message_packet-in-mask"}},"application/json":{"schema":{"properties":{"packet-in-mask":{"$ref":"#/components/schemas/sal-async-config_async-config-message_packet-in-mask","type":"object"}}}}}}},"tags":["Controller sal-async-config"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/sal-async-config:async-config-message/port-status-mask":{"put":{"description":"","summary":"PUT - sal-async-config - Controller - port-status-mask","requestBody":{"description":"port-status-mask","content":{"application/json":{"schema":{"properties":{"sal-async-config:port-status-mask":{"$ref":"#/components/schemas/sal-async-config_async-config-message_port-status-mask","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_async-config-message_port-status-mask"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller sal-async-config"],"parameters":[]},"patch":{"description":"","summary":"PATCH - sal-async-config - Controller - port-status-mask","requestBody":{"description":"port-status-mask","content":{"application/yang-data+json":{"schema":{"properties":{"sal-async-config:port-status-mask":{"$ref":"#/components/schemas/sal-async-config_async-config-message_port-status-mask","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_async-config-message_port-status-mask"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller sal-async-config"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - sal-async-config - port-status-mask","responses":{"204":{"description":"Deleted"}},"tags":["Controller sal-async-config"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - sal-async-config - port-status-mask","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_async-config-message_port-status-mask"}},"application/json":{"schema":{"properties":{"port-status-mask":{"$ref":"#/components/schemas/sal-async-config_async-config-message_port-status-mask","type":"object"}}}}}}},"tags":["Controller sal-async-config"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/data/sal-async-config:async-config-message/flow-removed-mask":{"put":{"description":"","summary":"PUT - sal-async-config - Controller - flow-removed-mask","requestBody":{"description":"flow-removed-mask","content":{"application/json":{"schema":{"properties":{"sal-async-config:flow-removed-mask":{"$ref":"#/components/schemas/sal-async-config_async-config-message_flow-removed-mask","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_async-config-message_flow-removed-mask"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller sal-async-config"],"parameters":[]},"patch":{"description":"","summary":"PATCH - sal-async-config - Controller - flow-removed-mask","requestBody":{"description":"flow-removed-mask","content":{"application/yang-data+json":{"schema":{"properties":{"sal-async-config:flow-removed-mask":{"$ref":"#/components/schemas/sal-async-config_async-config-message_flow-removed-mask","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_async-config-message_flow-removed-mask"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller sal-async-config"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - sal-async-config - flow-removed-mask","responses":{"204":{"description":"Deleted"}},"tags":["Controller sal-async-config"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - sal-async-config - flow-removed-mask","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/sal-async-config_async-config-message_flow-removed-mask"}},"application/json":{"schema":{"properties":{"flow-removed-mask":{"$ref":"#/components/schemas/sal-async-config_async-config-message_flow-removed-mask","type":"object"}}}}}}},"tags":["Controller sal-async-config"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/sal-bundle:control-bundle":{"post":{"description":"Control bundles on openflow device.","summary":"POST - Controller - sal-bundle - control-bundle","requestBody":{"description":"control-bundle_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-bundle_control-bundle_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-bundle_control-bundle_input"}}}},"responses":{"204":{"description":"RPC control-bundle success"}},"tags":["Controller sal-bundle"],"parameters":[]}},"/rests/operations/sal-bundle:add-bundle-messages":{"post":{"description":"Add messages into bundle on openflow device.","summary":"POST - Controller - sal-bundle - add-bundle-messages","requestBody":{"description":"add-bundle-messages_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-bundle_add-bundle-messages_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-bundle_add-bundle-messages_input"}}}},"responses":{"204":{"description":"RPC add-bundle-messages success"}},"tags":["Controller sal-bundle"],"parameters":[]}},"/rests/operations/sal-echo:send-echo":{"post":{"description":"Sending echo message to openflow device.","summary":"POST - Controller - sal-echo - send-echo","requestBody":{"description":"send-echo_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-echo_send-echo_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-echo_send-echo_input"}}}},"responses":{"200":{"description":"RPC send-echo success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-echo_send-echo_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-echo_send-echo_output"}}}}},"tags":["Controller sal-echo"],"parameters":[]}},"/rests/operations/sal-experimenter-message:send-experimenter":{"post":{"description":"Send experimenter request to device, expecting reply.","summary":"POST - Controller - sal-experimenter-message - send-experimenter","requestBody":{"description":"send-experimenter_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-experimenter-message_send-experimenter_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-experimenter-message_send-experimenter_input"}}}},"responses":{"204":{"description":"RPC send-experimenter success"}},"tags":["Controller sal-experimenter-message"],"parameters":[]}},"/rests/operations/sal-experimenter-mp-message:send-experimenter-mp-request":{"post":{"description":"Send experimenter multipart request to device, expecting reply.","summary":"POST - Controller - sal-experimenter-mp-message - send-experimenter-mp-request","requestBody":{"description":"send-experimenter-mp-request_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-experimenter-mp-message_send-experimenter-mp-request_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-experimenter-mp-message_send-experimenter-mp-request_input"}}}},"responses":{"200":{"description":"RPC send-experimenter-mp-request success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-experimenter-mp-message_send-experimenter-mp-request_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-experimenter-mp-message_send-experimenter-mp-request_output"}}}}},"tags":["Controller sal-experimenter-mp-message"],"parameters":[]}},"/rests/operations/sal-flat-batch:process-flat-batch":{"post":{"description":"Process add/update/remove of items in batch towards openflow device.","summary":"POST - Controller - sal-flat-batch - process-flat-batch","requestBody":{"description":"process-flat-batch_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-flat-batch_process-flat-batch_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-flat-batch_process-flat-batch_input"}}}},"responses":{"200":{"description":"RPC process-flat-batch success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-flat-batch_process-flat-batch_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-flat-batch_process-flat-batch_output"}}}}},"tags":["Controller sal-flat-batch"],"parameters":[]}},"/rests/operations/sal-flow:add-flow":{"post":{"description":"Adding flow to openflow device.","summary":"POST - Controller - sal-flow - add-flow","requestBody":{"description":"add-flow_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-flow_add-flow_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-flow_add-flow_input"}}}},"responses":{"200":{"description":"RPC add-flow success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-flow_add-flow_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-flow_add-flow_output"}}}}},"tags":["Controller sal-flow"],"parameters":[]}},"/rests/operations/sal-flow:remove-flow":{"post":{"description":"Removing flow from openflow device.","summary":"POST - Controller - sal-flow - remove-flow","requestBody":{"description":"remove-flow_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-flow_remove-flow_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-flow_remove-flow_input"}}}},"responses":{"200":{"description":"RPC remove-flow success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-flow_remove-flow_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-flow_remove-flow_output"}}}}},"tags":["Controller sal-flow"],"parameters":[]}},"/rests/operations/sal-flow:update-flow":{"post":{"description":"Updating flow on openflow device.","summary":"POST - Controller - sal-flow - update-flow","requestBody":{"description":"update-flow_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-flow_update-flow_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-flow_update-flow_input"}}}},"responses":{"200":{"description":"RPC update-flow success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-flow_update-flow_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-flow_update-flow_output"}}}}},"tags":["Controller sal-flow"],"parameters":[]}},"/rests/operations/sal-flows-batch:add-flows-batch":{"post":{"description":"Batch adding flows to openflow device.","summary":"POST - Controller - sal-flows-batch - add-flows-batch","requestBody":{"description":"add-flows-batch_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-flows-batch_add-flows-batch_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-flows-batch_add-flows-batch_input"}}}},"responses":{"200":{"description":"RPC add-flows-batch success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-flows-batch_add-flows-batch_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-flows-batch_add-flows-batch_output"}}}}},"tags":["Controller sal-flows-batch"],"parameters":[]}},"/rests/operations/sal-flows-batch:remove-flows-batch":{"post":{"description":"Batch removing flows from openflow device.","summary":"POST - Controller - sal-flows-batch - remove-flows-batch","requestBody":{"description":"remove-flows-batch_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-flows-batch_remove-flows-batch_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-flows-batch_remove-flows-batch_input"}}}},"responses":{"200":{"description":"RPC remove-flows-batch success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-flows-batch_remove-flows-batch_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-flows-batch_remove-flows-batch_output"}}}}},"tags":["Controller sal-flows-batch"],"parameters":[]}},"/rests/operations/sal-flows-batch:update-flows-batch":{"post":{"description":"Batch updating flows on openflow device.","summary":"POST - Controller - sal-flows-batch - update-flows-batch","requestBody":{"description":"update-flows-batch_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-flows-batch_update-flows-batch_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-flows-batch_update-flows-batch_input"}}}},"responses":{"200":{"description":"RPC update-flows-batch success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-flows-batch_update-flows-batch_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-flows-batch_update-flows-batch_output"}}}}},"tags":["Controller sal-flows-batch"],"parameters":[]}},"/rests/operations/sal-group:add-group":{"post":{"description":"Adding group to openflow device","summary":"POST - Controller - sal-group - add-group","requestBody":{"description":"add-group_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-group_add-group_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-group_add-group_input"}}}},"responses":{"200":{"description":"RPC add-group success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-group_add-group_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-group_add-group_output"}}}}},"tags":["Controller sal-group"],"parameters":[]}},"/rests/operations/sal-group:remove-group":{"post":{"description":"Removing group from openflow device","summary":"POST - Controller - sal-group - remove-group","requestBody":{"description":"remove-group_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-group_remove-group_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-group_remove-group_input"}}}},"responses":{"200":{"description":"RPC remove-group success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-group_remove-group_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-group_remove-group_output"}}}}},"tags":["Controller sal-group"],"parameters":[]}},"/rests/operations/sal-group:update-group":{"post":{"description":"Updating group on openflow device","summary":"POST - Controller - sal-group - update-group","requestBody":{"description":"update-group_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-group_update-group_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-group_update-group_input"}}}},"responses":{"200":{"description":"RPC update-group success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-group_update-group_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-group_update-group_output"}}}}},"tags":["Controller sal-group"],"parameters":[]}},"/rests/operations/sal-groups-batch:add-groups-batch":{"post":{"description":"Batch adding groups to openflow device.","summary":"POST - Controller - sal-groups-batch - add-groups-batch","requestBody":{"description":"add-groups-batch_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-groups-batch_add-groups-batch_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-groups-batch_add-groups-batch_input"}}}},"responses":{"200":{"description":"RPC add-groups-batch success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-groups-batch_add-groups-batch_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-groups-batch_add-groups-batch_output"}}}}},"tags":["Controller sal-groups-batch"],"parameters":[]}},"/rests/operations/sal-groups-batch:remove-groups-batch":{"post":{"description":"Batch removing groups from openflow device.","summary":"POST - Controller - sal-groups-batch - remove-groups-batch","requestBody":{"description":"remove-groups-batch_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-groups-batch_remove-groups-batch_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-groups-batch_remove-groups-batch_input"}}}},"responses":{"200":{"description":"RPC remove-groups-batch success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-groups-batch_remove-groups-batch_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-groups-batch_remove-groups-batch_output"}}}}},"tags":["Controller sal-groups-batch"],"parameters":[]}},"/rests/operations/sal-groups-batch:update-groups-batch":{"post":{"description":"Batch updating groups on openflow device.","summary":"POST - Controller - sal-groups-batch - update-groups-batch","requestBody":{"description":"update-groups-batch_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-groups-batch_update-groups-batch_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-groups-batch_update-groups-batch_input"}}}},"responses":{"200":{"description":"RPC update-groups-batch success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-groups-batch_update-groups-batch_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-groups-batch_update-groups-batch_output"}}}}},"tags":["Controller sal-groups-batch"],"parameters":[]}},"/rests/operations/sal-meter:add-meter":{"post":{"description":"Adding meter to openflow device.","summary":"POST - Controller - sal-meter - add-meter","requestBody":{"description":"add-meter_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-meter_add-meter_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-meter_add-meter_input"}}}},"responses":{"200":{"description":"RPC add-meter success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-meter_add-meter_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-meter_add-meter_output"}}}}},"tags":["Controller sal-meter"],"parameters":[]}},"/rests/operations/sal-meter:remove-meter":{"post":{"description":"Removing metere from openflow device.","summary":"POST - Controller - sal-meter - remove-meter","requestBody":{"description":"remove-meter_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-meter_remove-meter_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-meter_remove-meter_input"}}}},"responses":{"200":{"description":"RPC remove-meter success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-meter_remove-meter_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-meter_remove-meter_output"}}}}},"tags":["Controller sal-meter"],"parameters":[]}},"/rests/operations/sal-meter:update-meter":{"post":{"description":"Updating meter on openflow device.","summary":"POST - Controller - sal-meter - update-meter","requestBody":{"description":"update-meter_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-meter_update-meter_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-meter_update-meter_input"}}}},"responses":{"200":{"description":"RPC update-meter success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-meter_update-meter_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-meter_update-meter_output"}}}}},"tags":["Controller sal-meter"],"parameters":[]}},"/rests/operations/sal-meters-batch:add-meters-batch":{"post":{"description":"Adding batch meters to openflow device.","summary":"POST - Controller - sal-meters-batch - add-meters-batch","requestBody":{"description":"add-meters-batch_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-meters-batch_add-meters-batch_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-meters-batch_add-meters-batch_input"}}}},"responses":{"200":{"description":"RPC add-meters-batch success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-meters-batch_add-meters-batch_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-meters-batch_add-meters-batch_output"}}}}},"tags":["Controller sal-meters-batch"],"parameters":[]}},"/rests/operations/sal-meters-batch:remove-meters-batch":{"post":{"description":"Removing batch meter from openflow device.","summary":"POST - Controller - sal-meters-batch - remove-meters-batch","requestBody":{"description":"remove-meters-batch_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-meters-batch_remove-meters-batch_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-meters-batch_remove-meters-batch_input"}}}},"responses":{"200":{"description":"RPC remove-meters-batch success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-meters-batch_remove-meters-batch_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-meters-batch_remove-meters-batch_output"}}}}},"tags":["Controller sal-meters-batch"],"parameters":[]}},"/rests/operations/sal-meters-batch:update-meters-batch":{"post":{"description":"Updating batch meter on openflow device.","summary":"POST - Controller - sal-meters-batch - update-meters-batch","requestBody":{"description":"update-meters-batch_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-meters-batch_update-meters-batch_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-meters-batch_update-meters-batch_input"}}}},"responses":{"200":{"description":"RPC update-meters-batch success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-meters-batch_update-meters-batch_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-meters-batch_update-meters-batch_output"}}}}},"tags":["Controller sal-meters-batch"],"parameters":[]}},"/rests/operations/sal-port:update-port":{"post":{"description":"Updating port on openflow device.","summary":"POST - Controller - sal-port - update-port","requestBody":{"description":"update-port_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-port_update-port_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-port_update-port_input"}}}},"responses":{"200":{"description":"RPC update-port success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-port_update-port_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-port_update-port_output"}}}}},"tags":["Controller sal-port"],"parameters":[]}},"/rests/operations/sal-queue:get-queue":{"post":{"description":"Exploring openflow device queues.","summary":"POST - Controller - sal-queue - get-queue","requestBody":{"description":"get-queue_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-queue_get-queue_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-queue_get-queue_input"}}}},"responses":{"200":{"description":"RPC get-queue success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-queue_get-queue_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-queue_get-queue_output"}}}}},"tags":["Controller sal-queue"],"parameters":[]}},"/rests/operations/sal-remote:create-data-change-event-subscription":{"post":{"description":"","summary":"POST - Controller - sal-remote - create-data-change-event-subscription","requestBody":{"description":"create-data-change-event-subscription_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-remote_create-data-change-event-subscription_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-remote_create-data-change-event-subscription_input"}}}},"responses":{"200":{"description":"RPC create-data-change-event-subscription success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-remote_create-data-change-event-subscription_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-remote_create-data-change-event-subscription_output"}}}}},"tags":["Controller sal-remote"],"parameters":[]}},"/rests/operations/sal-remote:create-notification-stream":{"post":{"description":"","summary":"POST - Controller - sal-remote - create-notification-stream","requestBody":{"description":"create-notification-stream_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-remote_create-notification-stream_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-remote_create-notification-stream_input"}}}},"responses":{"200":{"description":"RPC create-notification-stream success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-remote_create-notification-stream_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-remote_create-notification-stream_output"}}}}},"tags":["Controller sal-remote"],"parameters":[]}},"/rests/operations/sal-remote:begin-transaction":{"post":{"description":"","summary":"POST - Controller - sal-remote - begin-transaction","requestBody":{"description":"begin-transaction_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"},"type":"object"}}}},"responses":{"200":{"description":"RPC begin-transaction success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-remote_begin-transaction_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-remote_begin-transaction_output"}}}}},"tags":["Controller sal-remote"],"parameters":[]}},"/rests/operations/sal-role:set-role":{"post":{"description":"Setting role to openflow device.","summary":"POST - Controller - sal-role - set-role","requestBody":{"description":"set-role_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-role_set-role_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-role_set-role_input"}}}},"responses":{"200":{"description":"RPC set-role success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-role_set-role_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-role_set-role_output"}}}}},"tags":["Controller sal-role"],"parameters":[]}},"/rests/operations/sal-table:update-table":{"post":{"description":"Configuring openflow table.","summary":"POST - Controller - sal-table - update-table","requestBody":{"description":"update-table_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/sal-table_update-table_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-table_update-table_input"}}}},"responses":{"200":{"description":"RPC update-table success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/sal-table_update-table_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/sal-table_update-table_output"}}}}},"tags":["Controller sal-table"],"parameters":[]}},"/rests/operations/statistics-manager-control:change-statistics-work-mode":{"post":{"description":"Set statistics manager work mode","summary":"POST - Controller - statistics-manager-control - change-statistics-work-mode","requestBody":{"description":"change-statistics-work-mode_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/statistics-manager-control_change-statistics-work-mode_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/statistics-manager-control_change-statistics-work-mode_input"}}}},"responses":{"204":{"description":"RPC change-statistics-work-mode success"}},"tags":["Controller statistics-manager-control"],"parameters":[]}},"/rests/operations/statistics-manager-control:get-statistics-work-mode":{"post":{"description":"Get statistics manager work mode","summary":"POST - Controller - statistics-manager-control - get-statistics-work-mode","requestBody":{"description":"get-statistics-work-mode_input","content":{"application/json":{"schema":{"properties":{"input":{"type":"object"}},"type":"object"}},"application/xml":{"schema":{"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control"},"type":"object"}}}},"responses":{"200":{"description":"RPC get-statistics-work-mode success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/statistics-manager-control_get-statistics-work-mode_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/statistics-manager-control_get-statistics-work-mode_output"}}}}},"tags":["Controller statistics-manager-control"],"parameters":[]}},"/rests/data/topology-lldp-discovery-config:topology-lldp-discovery-config":{"put":{"description":"","summary":"PUT - topology-lldp-discovery-config - Controller - topology-lldp-discovery-config","requestBody":{"description":"topology-lldp-discovery-config","content":{"application/json":{"schema":{"properties":{"topology-lldp-discovery-config:topology-lldp-discovery-config":{"$ref":"#/components/schemas/topology-lldp-discovery-config_topology-lldp-discovery-config","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/topology-lldp-discovery-config_topology-lldp-discovery-config"}}}},"responses":{"201":{"description":"Created"},"204":{"description":"Updated"}},"tags":["Controller topology-lldp-discovery-config"],"parameters":[]},"patch":{"description":"","summary":"PATCH - topology-lldp-discovery-config - Controller - topology-lldp-discovery-config","requestBody":{"description":"topology-lldp-discovery-config","content":{"application/yang-data+json":{"schema":{"properties":{"topology-lldp-discovery-config:topology-lldp-discovery-config":{"$ref":"#/components/schemas/topology-lldp-discovery-config_topology-lldp-discovery-config","type":"object"}}}},"application/yang-data+xml":{"schema":{"$ref":"#/components/schemas/topology-lldp-discovery-config_topology-lldp-discovery-config"}}}},"responses":{"200":{"description":"OK"},"204":{"description":"Updated"}},"tags":["Controller topology-lldp-discovery-config"],"parameters":[]},"delete":{"description":"","summary":"DELETE - Controller - topology-lldp-discovery-config - topology-lldp-discovery-config","responses":{"204":{"description":"Deleted"}},"tags":["Controller topology-lldp-discovery-config"],"parameters":[]},"get":{"description":"","summary":"GET - Controller - topology-lldp-discovery-config - topology-lldp-discovery-config","responses":{"200":{"description":"200","content":{"application/xml":{"schema":{"$ref":"#/components/schemas/topology-lldp-discovery-config_topology-lldp-discovery-config"}},"application/json":{"schema":{"properties":{"topology-lldp-discovery-config":{"$ref":"#/components/schemas/topology-lldp-discovery-config_topology-lldp-discovery-config","type":"object"}}}}}}},"tags":["Controller topology-lldp-discovery-config"],"parameters":[{"name":"content","in":"query","required":false,"schema":{"enum":["config","nonconfig","all"],"type":"string"}}]}},"/rests/operations/topology-tunnel-pcep-programming:pcep-create-p2p-tunnel":{"post":{"description":"","summary":"POST - Controller - topology-tunnel-pcep-programming - pcep-create-p2p-tunnel","requestBody":{"description":"pcep-create-p2p-tunnel_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_pcep-create-p2p-tunnel_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_pcep-create-p2p-tunnel_input"}}}},"responses":{"200":{"description":"RPC pcep-create-p2p-tunnel success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_pcep-create-p2p-tunnel_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_pcep-create-p2p-tunnel_output"}}}}},"tags":["Controller topology-tunnel-pcep-programming"],"parameters":[]}},"/rests/operations/topology-tunnel-pcep-programming:pcep-destroy-tunnel":{"post":{"description":"","summary":"POST - Controller - topology-tunnel-pcep-programming - pcep-destroy-tunnel","requestBody":{"description":"pcep-destroy-tunnel_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_pcep-destroy-tunnel_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_pcep-destroy-tunnel_input"}}}},"responses":{"200":{"description":"RPC pcep-destroy-tunnel success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_pcep-destroy-tunnel_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_pcep-destroy-tunnel_output"}}}}},"tags":["Controller topology-tunnel-pcep-programming"],"parameters":[]}},"/rests/operations/topology-tunnel-pcep-programming:pcep-update-tunnel":{"post":{"description":"","summary":"POST - Controller - topology-tunnel-pcep-programming - pcep-update-tunnel","requestBody":{"description":"pcep-update-tunnel_input","content":{"application/json":{"schema":{"properties":{"input":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_pcep-update-tunnel_input","type":"object"}}}},"application/xml":{"schema":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_pcep-update-tunnel_input"}}}},"responses":{"200":{"description":"RPC pcep-update-tunnel success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_pcep-update-tunnel_output"}},"application/xml":{"schema":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_pcep-update-tunnel_output"}}}}},"tags":["Controller topology-tunnel-pcep-programming"],"parameters":[]}}},"components":{"schemas":{"aaa_authentication":{"title":"aaa_authentication","type":"object","properties":{"grants":{"$ref":"#/components/schemas/aaa_authentication_grants"},"roles":{"$ref":"#/components/schemas/aaa_authentication_roles"},"domains":{"$ref":"#/components/schemas/aaa_authentication_domains"},"users":{"$ref":"#/components/schemas/aaa_authentication_users"}},"xml":{"name":"authentication","namespace":"urn:opendaylight:params:xml:ns:yang:aaa"}},"aaa_authentication_domains":{"title":"aaa_authentication_domains","type":"object","properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_domains_domains"},"description":""}},"xml":{"name":"domains","namespace":"urn:opendaylight:params:xml:ns:yang:aaa"}},"aaa_authentication_domains_domains":{"title":"aaa_authentication_domains_domains","type":"object","properties":{"name":{"description":"The name of the domain.","type":"string","example":"Some name"},"description":{"description":"A description for the domain;  defaults to the empty string.","type":"string","default":"","example":"Some description"},"domainid":{"description":"An internal wiring detail in the form 'name'.","type":"string","example":"Some domainid"}},"xml":{"name":"domains","namespace":"urn:opendaylight:params:xml:ns:yang:aaa"}},"aaa_authentication_users":{"title":"aaa_authentication_users","type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_users_users"},"description":""}},"xml":{"name":"users","namespace":"urn:opendaylight:params:xml:ns:yang:aaa"}},"aaa_authentication_users_users":{"title":"aaa_authentication_users_users","type":"object","properties":{"password":{"description":"A one-way hashed and salted version of the users password.","type":"string","example":"Some password"},"salt":{"description":"A user-specific salt used for password hashing.","type":"string","example":"Some salt"},"name":{"description":"The name of the user.","type":"string","example":"Some name"},"description":{"description":"A description for the user;  defaults to the empty string.","type":"string","default":"","example":"Some description"},"userid":{"description":"An internal wiring detail in the form 'name@domain'.","type":"string","example":"Some userid"},"enabled":{"description":"Whether or not the user is enabled;  defaults to true.","type":"boolean","default":true,"example":true},"email":{"description":"An email address for the user;  defaults to the empty string.","type":"string","default":"","example":"Some email"},"domainid":{"description":"The domain to which the user belongs.","type":"string","example":"Some domainid"}},"xml":{"name":"users","namespace":"urn:opendaylight:params:xml:ns:yang:aaa"}},"aaa_authentication_roles":{"title":"aaa_authentication_roles","type":"object","properties":{"roles":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_roles_roles"},"description":""}},"xml":{"name":"roles","namespace":"urn:opendaylight:params:xml:ns:yang:aaa"}},"aaa_authentication_roles_roles":{"title":"aaa_authentication_roles_roles","type":"object","properties":{"roleid":{"description":"An internal wiring detail in the form 'name'.","type":"string","example":"Some roleid"},"name":{"description":"The name for the role.","type":"string","example":"Some name"},"description":{"description":"A description of the role;  defaults to the empty string.","type":"string","default":"","example":"Some description"},"domainid":{"description":"The domain associated with the role.","type":"string","example":"Some domainid"}},"xml":{"name":"roles","namespace":"urn:opendaylight:params:xml:ns:yang:aaa"}},"aaa_authentication_grants":{"title":"aaa_authentication_grants","type":"object","properties":{"grants":{"type":"array","items":{"$ref":"#/components/schemas/aaa_authentication_grants_grants"},"description":""}},"xml":{"name":"grants","namespace":"urn:opendaylight:params:xml:ns:yang:aaa"}},"aaa_authentication_grants_grants":{"title":"aaa_authentication_grants_grants","type":"object","properties":{"grantid":{"description":"An internal wiring detail in the form 'userid@roleid@domainid'.","type":"string","example":"Some grantid"},"roleid":{"description":"A reference to the role.","type":"string","example":"Some roleid"},"userid":{"description":"A reference to the user.","type":"string","example":"Some userid"},"domainid":{"description":"A reference to the domain.","type":"string","example":"Some domainid"}},"xml":{"name":"grants","namespace":"urn:opendaylight:params:xml:ns:yang:aaa"}},"aaa_http-authorization":{"title":"aaa_http-authorization","type":"object","properties":{"policies":{"$ref":"#/components/schemas/aaa_http-authorization_policies"}},"xml":{"name":"http-authorization","namespace":"urn:opendaylight:params:xml:ns:yang:aaa"}},"aaa_http-authorization_policies":{"title":"aaa_http-authorization_policies","type":"object","properties":{"policies":{"type":"array","items":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies"},"description":""}},"xml":{"name":"policies","namespace":"urn:opendaylight:params:xml:ns:yang:aaa"}},"aaa_http-authorization_policies_policies":{"title":"aaa_http-authorization_policies_policies","type":"object","properties":{"resource":{"description":"","type":"string","default":"*","example":"Some resource"},"permissions":{"type":"array","items":{"$ref":"#/components/schemas/aaa_http-authorization_policies_policies_permissions"},"description":""},"index":{"description":"","type":"integer","format":"int64","example":0},"description":{"description":"","type":"string","default":"","example":"Some description"}},"required":["index"],"xml":{"name":"policies","namespace":"urn:opendaylight:params:xml:ns:yang:aaa"}},"aaa_http-authorization_policies_policies_permissions":{"title":"aaa_http-authorization_policies_policies_permissions","type":"object","properties":{"role":{"description":"","type":"string","example":"Some role"},"actions":{"type":"array","items":{"type":"string","enum":["get","put","post","patch","delete"],"example":"get"},"description":""}},"xml":{"name":"permissions","namespace":"urn:opendaylight:params:xml:ns:yang:aaa"}},"aaa-app-config_shiro-configuration":{"title":"aaa-app-config_shiro-configuration","type":"object","description":"AAA shiro related configuration.","properties":{"urls":{"type":"array","items":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_urls"},"description":"The urls section of shiro.ini."},"main":{"type":"array","items":{"$ref":"#/components/schemas/aaa-app-config_shiro-configuration_main"},"description":"The main section of shiro.ini."}},"xml":{"name":"shiro-configuration","namespace":"urn:opendaylight:aaa:app:config"}},"aaa-app-config_shiro-configuration_main":{"title":"aaa-app-config_shiro-configuration_main","type":"object","description":"The main section of shiro.ini.","properties":{"pair-key":{"description":"The key.","type":"string","example":"Some pair-key"},"pair-value":{"description":"The value.","type":"string","example":"Some pair-value"}},"xml":{"name":"main","namespace":"urn:opendaylight:aaa:app:config"}},"aaa-app-config_shiro-configuration_urls":{"title":"aaa-app-config_shiro-configuration_urls","type":"object","description":"The urls section of shiro.ini.","properties":{"pair-key":{"description":"The key.","type":"string","example":"Some pair-key"},"pair-value":{"description":"The value.","type":"string","example":"Some pair-value"}},"xml":{"name":"urls","namespace":"urn:opendaylight:aaa:app:config"}},"aaa-app-config_datastore-config":{"title":"aaa-app-config_datastore-config","type":"object","properties":{"time-to-live":{"description":"Time to live for tokens in second.","type":"integer","default":36000,"example":0},"time-to-wait":{"description":"Time to wait for tokens in second.","type":"integer","default":3600,"example":0},"store":{"description":"Available data store types.","type":"string","enum":["h2-data-store"],"example":"h2-data-store"}},"xml":{"name":"datastore-config","namespace":"urn:opendaylight:aaa:app:config"}},"aaa-cert_aaa-cert-service-config":{"title":"aaa-cert_aaa-cert-service-config","type":"object","properties":{"bundle-name":{"description":"bundle name of the default TLS config in MdsaL","type":"string","example":"Some bundle-name"},"use-config":{"description":"Use the configuration data to create the keystores","type":"boolean","default":false,"example":true},"ctlKeystore":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore"},"trustKeystore":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_trustKeystore"},"use-mdsal":{"description":"Use Mdsal as Data store for the keystore and certificates","type":"boolean","default":false,"example":true}},"xml":{"name":"aaa-cert-service-config","namespace":"urn:opendaylight:yang:aaa:cert"}},"aaa-cert_aaa-cert-service-config_ctlKeystore":{"title":"aaa-cert_aaa-cert-service-config_ctlKeystore","type":"object","properties":{"sign-alg":{"description":"The supported sign algorithmes i.e: SHA1withDSA or SHA1withRSA","type":"string","example":"Some sign-alg"},"keysize":{"description":"the key size i.e: 1024","type":"integer","format":"int32","example":-2147483648},"tls-protocols":{"description":"the TLS supported protocols SSLv2Hello,TLSv1.1,TLSv1.2","type":"string","example":"Some tls-protocols"},"cipher-suites":{"type":"array","items":{"$ref":"#/components/schemas/aaa-cert_aaa-cert-service-config_ctlKeystore_cipher-suites"},"description":""},"name":{"description":"keystore name default is ctl","type":"string","example":"Some name"},"alias":{"description":"key alias","type":"string","example":"Some alias"},"dname":{"description":"X.500 Distinguished Names should be in the following formate\nCN=commonName\nOU=organizationUnit\nO=organizationName\nL=localityName\nS=stateName\nC=country","type":"string","example":"Some dname"},"validity":{"description":"validity","type":"integer","format":"int32","example":-2147483648},"key-alg":{"description":"The supported key generation algorithms i.e: DSA or RSA","type":"string","example":"Some key-alg"},"store-password":{"description":"keystore password","type":"string","example":"Some store-password"}},"xml":{"name":"ctlKeystore","namespace":"urn:opendaylight:yang:aaa:cert"}},"aaa-cert_aaa-cert-service-config_ctlKeystore_cipher-suites":{"title":"aaa-cert_aaa-cert-service-config_ctlKeystore_cipher-suites","type":"object","properties":{"suite-name":{"description":"","type":"string","example":"Some suite-name"}},"xml":{"name":"cipher-suites","namespace":"urn:opendaylight:yang:aaa:cert"}},"aaa-cert_aaa-cert-service-config_trustKeystore":{"title":"aaa-cert_aaa-cert-service-config_trustKeystore","type":"object","properties":{"name":{"description":"keystore name default is truststore","type":"string","example":"Some name"},"store-password":{"description":"keystore password","type":"string","example":"Some store-password"}},"xml":{"name":"trustKeystore","namespace":"urn:opendaylight:yang:aaa:cert"}},"aaa-cert-mdsal_key-stores":{"title":"aaa-cert-mdsal_key-stores","type":"object","properties":{"ssl-data":{"type":"array","items":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data"},"description":""},"id":{"description":"","type":"string","example":"Some id"}},"required":["id"],"xml":{"name":"key-stores","namespace":"urn:opendaylight:yang:aaa:cert:mdsal"}},"aaa-cert-mdsal_key-stores_ssl-data":{"title":"aaa-cert-mdsal_key-stores_ssl-data","type":"object","properties":{"odl-keystore":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_odl-keystore"},"bundle-name":{"description":"bundle name","type":"string","example":"Some bundle-name"},"tls-protocols":{"description":"the TLS supported protocols (SSLv2Hello,TLSv1.1,TLSv1.2) the selected protocol should be seperated by ',' char","type":"string","example":"Some tls-protocols"},"cipher-suites":{"type":"array","items":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_cipher-suites"},"description":""},"trust-keystore":{"$ref":"#/components/schemas/aaa-cert-mdsal_key-stores_ssl-data_trust-keystore"}},"required":["bundle-name"],"xml":{"name":"ssl-data","namespace":"urn:opendaylight:yang:aaa:cert:mdsal"}},"aaa-cert-mdsal_key-stores_ssl-data_odl-keystore":{"title":"aaa-cert-mdsal_key-stores_ssl-data_odl-keystore","type":"object","properties":{"sign-alg":{"description":"supported sign algorithmes for DSA the default sign Alg is SHA1withDSA and for RSA the\ndefault sign Alg is MD5withRSA","type":"string","example":"Some sign-alg"},"keysize":{"description":"key size is 1024 or 2048","type":"integer","format":"int32","example":-2147483648},"name":{"description":"keystore name","type":"string","example":"Some name"},"alias":{"description":"key alias","type":"string","example":"Some alias"},"keystoreFile":{"description":"keystore file as Binary","type":"string","format":"byte"},"dname":{"description":"X.500 Distinguished Names should be in the following formate\nCN=commonName\nOU=organizationUnit\nO=organizationName\nL=localityName\nS=stateName\nC=country","type":"string","example":"Some dname"},"validity":{"description":"validity","type":"integer","format":"int32","example":-2147483648},"key-alg":{"description":"supported key geneartion algorithmes are DSA and RSA","type":"string","example":"Some key-alg"},"store-password":{"description":"keystore password","type":"string","example":"Some store-password"}},"xml":{"name":"odl-keystore","namespace":"urn:opendaylight:yang:aaa:cert:mdsal"}},"aaa-cert-mdsal_key-stores_ssl-data_trust-keystore":{"title":"aaa-cert-mdsal_key-stores_ssl-data_trust-keystore","type":"object","properties":{"sign-alg":{"description":"supported sign algorithmes for DSA the default sign Alg is SHA1withDSA and for RSA the\ndefault sign Alg is MD5withRSA","type":"string","example":"Some sign-alg"},"keysize":{"description":"key size is 1024 or 2048","type":"integer","format":"int32","example":-2147483648},"name":{"description":"keystore name","type":"string","example":"Some name"},"alias":{"description":"key alias","type":"string","example":"Some alias"},"keystoreFile":{"description":"keystore file as Binary","type":"string","format":"byte"},"dname":{"description":"X.500 Distinguished Names should be in the following formate\nCN=commonName\nOU=organizationUnit\nO=organizationName\nL=localityName\nS=stateName\nC=country","type":"string","example":"Some dname"},"validity":{"description":"validity","type":"integer","format":"int32","example":-2147483648},"key-alg":{"description":"supported key geneartion algorithmes are DSA and RSA","type":"string","example":"Some key-alg"},"store-password":{"description":"keystore password","type":"string","example":"Some store-password"}},"xml":{"name":"trust-keystore","namespace":"urn:opendaylight:yang:aaa:cert:mdsal"}},"aaa-cert-mdsal_key-stores_ssl-data_cipher-suites":{"title":"aaa-cert-mdsal_key-stores_ssl-data_cipher-suites","type":"object","properties":{"suiteName":{"description":"","type":"string","example":"Some suiteName"}},"xml":{"name":"cipher-suites","namespace":"urn:opendaylight:yang:aaa:cert:mdsal"}},"aaa-cert-rpc_getODLCertificate_output":{"title":"aaa-cert-rpc_getODLCertificate_output","type":"object","properties":{"odl-cert":{"description":"","type":"string","example":"Some odl-cert"}},"xml":{"name":"output","namespace":"urn:opendaylight:yang:aaa:cert:rpc"}},"aaa-cert-rpc_getODLCertificateReq_output":{"title":"aaa-cert-rpc_getODLCertificateReq_output","type":"object","properties":{"odl-cert-req":{"description":"","type":"string","example":"Some odl-cert-req"}},"xml":{"name":"output","namespace":"urn:opendaylight:yang:aaa:cert:rpc"}},"aaa-cert-rpc_setODLCertificate_input":{"title":"aaa-cert-rpc_setODLCertificate_input","type":"object","properties":{"odl-cert-alias":{"description":"","type":"string","example":"Some odl-cert-alias"},"odl-cert":{"description":"","type":"string","example":"Some odl-cert"}},"xml":{"name":"input","namespace":"urn:opendaylight:yang:aaa:cert:rpc"}},"aaa-cert-rpc_setNodeCertificate_input":{"title":"aaa-cert-rpc_setNodeCertificate_input","type":"object","properties":{"node-alias":{"description":"","type":"string","example":"Some node-alias"},"node-cert":{"description":"","type":"string","example":"Some node-cert"}},"xml":{"name":"input","namespace":"urn:opendaylight:yang:aaa:cert:rpc"}},"aaa-cert-rpc_getNodeCertificate_input":{"title":"aaa-cert-rpc_getNodeCertificate_input","type":"object","properties":{"node-alias":{"description":"","type":"string","example":"Some node-alias"}},"xml":{"name":"input","namespace":"urn:opendaylight:yang:aaa:cert:rpc"}},"aaa-cert-rpc_getNodeCertificate_output":{"title":"aaa-cert-rpc_getNodeCertificate_output","type":"object","properties":{"node-cert":{"description":"","type":"string","example":"Some node-cert"}},"xml":{"name":"output","namespace":"urn:opendaylight:yang:aaa:cert:rpc"}},"aaa-encrypt-service-config_aaa-encrypt-service-config":{"title":"aaa-encrypt-service-config_aaa-encrypt-service-config","type":"object","properties":{"encrypt-iteration-count":{"description":"Number of iterations that will be used by the key","type":"integer","format":"int32","default":32768,"example":-2147483648},"encrypt-type":{"description":"The encryption type","type":"string","default":"AES","example":"Some encrypt-type"},"password-length":{"description":"Encryption key password length","type":"integer","format":"int32","default":12,"example":-2147483648},"cipher-transforms":{"description":"cipher transformation type ex: AES/GCM/NoPadding (128)","type":"string","default":"AES/GCM/NoPadding","example":"Some cipher-transforms"},"encrypt-key-length":{"description":"Key length","type":"integer","format":"int32","default":128,"example":-2147483648},"encrypt-key":{"description":"Encryption key","type":"string","example":"Some encrypt-key"},"encrypt-salt":{"description":"Encryption key salt","type":"string","example":"Some encrypt-salt"},"encrypt-method":{"description":"The encryption method to use","type":"string","default":"PBKDF2WithHmacSHA1","example":"Some encrypt-method"},"auth-tag-length":{"description":"Length of the authentication tag for GCM mode in bits. Supported values are 32, 64, 96, 104, 112, 120, 128","type":"integer","format":"int32","default":128,"example":-2147483648}},"xml":{"name":"aaa-encrypt-service-config","namespace":"config:aaa:authn:encrypt:service:config"}},"aaa-password-service-config_password-service-config":{"title":"aaa-password-service-config_password-service-config","type":"object","properties":{"private-salt":{"description":"The private salt for password hashing.","type":"string","example":"Some private-salt"},"iterations":{"description":"The number of times to hash.","type":"integer","format":"int32","default":20000,"example":-2147483648},"algorithm":{"description":"The algorithm utilized for aaa-password-service hashing.","type":"string","default":"SHA-512","example":"Some algorithm"}},"xml":{"name":"password-service-config","namespace":"urn:opendaylight:aaa:password:service:config"}},"arbitrator-reconcile_get-active-bundle_input":{"title":"arbitrator-reconcile_get-active-bundle_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"node-id":{"description":"Node for which the bundle active has to be fetched","type":"integer","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service"}},"arbitrator-reconcile_get-active-bundle_output":{"title":"arbitrator-reconcile_get-active-bundle_output","type":"object","properties":{"result":{"description":"The retrieved active bundle for the node","type":"integer","format":"int64","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service"}},"arbitrator-reconcile_commit-active-bundle_input":{"title":"arbitrator-reconcile_commit-active-bundle_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"node-id":{"description":"Node for which the commit bundle to be executed","type":"integer","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service"}},"arbitrator-reconcile_commit-active-bundle_output":{"title":"arbitrator-reconcile_commit-active-bundle_output","type":"object","properties":{"result":{"description":"Success/Failure of the commit bundle for the node","type":"boolean","example":true}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service"}},"bgp-peer-rpc_route-refresh-request_input":{"title":"bgp-peer-rpc_route-refresh-request_input","type":"object","properties":{"peer-ref":{"description":"","type":"string"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"}},"required":["peer-ref"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc"}},"bgp-peer-rpc_reset-session_input":{"title":"bgp-peer-rpc_reset-session_input","type":"object","properties":{"peer-ref":{"description":"","type":"string"}},"required":["peer-ref"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc"}},"bgp-peer-rpc_restart-gracefully_input":{"title":"bgp-peer-rpc_restart-gracefully_input","type":"object","properties":{"peer-ref":{"description":"","type":"string"},"selection-deferral-time":{"description":"Time to wait with route selection in seconds. Route selection is postponed until\nEnd of Rib marker is received or this timer expires.","type":"integer","format":"int64","example":0}},"required":["peer-ref","selection-deferral-time"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc"}},"bgp-rib_application-rib":{"title":"bgp-rib_application-rib","type":"object","properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables"},"description":""},"id":{"description":"","type":"string","example":"Some id"}},"xml":{"name":"application-rib","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_application-rib_tables":{"title":"bgp-rib_application-rib_tables","type":"object","properties":{"route-target-constrain-routes":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes"},"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"attributes":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_attributes"}},"xml":{"name":"tables","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_application-rib_tables_attributes":{"title":"bgp-rib_application-rib_tables_attributes","type":"object","properties":{"uptodate":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_application-rib_tables_route-target-constrain-routes":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes","type":"object","properties":{"route-target-constrain-route":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route"},"description":""}},"xml":{"name":"route-target-constrain-routes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route","type":"object","properties":{"path-id":{"description":"","type":"string","default":"0"},"origin-as":{"description":"","type":"integer","format":"int64","example":0},"route-key":{"description":"The sole function of this leaf\nto act as the key in the list.\nIts format does not form the\nAPI contract of this model.","type":"string","example":"Some route-key"},"route-target-constrain-default-route":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route"},"attributes":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes"}},"xml":{"name":"route-target-constrain-route","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes","type":"object","properties":{"bgp-prefix-sid":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid"},"origin":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin"},"aggregator":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator"},"as-path":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path"},"extended-communities":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities"},"description":""},"multi-exit-disc":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc"},"atomic-aggregate":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate"},"local-pref":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref"},"empty-next-hop":{"description":"","type":"object"},"originator-id":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id"},"aigp":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp"},"communities":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities"},"description":""},"cluster-id":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id"},"unrecognized-attributes":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes"},"description":""}},"required":["origin"],"xml":{"name":"attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin","type":"object","properties":{"value":{"description":"","type":"string","enum":["igp","egp","incomplete"],"example":"igp"}},"required":["value"],"xml":{"name":"origin","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path","type":"object","properties":{"segments":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments"},"description":""}},"xml":{"name":"as-path","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments","type":"object","properties":{"as-sequence":{"type":"array","maxItems":255,"items":{"type":"integer","format":"int64","example":0},"description":""},"as-set":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""}},"xml":{"name":"segments","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc","type":"object","properties":{"med":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"multi-exit-disc","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref","type":"object","properties":{"pref":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"local-pref","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate","type":"object","properties":{},"xml":{"name":"atomic-aggregate","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"network-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"aggregator","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"semantics":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"communities","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities","type":"object","properties":{"as-specific-extended-community":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community"},"transitive":{"description":"","type":"boolean","example":true}},"xml":{"name":"extended-communities","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community","type":"object","properties":{"global-administrator":{"description":"","type":"integer","format":"int64","example":0},"local-administrator":{"description":"","type":"string","format":"byte"}},"xml":{"name":"as-specific-extended-community","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id","type":"object","properties":{"originator":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"originator-id","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id","type":"object","properties":{"cluster":{"type":"array","items":{"type":"string","example":"","minLength":0,"maxLength":2147483647},"description":""}},"xml":{"name":"cluster-id","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp","type":"object","properties":{"aigp-tlv":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv"}},"xml":{"name":"aigp","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv","type":"object","properties":{"metric":{"description":"","type":"integer","example":0}},"xml":{"name":"aigp-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes","type":"object","properties":{"type":{"description":"","type":"integer","format":"int32","example":0},"partial":{"description":"","type":"boolean","example":true},"value":{"description":"","type":"string","format":"byte"},"transitive":{"description":"","type":"boolean","example":true}},"required":["type","partial","value","transitive"],"xml":{"name":"unrecognized-attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid","type":"object","properties":{"bgp-prefix-sid-tlvs":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs"},"description":""}},"xml":{"name":"bgp-prefix-sid","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs","type":"object","properties":{},"xml":{"name":"bgp-prefix-sid-tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route":{"title":"bgp-rib_application-rib_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route","type":"object","properties":{},"xml":{"name":"route-target-constrain-default-route","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib":{"title":"bgp-rib_bgp-rib","type":"object","properties":{},"xml":{"name":"bgp-rib","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib":{"title":"bgp-rib_bgp-rib_rib","type":"object","properties":{"peer":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer"},"description":""},"loc-rib":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib"},"id":{"description":"","type":"string","example":"Some id"}},"xml":{"name":"rib","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_peer":{"title":"bgp-rib_bgp-rib_rib_peer","type":"object","properties":{"peer-id":{"description":"","type":"string","example":"Some peer-id"},"peer-role":{"description":"","type":"string","enum":["ebgp","ibgp","rr-client","internal"],"example":"ebgp"},"supported-tables":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_supported-tables"},"description":""},"adj-rib-out":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out"},"adj-rib-in":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in"},"effective-rib-in":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in"}},"required":["peer-role"],"xml":{"name":"peer","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_peer_supported-tables":{"title":"bgp-rib_bgp-rib_rib_peer_supported-tables","type":"object","properties":{"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"send-receive":{"description":"","type":"string","enum":["receive","send","both"],"example":"receive"}},"xml":{"name":"supported-tables","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in","type":"object","description":"Routes as we have received them from the peer.","properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables"},"description":""}},"xml":{"name":"adj-rib-in","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables","type":"object","properties":{"route-target-constrain-routes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes"},"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"attributes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_attributes"}},"xml":{"name":"tables","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_attributes":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_attributes","type":"object","properties":{"uptodate":{"description":"","type":"boolean","default":false,"example":true},"llgr-stale":{"description":"Presence indicates that all routes in this table\nare to be treated as having LLGR_STALE community\nattached to them","type":"object"}},"xml":{"name":"attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes","type":"object","properties":{"route-target-constrain-route":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route"},"description":""}},"xml":{"name":"route-target-constrain-routes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route","type":"object","properties":{"path-id":{"description":"","type":"string","default":"0"},"origin-as":{"description":"","type":"integer","format":"int64","example":0},"route-key":{"description":"The sole function of this leaf\nto act as the key in the list.\nIts format does not form the\nAPI contract of this model.","type":"string","example":"Some route-key"},"route-target-constrain-default-route":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route"},"attributes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes"}},"xml":{"name":"route-target-constrain-route","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes","type":"object","properties":{"bgp-prefix-sid":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid"},"origin":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin"},"aggregator":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator"},"as-path":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path"},"extended-communities":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities"},"description":""},"multi-exit-disc":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc"},"atomic-aggregate":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate"},"local-pref":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref"},"empty-next-hop":{"description":"","type":"object"},"originator-id":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id"},"aigp":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp"},"communities":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities"},"description":""},"cluster-id":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id"},"unrecognized-attributes":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes"},"description":""}},"required":["origin"],"xml":{"name":"attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin","type":"object","properties":{"value":{"description":"","type":"string","enum":["igp","egp","incomplete"],"example":"igp"}},"required":["value"],"xml":{"name":"origin","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path","type":"object","properties":{"segments":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments"},"description":""}},"xml":{"name":"as-path","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments","type":"object","properties":{"as-sequence":{"type":"array","maxItems":255,"items":{"type":"integer","format":"int64","example":0},"description":""},"as-set":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""}},"xml":{"name":"segments","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc","type":"object","properties":{"med":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"multi-exit-disc","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref","type":"object","properties":{"pref":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"local-pref","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate","type":"object","properties":{},"xml":{"name":"atomic-aggregate","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"network-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"aggregator","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"semantics":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"communities","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities","type":"object","properties":{"as-specific-extended-community":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community"},"transitive":{"description":"","type":"boolean","example":true}},"xml":{"name":"extended-communities","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community","type":"object","properties":{"global-administrator":{"description":"","type":"integer","format":"int64","example":0},"local-administrator":{"description":"","type":"string","format":"byte"}},"xml":{"name":"as-specific-extended-community","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id","type":"object","properties":{"originator":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"originator-id","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id","type":"object","properties":{"cluster":{"type":"array","items":{"type":"string","example":"","minLength":0,"maxLength":2147483647},"description":""}},"xml":{"name":"cluster-id","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp","type":"object","properties":{"aigp-tlv":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv"}},"xml":{"name":"aigp","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv","type":"object","properties":{"metric":{"description":"","type":"integer","example":0}},"xml":{"name":"aigp-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes","type":"object","properties":{"type":{"description":"","type":"integer","format":"int32","example":0},"partial":{"description":"","type":"boolean","example":true},"value":{"description":"","type":"string","format":"byte"},"transitive":{"description":"","type":"boolean","example":true}},"required":["type","partial","value","transitive"],"xml":{"name":"unrecognized-attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid","type":"object","properties":{"bgp-prefix-sid-tlvs":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs"},"description":""}},"xml":{"name":"bgp-prefix-sid","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs","type":"object","properties":{},"xml":{"name":"bgp-prefix-sid-tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route","type":"object","properties":{},"xml":{"name":"route-target-constrain-default-route","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in","type":"object","description":"Routes as processed by inbound policy.","properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables"},"description":""}},"xml":{"name":"effective-rib-in","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables","type":"object","properties":{"route-target-constrain-routes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes"},"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"attributes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_attributes"}},"xml":{"name":"tables","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_attributes":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_attributes","type":"object","properties":{"uptodate":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes","type":"object","properties":{"route-target-constrain-route":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route"},"description":""}},"xml":{"name":"route-target-constrain-routes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route","type":"object","properties":{"path-id":{"description":"","type":"string","default":"0"},"origin-as":{"description":"","type":"integer","format":"int64","example":0},"route-key":{"description":"The sole function of this leaf\nto act as the key in the list.\nIts format does not form the\nAPI contract of this model.","type":"string","example":"Some route-key"},"route-target-constrain-default-route":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route"},"attributes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes"}},"xml":{"name":"route-target-constrain-route","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes","type":"object","properties":{"bgp-prefix-sid":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid"},"origin":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin"},"aggregator":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator"},"as-path":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path"},"extended-communities":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities"},"description":""},"multi-exit-disc":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc"},"atomic-aggregate":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate"},"local-pref":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref"},"empty-next-hop":{"description":"","type":"object"},"originator-id":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id"},"aigp":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp"},"communities":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities"},"description":""},"cluster-id":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id"},"unrecognized-attributes":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes"},"description":""}},"required":["origin"],"xml":{"name":"attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin","type":"object","properties":{"value":{"description":"","type":"string","enum":["igp","egp","incomplete"],"example":"igp"}},"required":["value"],"xml":{"name":"origin","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path","type":"object","properties":{"segments":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments"},"description":""}},"xml":{"name":"as-path","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments","type":"object","properties":{"as-sequence":{"type":"array","maxItems":255,"items":{"type":"integer","format":"int64","example":0},"description":""},"as-set":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""}},"xml":{"name":"segments","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc","type":"object","properties":{"med":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"multi-exit-disc","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref","type":"object","properties":{"pref":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"local-pref","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate","type":"object","properties":{},"xml":{"name":"atomic-aggregate","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"network-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"aggregator","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"semantics":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"communities","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities","type":"object","properties":{"as-specific-extended-community":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community"},"transitive":{"description":"","type":"boolean","example":true}},"xml":{"name":"extended-communities","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community","type":"object","properties":{"global-administrator":{"description":"","type":"integer","format":"int64","example":0},"local-administrator":{"description":"","type":"string","format":"byte"}},"xml":{"name":"as-specific-extended-community","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id","type":"object","properties":{"originator":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"originator-id","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id","type":"object","properties":{"cluster":{"type":"array","items":{"type":"string","example":"","minLength":0,"maxLength":2147483647},"description":""}},"xml":{"name":"cluster-id","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp","type":"object","properties":{"aigp-tlv":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv"}},"xml":{"name":"aigp","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv","type":"object","properties":{"metric":{"description":"","type":"integer","example":0}},"xml":{"name":"aigp-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes","type":"object","properties":{"type":{"description":"","type":"integer","format":"int32","example":0},"partial":{"description":"","type":"boolean","example":true},"value":{"description":"","type":"string","format":"byte"},"transitive":{"description":"","type":"boolean","example":true}},"required":["type","partial","value","transitive"],"xml":{"name":"unrecognized-attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid","type":"object","properties":{"bgp-prefix-sid-tlvs":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs"},"description":""}},"xml":{"name":"bgp-prefix-sid","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs","type":"object","properties":{},"xml":{"name":"bgp-prefix-sid-tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route":{"title":"bgp-rib_bgp-rib_rib_peer_effective-rib-in_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route","type":"object","properties":{},"xml":{"name":"route-target-constrain-default-route","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out","type":"object","properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables"},"description":""}},"xml":{"name":"adj-rib-out","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables","type":"object","properties":{"route-target-constrain-routes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes"},"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"attributes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_attributes"}},"xml":{"name":"tables","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_attributes":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_attributes","type":"object","properties":{"uptodate":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes","type":"object","properties":{"route-target-constrain-route":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route"},"description":""}},"xml":{"name":"route-target-constrain-routes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route","type":"object","properties":{"path-id":{"description":"","type":"string","default":"0"},"origin-as":{"description":"","type":"integer","format":"int64","example":0},"route-key":{"description":"The sole function of this leaf\nto act as the key in the list.\nIts format does not form the\nAPI contract of this model.","type":"string","example":"Some route-key"},"route-target-constrain-default-route":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route"},"attributes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes"}},"xml":{"name":"route-target-constrain-route","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes","type":"object","properties":{"bgp-prefix-sid":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid"},"origin":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin"},"aggregator":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator"},"as-path":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path"},"extended-communities":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities"},"description":""},"multi-exit-disc":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc"},"atomic-aggregate":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate"},"local-pref":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref"},"empty-next-hop":{"description":"","type":"object"},"originator-id":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id"},"aigp":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp"},"communities":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities"},"description":""},"cluster-id":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id"},"unrecognized-attributes":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes"},"description":""}},"required":["origin"],"xml":{"name":"attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin","type":"object","properties":{"value":{"description":"","type":"string","enum":["igp","egp","incomplete"],"example":"igp"}},"required":["value"],"xml":{"name":"origin","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path","type":"object","properties":{"segments":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments"},"description":""}},"xml":{"name":"as-path","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments","type":"object","properties":{"as-sequence":{"type":"array","maxItems":255,"items":{"type":"integer","format":"int64","example":0},"description":""},"as-set":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""}},"xml":{"name":"segments","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc","type":"object","properties":{"med":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"multi-exit-disc","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref","type":"object","properties":{"pref":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"local-pref","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate","type":"object","properties":{},"xml":{"name":"atomic-aggregate","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"network-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"aggregator","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"semantics":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"communities","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities","type":"object","properties":{"as-specific-extended-community":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community"},"transitive":{"description":"","type":"boolean","example":true}},"xml":{"name":"extended-communities","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community","type":"object","properties":{"global-administrator":{"description":"","type":"integer","format":"int64","example":0},"local-administrator":{"description":"","type":"string","format":"byte"}},"xml":{"name":"as-specific-extended-community","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id","type":"object","properties":{"originator":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"originator-id","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id","type":"object","properties":{"cluster":{"type":"array","items":{"type":"string","example":"","minLength":0,"maxLength":2147483647},"description":""}},"xml":{"name":"cluster-id","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp","type":"object","properties":{"aigp-tlv":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv"}},"xml":{"name":"aigp","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv","type":"object","properties":{"metric":{"description":"","type":"integer","example":0}},"xml":{"name":"aigp-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes","type":"object","properties":{"type":{"description":"","type":"integer","format":"int32","example":0},"partial":{"description":"","type":"boolean","example":true},"value":{"description":"","type":"string","format":"byte"},"transitive":{"description":"","type":"boolean","example":true}},"required":["type","partial","value","transitive"],"xml":{"name":"unrecognized-attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid","type":"object","properties":{"bgp-prefix-sid-tlvs":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs"},"description":""}},"xml":{"name":"bgp-prefix-sid","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs","type":"object","properties":{},"xml":{"name":"bgp-prefix-sid-tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route":{"title":"bgp-rib_bgp-rib_rib_peer_adj-rib-out_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route","type":"object","properties":{},"xml":{"name":"route-target-constrain-default-route","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib":{"title":"bgp-rib_bgp-rib_rib_loc-rib","type":"object","properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables"},"description":""}},"xml":{"name":"loc-rib","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_loc-rib_tables":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables","type":"object","properties":{"route-target-constrain-routes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes"},"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"attributes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_attributes"}},"xml":{"name":"tables","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_attributes":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_attributes","type":"object","properties":{"uptodate":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes","type":"object","properties":{"route-target-constrain-route":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route"},"description":""}},"xml":{"name":"route-target-constrain-routes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route","type":"object","properties":{"path-id":{"description":"","type":"string","default":"0"},"origin-as":{"description":"","type":"integer","format":"int64","example":0},"route-key":{"description":"The sole function of this leaf\nto act as the key in the list.\nIts format does not form the\nAPI contract of this model.","type":"string","example":"Some route-key"},"route-target-constrain-default-route":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route"},"attributes":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes"}},"xml":{"name":"route-target-constrain-route","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes","type":"object","properties":{"bgp-prefix-sid":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid"},"origin":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin"},"aggregator":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator"},"as-path":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path"},"extended-communities":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities"},"description":""},"multi-exit-disc":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc"},"atomic-aggregate":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate"},"local-pref":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref"},"empty-next-hop":{"description":"","type":"object"},"originator-id":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id"},"aigp":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp"},"communities":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities"},"description":""},"cluster-id":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id"},"unrecognized-attributes":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes"},"description":""}},"required":["origin"],"xml":{"name":"attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_origin","type":"object","properties":{"value":{"description":"","type":"string","enum":["igp","egp","incomplete"],"example":"igp"}},"required":["value"],"xml":{"name":"origin","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path","type":"object","properties":{"segments":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments"},"description":""}},"xml":{"name":"as-path","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_as-path_segments","type":"object","properties":{"as-sequence":{"type":"array","maxItems":255,"items":{"type":"integer","format":"int64","example":0},"description":""},"as-set":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""}},"xml":{"name":"segments","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_multi-exit-disc","type":"object","properties":{"med":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"multi-exit-disc","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_local-pref","type":"object","properties":{"pref":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"local-pref","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_atomic-aggregate","type":"object","properties":{},"xml":{"name":"atomic-aggregate","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aggregator","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"network-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"aggregator","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_communities","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"semantics":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"communities","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities","type":"object","properties":{"as-specific-extended-community":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community"},"transitive":{"description":"","type":"boolean","example":true}},"xml":{"name":"extended-communities","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_extended-communities_as-specific-extended-community","type":"object","properties":{"global-administrator":{"description":"","type":"integer","format":"int64","example":0},"local-administrator":{"description":"","type":"string","format":"byte"}},"xml":{"name":"as-specific-extended-community","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_originator-id","type":"object","properties":{"originator":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"originator-id","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_cluster-id","type":"object","properties":{"cluster":{"type":"array","items":{"type":"string","example":"","minLength":0,"maxLength":2147483647},"description":""}},"xml":{"name":"cluster-id","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp","type":"object","properties":{"aigp-tlv":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv"}},"xml":{"name":"aigp","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_aigp_aigp-tlv","type":"object","properties":{"metric":{"description":"","type":"integer","example":0}},"xml":{"name":"aigp-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_unrecognized-attributes","type":"object","properties":{"type":{"description":"","type":"integer","format":"int32","example":0},"partial":{"description":"","type":"boolean","example":true},"value":{"description":"","type":"string","format":"byte"},"transitive":{"description":"","type":"boolean","example":true}},"required":["type","partial","value","transitive"],"xml":{"name":"unrecognized-attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid","type":"object","properties":{"bgp-prefix-sid-tlvs":{"type":"array","items":{"$ref":"#/components/schemas/bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs"},"description":""}},"xml":{"name":"bgp-prefix-sid","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs","type":"object","properties":{},"xml":{"name":"bgp-prefix-sid-tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route":{"title":"bgp-rib_bgp-rib_rib_loc-rib_tables_route-target-constrain-routes_route-target-constrain-route_route-target-constrain-default-route","type":"object","properties":{},"xml":{"name":"route-target-constrain-default-route","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"bmp-monitor_bmp-monitor":{"title":"bmp-monitor_bmp-monitor","type":"object","properties":{},"xml":{"name":"bmp-monitor","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor":{"title":"bmp-monitor_bmp-monitor_monitor","type":"object","properties":{"router":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router"},"description":""},"monitor-id":{"description":"","type":"string","example":"Some monitor-id"}},"xml":{"name":"monitor","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router":{"title":"bmp-monitor_bmp-monitor_monitor_router","type":"object","properties":{"router-id":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647},"peer":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer"},"description":""},"name":{"description":"","type":"string","example":"Some name"},"description":{"description":"","type":"string","example":"Some description"},"info":{"description":"","type":"string","example":"Some info"},"status":{"description":"","type":"string","enum":["up","down"],"example":"up"}},"xml":{"name":"router","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer","type":"object","properties":{"peer-session":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session"},"peer-id":{"description":"","type":"string","example":"Some peer-id"},"as":{"description":"The Autonomous System number of the peer from which the\nencapsulated PDU was received.  If a 16 bit AS number is stored in\nthis field [RFC4893], it should be padded with zeroes in the most\nsignificant bits.","type":"integer","format":"int64","example":0},"router-distinguisher":{"description":"","type":"string","example":"Some router-distinguisher"},"address":{"description":"The remote IP address associated with the TCP\nsession over which the encapsulated PDU was received.  It is 4\nbytes long if an IPv4 address is carried in this field (with most\nsignificant bytes zero filled) and 16 bytes long if an IPv6\naddress is carried in this field.","type":"string","example":"","minLength":0,"maxLength":2147483647},"mirrors":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_mirrors"},"stats":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats"},"bgp-id":{"description":"The BGP Identifier of the peer from which the\nencapsulated PDU was received.","type":"string","example":"","minLength":0,"maxLength":2147483647},"peer-distinguisher":{"description":"This field is present to distinguish peers that\nbelong to one address domain from the other.","type":"string","example":"0:0:0","minLength":0,"maxLength":2147483647},"post-policy-rib":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib"},"type":{"description":"","type":"string","enum":["global","l3vpn","local"],"example":"global"},"pre-policy-rib":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib"}},"required":["peer-session","as","address","bgp-id","type"],"xml":{"name":"peer","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session","type":"object","properties":{"local-port":{"description":"The local port number associated with the peering TCP\nsession.","type":"integer","format":"int32","example":0},"timestamp-sec":{"description":"Timestamp with seconds precision.","type":"string","default":"0"},"timestamp-micro":{"description":"Timestamp with microseconds precision.","type":"string","default":"0"},"received-open":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open"},"remote-port":{"description":"The remote port number associated with the peering\nTCP session.","type":"integer","format":"int32","example":0},"information":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information"},"sent-open":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open"},"status":{"description":"","type":"string","enum":["up","down"],"example":"up"},"local-address":{"description":"The local IP address associated with the peering\nTCP session.","type":"string","example":"","minLength":0,"maxLength":2147483647}},"required":["local-port","received-open","remote-port","sent-open","local-address"],"xml":{"name":"peer-session","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open","type":"object","description":"The full OPEN message transmitted by the\nmonitored router to its peer.","properties":{"my-as-number":{"description":"","type":"integer","format":"int32","default":23456,"example":0},"bgp-identifier":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647},"hold-timer":{"description":"","type":"integer","format":"int32","example":0},"version":{"description":"","type":"integer","format":"int32","default":4,"example":1},"bgp-parameters":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters"},"description":""}},"required":["bgp-identifier","hold-timer"],"xml":{"name":"sent-open","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters","type":"object","properties":{"optional-capabilities":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities"},"description":""}},"xml":{"name":"bgp-parameters","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities","type":"object","properties":{"c-parameters":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters"}},"xml":{"name":"optional-capabilities","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters","type":"object","properties":{"bgp-extended-message-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_bgp-extended-message-capability"},"as4-bytes-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_as4-bytes-capability"},"graceful-restart-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability"},"multiprotocol-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_multiprotocol-capability"},"add-path-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability"},"ll-graceful-restart-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability"},"route-refresh-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_route-refresh-capability"}},"xml":{"name":"c-parameters","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_as4-bytes-capability":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_as4-bytes-capability","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"as4-bytes-capability","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_bgp-extended-message-capability":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_bgp-extended-message-capability","type":"object","properties":{},"xml":{"name":"bgp-extended-message-capability","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_multiprotocol-capability":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_multiprotocol-capability","type":"object","properties":{"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"}},"xml":{"name":"multiprotocol-capability","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability","type":"object","properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability_tables"},"description":""},"restart-flags":{"description":"","type":"string","enum":["restart-state"],"minItems":0,"default":"restart-state restart-state","uniqueItems":true},"restart-time":{"description":"","type":"string","default":"0"}},"required":["restart-flags"],"xml":{"name":"graceful-restart-capability","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability_tables":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability_tables","type":"object","properties":{"afi-flags":{"description":"","type":"string","enum":["forwarding-state"],"minItems":0,"default":"forwarding-state forwarding-state","uniqueItems":true},"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"}},"required":["afi-flags"],"xml":{"name":"tables","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability","type":"object","properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability_tables"},"description":""}},"xml":{"name":"ll-graceful-restart-capability","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability_tables":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability_tables","type":"object","properties":{"afi-flags":{"description":"","type":"string","enum":["forwarding-state"],"minItems":0,"default":"forwarding-state forwarding-state","uniqueItems":true},"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"long-lived-stale-time":{"description":"","type":"string","default":"0"}},"required":["afi-flags"],"xml":{"name":"tables","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability","type":"object","properties":{"address-families":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability_address-families"},"description":""}},"xml":{"name":"add-path-capability","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability_address-families":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability_address-families","type":"object","properties":{"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"send-receive":{"description":"","type":"string","enum":["receive","send","both"],"example":"receive"}},"xml":{"name":"address-families","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_route-refresh-capability":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_sent-open_bgp-parameters_optional-capabilities_c-parameters_route-refresh-capability","type":"object","properties":{},"xml":{"name":"route-refresh-capability","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open","type":"object","description":"The full OPEN message received by the\nmonitored router from its peer.","properties":{"my-as-number":{"description":"","type":"integer","format":"int32","default":23456,"example":0},"bgp-identifier":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647},"hold-timer":{"description":"","type":"integer","format":"int32","example":0},"version":{"description":"","type":"integer","format":"int32","default":4,"example":1},"bgp-parameters":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters"},"description":""}},"required":["bgp-identifier","hold-timer"],"xml":{"name":"received-open","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters","type":"object","properties":{"optional-capabilities":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities"},"description":""}},"xml":{"name":"bgp-parameters","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities","type":"object","properties":{"c-parameters":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters"}},"xml":{"name":"optional-capabilities","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters","type":"object","properties":{"bgp-extended-message-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_bgp-extended-message-capability"},"as4-bytes-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_as4-bytes-capability"},"graceful-restart-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability"},"multiprotocol-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_multiprotocol-capability"},"add-path-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability"},"ll-graceful-restart-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability"},"route-refresh-capability":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_route-refresh-capability"}},"xml":{"name":"c-parameters","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_as4-bytes-capability":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_as4-bytes-capability","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"as4-bytes-capability","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_bgp-extended-message-capability":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_bgp-extended-message-capability","type":"object","properties":{},"xml":{"name":"bgp-extended-message-capability","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_multiprotocol-capability":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_multiprotocol-capability","type":"object","properties":{"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"}},"xml":{"name":"multiprotocol-capability","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability","type":"object","properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability_tables"},"description":""},"restart-flags":{"description":"","type":"string","enum":["restart-state"],"minItems":0,"default":"restart-state restart-state","uniqueItems":true},"restart-time":{"description":"","type":"string","default":"0"}},"required":["restart-flags"],"xml":{"name":"graceful-restart-capability","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability_tables":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_graceful-restart-capability_tables","type":"object","properties":{"afi-flags":{"description":"","type":"string","enum":["forwarding-state"],"minItems":0,"default":"forwarding-state forwarding-state","uniqueItems":true},"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"}},"required":["afi-flags"],"xml":{"name":"tables","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability","type":"object","properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability_tables"},"description":""}},"xml":{"name":"ll-graceful-restart-capability","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability_tables":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_ll-graceful-restart-capability_tables","type":"object","properties":{"afi-flags":{"description":"","type":"string","enum":["forwarding-state"],"minItems":0,"default":"forwarding-state forwarding-state","uniqueItems":true},"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"long-lived-stale-time":{"description":"","type":"string","default":"0"}},"required":["afi-flags"],"xml":{"name":"tables","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability","type":"object","properties":{"address-families":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability_address-families"},"description":""}},"xml":{"name":"add-path-capability","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability_address-families":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_add-path-capability_address-families","type":"object","properties":{"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"send-receive":{"description":"","type":"string","enum":["receive","send","both"],"example":"receive"}},"xml":{"name":"address-families","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_route-refresh-capability":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_received-open_bgp-parameters_optional-capabilities_c-parameters_route-refresh-capability","type":"object","properties":{},"xml":{"name":"route-refresh-capability","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information","type":"object","properties":{"string-information":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information_string-information"},"description":""}},"xml":{"name":"information","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information_string-information":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information_string-information","type":"object","properties":{"string-tlv":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information_string-information_string-tlv"}},"xml":{"name":"string-information","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information_string-information_string-tlv":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_peer-session_information_string-information_string-tlv","type":"object","description":"Type = 0: String. The Information field contains a free-form\nUTF-8 string whose length is given by the Information Length\nfield. Inclusion of this TLV is optional.\nMultiple String TLVs MAY be included in the message.","properties":{"string-info":{"description":"","type":"string","example":"Some string-info"}},"xml":{"name":"string-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_stats":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_stats","type":"object","properties":{"prefixes-treated-as-withdraw":{"description":"","type":"integer","format":"int64","example":0},"timestamp-sec":{"description":"Timestamp with seconds precision.","type":"string","default":"0"},"per-afi-safi-adj-rib-in-routes":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-adj-rib-in-routes"},"per-afi-safi-loc-rib-routes":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-loc-rib-routes"},"invalidated-as-path-loop":{"description":"","type":"integer","format":"int64","example":0},"invalidated-originator-id":{"description":"","type":"integer","format":"int64","example":0},"duplicate-updates":{"description":"","type":"integer","format":"int64","example":0},"timestamp-micro":{"description":"Timestamp with microseconds precision.","type":"string","default":"0"},"updates-treated-as-withdraw":{"description":"","type":"integer","format":"int64","example":0},"invalidated-cluster-list-loop":{"description":"","type":"integer","format":"int64","example":0},"duplicate-withdraws":{"description":"","type":"integer","format":"int64","example":0},"duplicate-prefix-advertisements":{"description":"","type":"integer","format":"int64","example":0},"loc-rib-routes":{"description":"","type":"integer","example":0},"adj-ribs-in-routes":{"description":"","type":"integer","example":0},"rejected-prefixes":{"description":"","type":"integer","format":"int64","example":0},"invalidated-as-confed-loop":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"stats","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-adj-rib-in-routes":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-adj-rib-in-routes","type":"object","properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-adj-rib-in-routes_afi-safi"},"description":""}},"xml":{"name":"per-afi-safi-adj-rib-in-routes","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-adj-rib-in-routes_afi-safi":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-adj-rib-in-routes_afi-safi","type":"object","properties":{"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"count":{"description":"","type":"integer","example":0}},"xml":{"name":"afi-safi","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-loc-rib-routes":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-loc-rib-routes","type":"object","properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-loc-rib-routes_afi-safi"},"description":""}},"xml":{"name":"per-afi-safi-loc-rib-routes","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-loc-rib-routes_afi-safi":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_stats_per-afi-safi-loc-rib-routes_afi-safi","type":"object","properties":{"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"count":{"description":"","type":"integer","example":0}},"xml":{"name":"afi-safi","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib","type":"object","properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables"},"description":""}},"xml":{"name":"pre-policy-rib","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables","type":"object","properties":{"vpn-ipv4-routes":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes"},"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"attributes":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_attributes"}},"xml":{"name":"tables","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_attributes":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_attributes","type":"object","properties":{"uptodate":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes","type":"object","properties":{"vpn-route":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route"},"description":""}},"xml":{"name":"vpn-ipv4-routes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route","type":"object","properties":{"path-id":{"description":"","type":"string","default":"0"},"label-stack":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_label-stack"},"description":"The Label field carries one or more labels (that corresponds to\nthe stack of labels). Each label is encoded as 3\noctets, where the high-order 20 bits contain the label value,\nand the low order bit contains 'Bottom of Stack'."},"prefix":{"description":"","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"route-key":{"description":"The sole function of this leaf\nto act as the key in the list.\nIts format does not form the\nAPI contract of this model.","type":"string","example":"Some route-key"},"attributes":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes"},"route-distinguisher":{"description":"","type":"string","example":"0:0:0","minLength":0,"maxLength":2147483647}},"required":["route-distinguisher"],"xml":{"name":"vpn-route","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes","type":"object","properties":{"bgp-prefix-sid":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_bgp-prefix-sid"},"origin":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_origin"},"aggregator":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aggregator"},"as-path":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_as-path"},"extended-communities":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_extended-communities"},"description":""},"multi-exit-disc":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_multi-exit-disc"},"atomic-aggregate":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_atomic-aggregate"},"local-pref":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_local-pref"},"empty-next-hop":{"description":"","type":"object"},"originator-id":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_originator-id"},"aigp":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aigp"},"communities":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_communities"},"description":""},"cluster-id":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_cluster-id"},"unrecognized-attributes":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_unrecognized-attributes"},"description":""}},"required":["origin"],"xml":{"name":"attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_origin":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_origin","type":"object","properties":{"value":{"description":"","type":"string","enum":["igp","egp","incomplete"],"example":"igp"}},"required":["value"],"xml":{"name":"origin","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_as-path":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_as-path","type":"object","properties":{"segments":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_as-path_segments"},"description":""}},"xml":{"name":"as-path","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_as-path_segments":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_as-path_segments","type":"object","properties":{"as-sequence":{"type":"array","maxItems":255,"items":{"type":"integer","format":"int64","example":0},"description":""},"as-set":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""}},"xml":{"name":"segments","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_multi-exit-disc":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_multi-exit-disc","type":"object","properties":{"med":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"multi-exit-disc","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_local-pref":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_local-pref","type":"object","properties":{"pref":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"local-pref","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_atomic-aggregate":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_atomic-aggregate","type":"object","properties":{},"xml":{"name":"atomic-aggregate","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aggregator":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aggregator","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"network-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"aggregator","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_communities":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_communities","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"semantics":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"communities","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_extended-communities":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_extended-communities","type":"object","properties":{"as-specific-extended-community":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_extended-communities_as-specific-extended-community"},"transitive":{"description":"","type":"boolean","example":true}},"xml":{"name":"extended-communities","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_extended-communities_as-specific-extended-community":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_extended-communities_as-specific-extended-community","type":"object","properties":{"global-administrator":{"description":"","type":"integer","format":"int64","example":0},"local-administrator":{"description":"","type":"string","format":"byte"}},"xml":{"name":"as-specific-extended-community","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_originator-id":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_originator-id","type":"object","properties":{"originator":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"originator-id","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_cluster-id":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_cluster-id","type":"object","properties":{"cluster":{"type":"array","items":{"type":"string","example":"","minLength":0,"maxLength":2147483647},"description":""}},"xml":{"name":"cluster-id","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aigp":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aigp","type":"object","properties":{"aigp-tlv":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aigp_aigp-tlv"}},"xml":{"name":"aigp","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aigp_aigp-tlv":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aigp_aigp-tlv","type":"object","properties":{"metric":{"description":"","type":"integer","example":0}},"xml":{"name":"aigp-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_unrecognized-attributes":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_unrecognized-attributes","type":"object","properties":{"type":{"description":"","type":"integer","format":"int32","example":0},"partial":{"description":"","type":"boolean","example":true},"value":{"description":"","type":"string","format":"byte"},"transitive":{"description":"","type":"boolean","example":true}},"required":["type","partial","value","transitive"],"xml":{"name":"unrecognized-attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_bgp-prefix-sid":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_bgp-prefix-sid","type":"object","properties":{"bgp-prefix-sid-tlvs":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs"},"description":""}},"xml":{"name":"bgp-prefix-sid","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs","type":"object","properties":{},"xml":{"name":"bgp-prefix-sid-tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_label-stack":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_pre-policy-rib_tables_vpn-ipv4-routes_vpn-route_label-stack","type":"object","description":"The Label field carries one or more labels (that corresponds to\nthe stack of labels). Each label is encoded as 3\noctets, where the high-order 20 bits contain the label value,\nand the low order bit contains 'Bottom of Stack'.","properties":{"label-value":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"label-stack","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib","type":"object","properties":{"tables":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables"},"description":""}},"xml":{"name":"post-policy-rib","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables","type":"object","properties":{"vpn-ipv4-routes":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes"},"safi":{"description":"","type":"string","enum":["subsequent-address-family","flowspec-subsequent-address-family","labeled-unicast-subsequent-address-family","flowspec-l3vpn-subsequent-address-family","mcast-mpls-labeled-vpn-subsequent-address-family","linkstate-subsequent-address-family","route-target-constrain-subsequent-address-family","mpls-labeled-vpn-subsequent-address-family","evpn-subsequent-address-family","unicast-subsequent-address-family","mcast-vpn-subsequent-address-family"],"example":"subsequent-address-family"},"afi":{"description":"","type":"string","enum":["address-family","ipv4-address-family","l2vpn-address-family","linkstate-address-family","ipv6-address-family"],"example":"address-family"},"attributes":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_attributes"}},"xml":{"name":"tables","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_attributes":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_attributes","type":"object","properties":{"uptodate":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes","type":"object","properties":{"vpn-route":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route"},"description":""}},"xml":{"name":"vpn-ipv4-routes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route","type":"object","properties":{"path-id":{"description":"","type":"string","default":"0"},"label-stack":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_label-stack"},"description":"The Label field carries one or more labels (that corresponds to\nthe stack of labels). Each label is encoded as 3\noctets, where the high-order 20 bits contain the label value,\nand the low order bit contains 'Bottom of Stack'."},"prefix":{"description":"","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"route-key":{"description":"The sole function of this leaf\nto act as the key in the list.\nIts format does not form the\nAPI contract of this model.","type":"string","example":"Some route-key"},"attributes":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes"},"route-distinguisher":{"description":"","type":"string","example":"0:0:0","minLength":0,"maxLength":2147483647}},"required":["route-distinguisher"],"xml":{"name":"vpn-route","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes","type":"object","properties":{"bgp-prefix-sid":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_bgp-prefix-sid"},"origin":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_origin"},"aggregator":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aggregator"},"as-path":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_as-path"},"extended-communities":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_extended-communities"},"description":""},"multi-exit-disc":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_multi-exit-disc"},"atomic-aggregate":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_atomic-aggregate"},"local-pref":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_local-pref"},"empty-next-hop":{"description":"","type":"object"},"originator-id":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_originator-id"},"aigp":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aigp"},"communities":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_communities"},"description":""},"cluster-id":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_cluster-id"},"unrecognized-attributes":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_unrecognized-attributes"},"description":""}},"required":["origin"],"xml":{"name":"attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_origin":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_origin","type":"object","properties":{"value":{"description":"","type":"string","enum":["igp","egp","incomplete"],"example":"igp"}},"required":["value"],"xml":{"name":"origin","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_as-path":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_as-path","type":"object","properties":{"segments":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_as-path_segments"},"description":""}},"xml":{"name":"as-path","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_as-path_segments":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_as-path_segments","type":"object","properties":{"as-sequence":{"type":"array","maxItems":255,"items":{"type":"integer","format":"int64","example":0},"description":""},"as-set":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""}},"xml":{"name":"segments","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_multi-exit-disc":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_multi-exit-disc","type":"object","properties":{"med":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"multi-exit-disc","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_local-pref":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_local-pref","type":"object","properties":{"pref":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"local-pref","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_atomic-aggregate":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_atomic-aggregate","type":"object","properties":{},"xml":{"name":"atomic-aggregate","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aggregator":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aggregator","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"network-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"aggregator","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_communities":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_communities","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"semantics":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"communities","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_extended-communities":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_extended-communities","type":"object","properties":{"as-specific-extended-community":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_extended-communities_as-specific-extended-community"},"transitive":{"description":"","type":"boolean","example":true}},"xml":{"name":"extended-communities","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_extended-communities_as-specific-extended-community":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_extended-communities_as-specific-extended-community","type":"object","properties":{"global-administrator":{"description":"","type":"integer","format":"int64","example":0},"local-administrator":{"description":"","type":"string","format":"byte"}},"xml":{"name":"as-specific-extended-community","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_originator-id":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_originator-id","type":"object","properties":{"originator":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"originator-id","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_cluster-id":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_cluster-id","type":"object","properties":{"cluster":{"type":"array","items":{"type":"string","example":"","minLength":0,"maxLength":2147483647},"description":""}},"xml":{"name":"cluster-id","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aigp":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aigp","type":"object","properties":{"aigp-tlv":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aigp_aigp-tlv"}},"xml":{"name":"aigp","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aigp_aigp-tlv":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_aigp_aigp-tlv","type":"object","properties":{"metric":{"description":"","type":"integer","example":0}},"xml":{"name":"aigp-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_unrecognized-attributes":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_unrecognized-attributes","type":"object","properties":{"type":{"description":"","type":"integer","format":"int32","example":0},"partial":{"description":"","type":"boolean","example":true},"value":{"description":"","type":"string","format":"byte"},"transitive":{"description":"","type":"boolean","example":true}},"required":["type","partial","value","transitive"],"xml":{"name":"unrecognized-attributes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_bgp-prefix-sid":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_bgp-prefix-sid","type":"object","properties":{"bgp-prefix-sid-tlvs":{"type":"array","items":{"$ref":"#/components/schemas/bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs"},"description":""}},"xml":{"name":"bgp-prefix-sid","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_attributes_bgp-prefix-sid_bgp-prefix-sid-tlvs","type":"object","properties":{},"xml":{"name":"bgp-prefix-sid-tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_label-stack":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_post-policy-rib_tables_vpn-ipv4-routes_vpn-route_label-stack","type":"object","description":"The Label field carries one or more labels (that corresponds to\nthe stack of labels). Each label is encoded as 3\noctets, where the high-order 20 bits contain the label value,\nand the low order bit contains 'Bottom of Stack'.","properties":{"label-value":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"label-stack","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4"}},"bmp-monitor_bmp-monitor_monitor_router_peer_mirrors":{"title":"bmp-monitor_bmp-monitor_monitor_router_peer_mirrors","type":"object","properties":{"timestamp-sec":{"description":"Timestamp with seconds precision.","type":"string","default":"0"},"timestamp-micro":{"description":"Timestamp with microseconds precision.","type":"string","default":"0"},"information":{"description":"","type":"string","enum":["errored-pdu","message-lost"],"example":"errored-pdu"}},"xml":{"name":"mirrors","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor"}},"car_stress-test_input":{"title":"car_stress-test_input","type":"object","properties":{"rate":{"description":"The rate is a measure of the number of car-entry(s) added per second.\nThus the rate is measured in terms of transactions per second.  The\nrate is not necessary achievable;  the controller may not keep up with\nthe specified value.  In this instance, rate is considered maximum rate.","type":"integer","format":"int32","example":0},"count":{"description":"Number of cars to create. Zero implies unlimited cars; use\nstop-stress-test rpc to stop the test.","type":"string","default":"0"}},"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"}},"car_stop-stress-test_output":{"title":"car_stop-stress-test_output","type":"object","properties":{"success-count":{"description":"Total number of cars created when running stess-test rpc","type":"string","default":"0"},"failure-count":{"description":"Total number of cars failed when running stess-test rpc","type":"string","default":"0"}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"}},"car_register-ownership_input":{"title":"car_register-ownership_input","type":"object","properties":{"car-id":{"description":"","type":"string","example":"Some car-id"}},"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"}},"car_unregister-ownership_input":{"title":"car_unregister-ownership_input","type":"object","properties":{"car-id":{"description":"","type":"string","example":"Some car-id"}},"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"}},"car_cars":{"title":"car_cars","type":"object","description":"Top-level container for all car objects.","properties":{"car-entry":{"type":"array","items":{"$ref":"#/components/schemas/car_cars_car-entry"},"description":"A list of cars (as defined by the 'grouping car-entry')."}},"xml":{"name":"cars","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"}},"car_cars_car-entry":{"title":"car_cars_car-entry","type":"object","description":"A list of cars (as defined by the 'grouping car-entry').","properties":{"year":{"description":"","type":"integer","format":"int64","example":0},"model":{"description":"","type":"string","example":"Some model"},"id":{"description":"identifier of single list of entries.","type":"string","example":"Some id"},"category":{"description":"","type":"string","example":"Some category"},"manufacturer":{"description":"","type":"string","example":"Some manufacturer"}},"xml":{"name":"car-entry","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"}},"car-people_car-people":{"title":"car-people_car-people","type":"object","description":"Top-level container for all people car map","properties":{"car-person":{"type":"array","items":{"$ref":"#/components/schemas/car-people_car-people_car-person"},"description":"A mapping of cars and people."}},"xml":{"name":"car-people","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"}},"car-people_car-people_car-person":{"title":"car-people_car-people_car-person","type":"object","description":"A mapping of cars and people.","properties":{"person-id":{"description":"","type":"string","example":"Some person-id"},"car-id":{"description":"","type":"string","example":"Some car-id"}},"xml":{"name":"car-person","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"}},"car-purchase_buy-car_input":{"title":"car-purchase_buy-car_input","type":"object","properties":{"person":{"description":"A reference to a particular person.","type":"string"},"car-id":{"description":"identifier of car.","type":"string","example":"Some car-id"},"person-id":{"description":"identifier of person.","type":"string","example":"Some person-id"}},"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase"}},"cluster-admin_add-shard-replica_input":{"title":"cluster-admin_add-shard-replica_input","type":"object","properties":{"shard-name":{"description":"The name of the shard.","type":"string","example":"Some shard-name","minLength":1,"maxLength":2147483647},"data-store-type":{"description":"The type of the data store to which the shard belongs","type":"string","enum":["config","operational"],"example":"config"}},"required":["shard-name","data-store-type"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_remove-shard-replica_input":{"title":"cluster-admin_remove-shard-replica_input","type":"object","properties":{"shard-name":{"description":"The name of the shard.","type":"string","example":"Some shard-name","minLength":1,"maxLength":2147483647},"data-store-type":{"description":"The type of the data store to which the shard belongs","type":"string","enum":["config","operational"],"example":"config"},"member-name":{"description":"The cluster member from which the shard replica should be removed","type":"string","example":"Some member-name","minLength":1,"maxLength":2147483647}},"required":["shard-name","data-store-type","member-name"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_make-leader-local_input":{"title":"cluster-admin_make-leader-local_input","type":"object","properties":{"shard-name":{"description":"The name of the shard.","type":"string","example":"Some shard-name","minLength":1,"maxLength":2147483647},"data-store-type":{"description":"The type of the data store to which the shard belongs","type":"string","enum":["config","operational"],"example":"config"}},"required":["shard-name","data-store-type"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_add-replicas-for-all-shards_output":{"title":"cluster-admin_add-replicas-for-all-shards_output","type":"object","properties":{"shard-result":{"type":"array","items":{"$ref":"#/components/schemas/cluster-admin_shard-result"},"description":"The list of results, one per shard"}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_shard-result":{"title":"cluster-admin_shard-result","type":"object","description":"The list of results, one per shard","properties":{"success":{"$ref":"#/components/schemas/cluster-admin_shard-result_success"},"data-store-type":{"description":"The type of the data store to which the shard belongs","type":"string","enum":["config","operational"],"example":"config"},"shard-name":{"description":"The name of the shard.","type":"string","example":"Some shard-name","minLength":1,"maxLength":2147483647}},"required":["data-store-type","shard-name"],"xml":{"name":"shard-result","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_shard-result_success":{"title":"cluster-admin_shard-result_success","type":"object","properties":{},"xml":{"name":"success","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_remove-all-shard-replicas_input":{"title":"cluster-admin_remove-all-shard-replicas_input","type":"object","properties":{"member-name":{"description":"The cluster member from which the shard replicas should be removed","type":"string","example":"Some member-name","minLength":1,"maxLength":2147483647}},"required":["member-name"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_remove-all-shard-replicas_output":{"title":"cluster-admin_remove-all-shard-replicas_output","type":"object","properties":{"shard-result":{"type":"array","items":{"$ref":"#/components/schemas/cluster-admin_shard-result"},"description":"The list of results, one per shard"}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_change-member-voting-states-for-shard_input":{"title":"cluster-admin_change-member-voting-states-for-shard_input","type":"object","properties":{"shard-name":{"description":"The name of the shard.","type":"string","example":"Some shard-name","minLength":1,"maxLength":2147483647},"data-store-type":{"description":"The type of the data store to which the shard belongs","type":"string","enum":["config","operational"],"example":"config"},"member-voting-state":{"type":"array","items":{"$ref":"#/components/schemas/cluster-admin_member-voting-state"},"description":"The list of member voting states","example":[{"member-name":"Some member-name","voting":true}],"minItems":1}},"required":["shard-name","data-store-type","member-voting-state"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_member-voting-state":{"title":"cluster-admin_member-voting-state","type":"object","description":"The list of member voting states","properties":{"member-name":{"description":"","type":"string","example":"Some member-name","minLength":1,"maxLength":2147483647},"voting":{"description":"","type":"boolean","example":true}},"required":["voting"],"xml":{"name":"member-voting-state","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_change-member-voting-states-for-all-shards_input":{"title":"cluster-admin_change-member-voting-states-for-all-shards_input","type":"object","properties":{"member-voting-state":{"type":"array","items":{"$ref":"#/components/schemas/cluster-admin_member-voting-state"},"description":"The list of member voting states","example":[{"member-name":"Some member-name","voting":true}],"minItems":1}},"required":["member-voting-state"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_change-member-voting-states-for-all-shards_output":{"title":"cluster-admin_change-member-voting-states-for-all-shards_output","type":"object","properties":{"shard-result":{"type":"array","items":{"$ref":"#/components/schemas/cluster-admin_shard-result"},"description":"The list of results, one per shard"}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_flip-member-voting-states-for-all-shards_output":{"title":"cluster-admin_flip-member-voting-states-for-all-shards_output","type":"object","properties":{"shard-result":{"type":"array","items":{"$ref":"#/components/schemas/cluster-admin_shard-result"},"description":"The list of results, one per shard"}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_backup-datastore_input":{"title":"cluster-admin_backup-datastore_input","type":"object","properties":{"file-path":{"description":"The path and name of the file in which to store the backup.","type":"string","example":"Some file-path"},"timeout":{"description":"Optional timeout in seconds for the backup operation which will override all the different\ntimeouts that are being hit on the backend.","type":"integer","format":"int64","default":60,"example":1}},"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_get-shard-role_input":{"title":"cluster-admin_get-shard-role_input","type":"object","properties":{"shard-name":{"description":"The name of the shard.","type":"string","example":"Some shard-name","minLength":1,"maxLength":2147483647},"data-store-type":{"description":"The type of the data store to which the shard belongs","type":"string","enum":["config","operational"],"example":"config"}},"required":["shard-name","data-store-type"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_get-shard-role_output":{"title":"cluster-admin_get-shard-role_output","type":"object","properties":{"role":{"description":"Current role for the given shard, if not present the shard currently does not have a role","type":"string","example":"Some role"}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_locate-shard_input":{"title":"cluster-admin_locate-shard_input","type":"object","properties":{"shard-name":{"description":"The name of the shard.","type":"string","example":"Some shard-name","minLength":1,"maxLength":2147483647},"data-store-type":{"description":"The type of the data store to which the shard belongs","type":"string","enum":["config","operational"],"example":"config"}},"required":["shard-name","data-store-type"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_locate-shard_output":{"title":"cluster-admin_locate-shard_output","type":"object","properties":{"local":{"$ref":"#/components/schemas/cluster-admin_local"}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_local":{"title":"cluster-admin_local","type":"object","properties":{},"xml":{"name":"local","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_get-known-clients-for-all-shards_output":{"title":"cluster-admin_get-known-clients-for-all-shards_output","type":"object","properties":{"shard-result":{"type":"array","items":{"$ref":"#/components/schemas/cluster-admin_shard-result1"},"description":"The list of results, one per shard"}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_shard-result1":{"title":"cluster-admin_shard-result","type":"object","description":"The list of results, one per shard","properties":{"success":{"$ref":"#/components/schemas/cluster-admin_shard-result_success1"},"data-store-type":{"description":"The type of the data store to which the shard belongs","type":"string","enum":["config","operational"],"example":"config"},"shard-name":{"description":"The name of the shard.","type":"string","example":"Some shard-name","minLength":1,"maxLength":2147483647}},"required":["data-store-type","shard-name"],"xml":{"name":"shard-result","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_shard-result_success1":{"title":"cluster-admin_shard-result_success","type":"object","properties":{"known-clients":{"type":"array","items":{"$ref":"#/components/schemas/cluster-admin_shard-result_success_known-clients"},"description":""}},"xml":{"name":"success","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"cluster-admin_shard-result_success_known-clients":{"title":"cluster-admin_shard-result_success_known-clients","type":"object","properties":{"generation":{"description":"","type":"integer","example":0},"member":{"description":"","type":"string","example":"Some member","minLength":1,"maxLength":2147483647},"type":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"required":["generation","member","type"],"xml":{"name":"known-clients","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin"}},"data-export-import_schedule-export_input":{"title":"data-export-import_schedule-export_input","type":"object","properties":{"run-at":{"description":"The time, as either an absolute UTC time or a relative\noffset from the server clock, at which to run the export.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"local-node-only":{"description":"Indicates if export should be performed only on\nthe node receiving this request.","type":"boolean","example":true},"strict-data-consistency":{"description":"Indicates if strict data consistency needs to be\nmaintained while exporting data. This value determines\nhow data is read from the datastore during export -\nin one shot (true) or in smaller batches (false).","type":"boolean","default":true,"example":true},"split-by-module":{"description":"In context of data export, this flag indicate if exported data\nshould be split by module into separate files.","type":"boolean","default":false,"example":true},"included-modules":{"type":"array","items":{"$ref":"#/components/schemas/data-export-import_included-modules"},"description":"A list of module name, data store pairs to be included in an\nexport."},"excluded-modules":{"type":"array","items":{"$ref":"#/components/schemas/data-export-import_excluded-modules"},"description":"A list of module name, data store pairs to be excluded from an\nexport.\n\nIf any module name is specified using the wildcard string value,\nthen all modules are excluded for that data store.\n\nTo exclude all data stores for a specific module, specify a\nseparate list item for each data store, with each item using the\nsame module name."}},"required":["run-at"],"xml":{"name":"input","namespace":"urn:opendaylight:daexim"}},"data-export-import_included-modules":{"title":"data-export-import_included-modules","type":"object","description":"A list of module name, data store pairs to be included in an\nexport.","properties":{"data-store":{"description":"The data store to include for the corresponding module name.","type":"string","enum":["config","operational"],"example":"config"},"module-name":{"description":"The name of the module to be included.","type":"string","example":"A","minLength":1,"maxLength":2147483647}},"required":["data-store","module-name"],"xml":{"name":"included-modules","namespace":"urn:opendaylight:daexim"}},"data-export-import_excluded-modules":{"title":"data-export-import_excluded-modules","type":"object","description":"A list of module name, data store pairs to be excluded from an\nexport.\n\nIf any module name is specified using the wildcard string value,\nthen all modules are excluded for that data store.\n\nTo exclude all data stores for a specific module, specify a\nseparate list item for each data store, with each item using the\nsame module name.","properties":{"data-store":{"description":"The data store to exclude for the corresponding module name.","type":"string","enum":["config","operational"],"example":"config"},"module-name":{"description":"The name of the module to exclude, or the wildcard string\nvalue when excluding all modules.","type":"string","example":"A","minLength":1,"maxLength":2147483647}},"required":["data-store","module-name"],"xml":{"name":"excluded-modules","namespace":"urn:opendaylight:daexim"}},"data-export-import_schedule-export_output":{"title":"data-export-import_schedule-export_output","type":"object","properties":{"result":{"description":"A return value of true indicates that the request completed or\nwas actioned successfully: otherwise, the request failed.","type":"boolean","example":true},"reason":{"description":"A human-readable string indicating why a request could not be\ncompleted or actioned successfully.","type":"string","example":"Some reason"}},"required":["result"],"xml":{"name":"output","namespace":"urn:opendaylight:daexim"}},"data-export-import_status-export_output":{"title":"data-export-import_status-export_output","type":"object","properties":{"status":{"description":"A human-readable string describing the cause, if this\ntask failed.","type":"string","enum":["initial","scheduled","in-progress","complete","boot-import-scheduled","boot-import-in-progress","skipped","inconsistent","failed","boot-import-failed"],"example":"initial"},"reason":{"description":"A human-readable string indicating why a request could not be\ncompleted or actioned successfully.","type":"string","example":"Some reason"},"run-at":{"description":"The export time in absolute UTC time.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/data-export-import_nodes"},"description":"A list of nodes and their status."}},"xml":{"name":"output","namespace":"urn:opendaylight:daexim"}},"data-export-import_nodes":{"title":"data-export-import_nodes","type":"object","description":"A list of nodes and their status.","properties":{"reason":{"description":"A human-readable string indicating why a request could not be\ncompleted or actioned successfully.","type":"string","example":"Some reason"},"model-file":{"description":"The filename of the models declaration file.","type":"string","example":"Some model-file"},"last-change":{"description":"Timestamp in absolute UTC time when export status was last changed.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"node-name":{"description":"The name of the node.","type":"string","example":"Some node-name"},"status":{"description":"A human-readable string describing the cause, if this\ntask failed.","type":"string","enum":["initial","scheduled","in-progress","complete","boot-import-scheduled","boot-import-in-progress","skipped","inconsistent","failed","boot-import-failed"],"example":"initial"},"data-files":{"type":"array","items":{"type":"string","example":"Some data-files"},"description":"The filenames of the output data files."}},"required":["node-name"],"xml":{"name":"nodes","namespace":"urn:opendaylight:daexim"}},"data-export-import_cancel-export_output":{"title":"data-export-import_cancel-export_output","type":"object","properties":{"result":{"description":"A return value of true indicates that the request completed or\nwas actioned successfully: otherwise, the request failed.","type":"boolean","example":true},"reason":{"description":"A human-readable string indicating why a request could not be\ncompleted or actioned successfully.","type":"string","example":"Some reason"}},"required":["result"],"xml":{"name":"output","namespace":"urn:opendaylight:daexim"}},"data-export-import_immediate-import_input":{"title":"data-export-import_immediate-import_input","type":"object","properties":{"check-models":{"description":"If this flag is true then the server must read the models\ndeclaration file and check that all declared models are\nloaded before performing any data modifications. If the\napplication cannot read the models declaration file, the\nfile has bad content, or any declared model is not loaded,\nthen no data modifications are performed and a result of\nfalse is returned.\n\nIf this flag is false then this check is skipped. (If a\nmodels declaration file is present it is ignored.)","type":"boolean","default":true,"example":true},"clear-stores":{"description":"This flag allows for the existing data in data stores to be\ndeleted before restoring data from data files. When this\nflag's value is 'all', all data in all stores is deleted.\nWhen this flag's value is 'data', all data in the stores\nfor which data files are supplied is deleted. When this\nflag's value is 'none', then no data is deleted.","type":"string","enum":["none","all","data"],"default":"all","example":"none"},"strict-data-consistency":{"description":"Indicates if strict data consistency needs to be\nmaintained while importing data. This value determines\nhow data is written to the datastore during import -\nin one shot (true) or in smaller batches (false).","type":"boolean","default":true,"example":true},"file-name-filter":{"description":"This pattern can be used to filter import data files.\nValue must be valid regular expression.\nWhen this pattern is not specified or it is empty string\nthen all files matching daexim naming format are accepted\nfor import. Otherwise files are accepted for import only\nif they match this regular expression (path is not taken\ninto account, only file name).","type":"string","example":"Some file-name-filter"},"import-batching":{"$ref":"#/components/schemas/data-export-import_import-batching"}},"xml":{"name":"input","namespace":"urn:opendaylight:daexim"}},"data-export-import_import-batching":{"title":"data-export-import_import-batching","type":"object","description":"Parameters used for batching of imported data. They are\nused only when value of `strict-data-consistency` is false.\nBatching is performed by traversing the data tree till depth\nof `max-traversal-depth` is reached or list of size greater\nthan `list-batch-size` is found, whichever is earlier. If\nlist of size greater than `list-batch-size` is found, it is\nimported by breaking it down into batches not exceeding size\n`list-batch-size`. Further traversal of the subtree for\nthat list is not performed.","properties":{"max-traversal-depth":{"description":"Maximum depth to traverse in the data tree for batching.","type":"integer","format":"int32","default":2,"example":0},"list-batch-size":{"description":"Maximum number of list entries that can be written in one go.","type":"integer","format":"int64","default":2000,"example":0}},"xml":{"name":"import-batching","namespace":"urn:opendaylight:daexim"}},"data-export-import_immediate-import_output":{"title":"data-export-import_immediate-import_output","type":"object","properties":{"result":{"description":"A return value of true indicates that the request completed or\nwas actioned successfully: otherwise, the request failed.","type":"boolean","example":true},"reason":{"description":"A human-readable string indicating why a request could not be\ncompleted or actioned successfully.","type":"string","example":"Some reason"}},"required":["result"],"xml":{"name":"output","namespace":"urn:opendaylight:daexim"}},"data-export-import_status-import_output":{"title":"data-export-import_status-import_output","type":"object","properties":{"status":{"description":"A human-readable string describing the cause, if this\ntask failed.","type":"string","enum":["initial","scheduled","in-progress","complete","boot-import-scheduled","boot-import-in-progress","skipped","inconsistent","failed","boot-import-failed"],"example":"initial"},"reason":{"description":"A human-readable string indicating why a request could not be\ncompleted or actioned successfully.","type":"string","example":"Some reason"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/data-export-import_nodes1"},"description":"A list of nodes and their status."}},"xml":{"name":"output","namespace":"urn:opendaylight:daexim"}},"data-export-import_nodes1":{"title":"data-export-import_nodes","type":"object","description":"A list of nodes and their status.","properties":{"reason":{"description":"A human-readable string indicating why a request could not be\ncompleted or actioned successfully.","type":"string","example":"Some reason"},"model-file":{"description":"The filename of the models declaration file.","type":"string","example":"Some model-file"},"last-change":{"description":"Timestamp in absolute UTC time when import status was last changed.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"node-name":{"description":"The name of the node.","type":"string","example":"Some node-name"},"imported-at":{"description":"The restore time in absolute UTC time.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"status":{"description":"A human-readable string describing the cause, if this\ntask failed.","type":"string","enum":["initial","scheduled","in-progress","complete","boot-import-scheduled","boot-import-in-progress","skipped","inconsistent","failed","boot-import-failed"],"example":"initial"},"data-files":{"type":"array","items":{"type":"string","example":"Some data-files"},"description":"The filenames of the output data files."}},"required":["node-name"],"xml":{"name":"nodes","namespace":"urn:opendaylight:daexim"}},"data-export-import-internal_import-operation-result":{"title":"data-export-import-internal_import-operation-result","type":"object","description":"The result of the last attempted import operation, with associated\nfailure reason.","properties":{"result":{"description":"A return value of true indicates that the request completed or\nwas actioned successfully: otherwise, the request failed.","type":"boolean","example":true},"reason":{"description":"A human-readable string indicating why a request could not be\ncompleted or actioned successfully.","type":"string","example":"Some reason"}},"required":["result"],"xml":{"name":"import-operation-result","namespace":"urn:opendaylight:daexim-internal"}},"data-export-import-internal_daexim":{"title":"data-export-import-internal_daexim","type":"object","properties":{"daexim-control":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-control"},"daexim-status":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-status"}},"xml":{"name":"daexim","namespace":"urn:opendaylight:daexim-internal"}},"data-export-import-internal_daexim_daexim-control":{"title":"data-export-import-internal_daexim_daexim-control","type":"object","description":"Export control, used to dispatch IPC to all node instances.\n\nWhen `task-type` is `schedule` then `run-at` must be specified\nand `inclusions` and/or `exclusions` may be specified.  If\nboth `inclusions` and `exclusions` are specified, then a module\nis only exported if it is included and not also excluded.\n\nWhen `task-type` is `cancel` then `run-at`, `inclusions` and `exclusions`\nare ignored. If there is an export running or scheduled then\n`cancel` cancels it and resets status to its initial state.","properties":{"strict-data-consistency":{"description":"Indicates if strict data consistency needs to be\nmaintained while exporting data. This value determines\nhow data is read from the datastore during export -\nin one shot (true) or in smaller batches (false).","type":"boolean","default":true,"example":true},"split-by-module":{"description":"In context of data export, this flag indicate if exported data\nshould be split by module into separate files.","type":"boolean","default":false,"example":true},"run-on-node":{"description":"Name of node where the export should be executed.","type":"string","example":"Some run-on-node"},"included-modules":{"type":"array","items":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-control_included-modules"},"description":"A list of module name, data store pairs to be included in an\nexport."},"task-type":{"description":"","type":"string","enum":["schedule","cancel"],"example":"schedule"},"run-at":{"description":"The time, in absolute UTC time, at which to run the export,\nas determined by the node handling the `schedule-export`\nrequest.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"excluded-modules":{"type":"array","items":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-control_excluded-modules"},"description":"A list of module name, data store pairs to be excluded from an\nexport.\n\nIf any module name is specified using the wildcard string value,\nthen all modules are excluded for that data store.\n\nTo exclude all data stores for a specific module, specify a\nseparate list item for each data store, with each item using the\nsame module name."}},"xml":{"name":"daexim-control","namespace":"urn:opendaylight:daexim-internal"}},"data-export-import-internal_daexim_daexim-control_included-modules":{"title":"data-export-import-internal_daexim_daexim-control_included-modules","type":"object","description":"A list of module name, data store pairs to be included in an\nexport.","properties":{"data-store":{"description":"The data store to include for the corresponding module name.","type":"string","enum":["config","operational"],"example":"config"},"module-name":{"description":"The name of the module to be included.","type":"string","example":"A","minLength":1,"maxLength":2147483647}},"required":["data-store","module-name"],"xml":{"name":"included-modules","namespace":"urn:opendaylight:daexim-internal"}},"data-export-import-internal_daexim_daexim-control_excluded-modules":{"title":"data-export-import-internal_daexim_daexim-control_excluded-modules","type":"object","description":"A list of module name, data store pairs to be excluded from an\nexport.\n\nIf any module name is specified using the wildcard string value,\nthen all modules are excluded for that data store.\n\nTo exclude all data stores for a specific module, specify a\nseparate list item for each data store, with each item using the\nsame module name.","properties":{"data-store":{"description":"The data store to exclude for the corresponding module name.","type":"string","enum":["config","operational"],"example":"config"},"module-name":{"description":"The name of the module to exclude, or the wildcard string\nvalue when excluding all modules.","type":"string","example":"A","minLength":1,"maxLength":2147483647}},"required":["data-store","module-name"],"xml":{"name":"excluded-modules","namespace":"urn:opendaylight:daexim-internal"}},"data-export-import-internal_daexim_daexim-status":{"title":"data-export-import-internal_daexim_daexim-status","type":"object","description":"Data export/import, used to communicate task status.","properties":{"node-status":{"type":"array","items":{"$ref":"#/components/schemas/data-export-import-internal_daexim_daexim-status_node-status"},"description":"The nodes where the export is to be executed."}},"xml":{"name":"daexim-status","namespace":"urn:opendaylight:daexim-internal"}},"data-export-import-internal_daexim_daexim-status_node-status":{"title":"data-export-import-internal_daexim_daexim-status_node-status","type":"object","description":"The nodes where the export is to be executed.","properties":{"last-import-change":{"description":"Timestamp in absolute UTC time when import status was last changed.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"model-file":{"description":"The filename of the models declaration file.","type":"string","example":"Some model-file"},"export-result":{"description":"A human-readable string describing the cause, if this\nexport task failed.","type":"string","example":"Some export-result"},"last-export-change":{"description":"Timestamp in absolute UTC time when export status was last changed.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"import-status":{"description":"The import task status of the corresponding node.","type":"string","enum":["initial","scheduled","in-progress","complete","boot-import-scheduled","boot-import-in-progress","skipped","inconsistent","failed","boot-import-failed"],"example":"initial"},"node-name":{"description":"Node name as used in cluster configuration","type":"string","example":"Some node-name"},"imported-at":{"description":"The restore time in absolute UTC time.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"import-result":{"description":"A human-readable string describing the cause, if this\nimport task failed.","type":"string","example":"Some import-result"},"export-status":{"description":"The export task status of the corresponding node.","type":"string","enum":["initial","scheduled","in-progress","complete","boot-import-scheduled","boot-import-in-progress","skipped","inconsistent","failed","boot-import-failed"],"example":"initial"},"data-files":{"type":"array","items":{"type":"string","example":"Some data-files"},"description":"The filenames of the output data files."}},"required":["import-status","node-name","export-status"],"xml":{"name":"node-status","namespace":"urn:opendaylight:daexim-internal"}},"distributed-datastore-provider_data-store-properties-container":{"title":"distributed-datastore-provider_data-store-properties-container","type":"object","properties":{"maximum-message-slice-size":{"description":"When fragmenting messages thru the akka remoting framework, this is the\nmaximum size in bytes for a message slice.","type":"integer","format":"int64","default":491520,"example":1},"shard-snapshot-data-threshold":{"description":"The threshold of in-memory journal size before a snapshot is to be taken. If set to 0, direct threshold\nis disabled and percentage is used instead.","type":"string","default":"0"},"shard-leader-election-timeout-in-seconds":{"description":"The maximum amount of time to wait for a shard to elect a leader before failing\n an operation (eg transaction create).","type":"integer","format":"int64","default":30,"example":1},"shard-heartbeat-interval-in-millis":{"description":"The interval at which a shard will send a heart beat message to its remote shard.","type":"integer","format":"int32","default":500,"example":100},"shard-batched-modification-count":{"description":"The number of transaction modification operations (put, merge, delete) to\nbatch before sending to the shard transaction actor. Batching improves\nperformance as less modifications messages are sent to the actor and thus\nlessens the chance that the transaction actor's mailbox queue could get full.","type":"integer","format":"int64","default":1000,"example":1},"transaction-debug-context-enabled":{"description":"Enable or disable transaction context debug. This will log the call site trace for\ntransactions that fail","type":"boolean","default":false,"example":true},"custom-raft-policy-implementation":{"description":"A fully qualified java class name. The class should implement\norg.opendaylight.controller.cluster.raft.policy.RaftPolicy. This java class should be\naccessible to the distributed data store OSGi module so that it can be dynamically loaded via\nreflection. For now let's assume that these classes to customize raft behaviors should be\npresent in the distributed data store module itself. If this property is set to a class which\ncannot be found then the default raft behavior will be applied","type":"string","default":"","example":"Some custom-raft-policy-implementation"},"shard-transaction-idle-timeout-in-minutes":{"description":"The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.","type":"integer","format":"int64","default":10,"example":1},"shard-transaction-commit-timeout-in-seconds":{"description":"The maximum amount of time a shard transaction three-phase commit can be idle without receiving the next messages before it aborts the transaction","type":"integer","format":"int64","default":30,"example":1},"recovery-export-base-dir":{"description":"Directory name for snapshot and journal dumps.","type":"string","default":"persistence-export","example":"Some recovery-export-base-dir"},"snapshotOnRootOverwrite":{"description":"Enable or disable capturing snapshots on DataTree root overwrites","type":"boolean","default":false,"example":true},"shard-commit-queue-expiry-timeout-in-seconds":{"description":"The maximum amount of time a transaction can remain in a shard's commit queue waiting\nto begin the CanCommit phase as coordinated by the broker front-end. Normally this should be\nquick but latencies can occur in between transaction ready and CanCommit or a remote broker\ncould lose connection and CanCommit might never occur. Expiring transactions from the queue\nallows subsequent pending transaction to be processed.","type":"integer","format":"int64","default":120,"example":1},"frontend-no-progress-timeout-in-seconds":{"description":"The timeout interval whereby the client front-end hasn't made progress with the\nback-end on any request and terminates.","type":"integer","format":"int64","default":900,"example":1},"shard-journal-recovery-log-batch-size":{"description":"The maximum number of journal log entries to batch on recovery for a shard before committing to the data store.","type":"integer","format":"int64","default":1,"example":1},"shard-initialization-timeout-in-seconds":{"description":"The maximum amount of time to wait for a shard to initialize from persistence\non startup before failing an operation (eg transaction create and change\nlistener registration).","type":"integer","format":"int64","default":300,"example":1},"frontend-request-timeout-in-seconds":{"description":"The timeout interval whereby client frontend transaction requests are failed.","type":"integer","format":"int64","default":120,"example":1},"enable-metric-capture":{"description":"Enable or disable metric capture.","type":"boolean","default":false,"example":true},"shard-election-timeout-factor":{"description":"The multiplication factor to be used to determine shard election timeout. The shard election timeout\nis determined by multiplying shard-heartbeat-interval-in-millis with the shard-election-timeout-factor","type":"integer","format":"int64","default":20,"example":1},"persistent":{"description":"Enable or disable data persistence","type":"boolean","default":true,"example":true},"recovery-snapshot-interval-seconds":{"description":"Interval after which a snapshot should be taken during the recovery process.","type":"string","default":"0"},"shard-snapshot-data-threshold-percentage":{"description":"The percentage of Runtime.maxMemory() used by the in-memory journal log before a snapshot is to be taken.\nDisabled, if direct threshold is enabled.","type":"integer","format":"int32","default":12,"example":0},"operation-timeout-in-seconds":{"description":"The maximum amount of time for akka operations (remote or local) to complete before failing.","type":"integer","format":"int32","default":5,"example":5},"shard-snapshot-batch-count":{"description":"The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.","type":"integer","format":"int64","default":20000,"example":1},"shard-transaction-commit-queue-capacity":{"description":"The maximum allowed capacity for each shard's transaction commit queue.","type":"integer","format":"int64","default":50000,"example":1},"initial-payload-serialized-buffer-capacity":{"description":"The initial buffer capacity, in bytes, to use when serializing message payloads.","type":"integer","format":"int64","default":512,"example":1},"bounded-mailbox-capacity":{"description":"Max queue size that an actor's mailbox can reach","type":"integer","format":"int64","default":1000,"example":1},"sync-index-threshold":{"description":"Permitted synchronization lag, expressed in terms of RAFT entry count. It a follower's\ncommitIndex trails the leader's journal by more than this amount of entries the follower\nis considered to be out-of-sync.","type":"integer","format":"int64","default":10,"example":1},"transaction-creation-initial-rate-limit":{"description":"The initial number of transactions per second that are allowed before the data store\nshould begin applying back pressure. This number is only used as an initial guidance,\nsubsequently the datastore measures the latency for a commit and auto-adjusts the rate limit","type":"integer","format":"int64","default":100,"example":1},"file-backed-streaming-threshold-in-megabytes":{"description":"When streaming large amounts of data, eg when sending a snapshot to a follower, this\nis the threshold in terms of number of megabytes before it should switch from storing in memory to\nbuffering to a file.","type":"integer","format":"int64","default":128,"example":1},"export-on-recovery":{"description":"Export snapshot and journal during recovery. Possible modes: off(default),\njson(export to json files). Note that in case of large snapshot,\nexport will take a lot of time.","type":"string","enum":["off","json"],"default":"off","example":"off"},"initial-settle-timeout-multiplier":{"description":"Multiplier for the maximum amount of time to wait for a shard to elect a leader.\nZero value means wait indefinitely (as long as it takes).","type":"integer","format":"int64","default":3,"example":0},"shard-isolated-leader-check-interval-in-millis":{"description":"The interval at which the leader of the shard will check if its majority\nfollowers are active and term itself as isolated","type":"integer","format":"int32","default":5000,"example":100},"use-lz4-compression":{"description":"Use lz4 compression for snapshots, sent from leader to follower, for snapshots stored\nby LocalSnapshotStore, use pekko.conf configuration.","type":"boolean","default":false,"example":true},"backend-aliveness-timer-interval-in-seconds":{"description":"The timer interval whereby, on expiration after response inactivity from the back-end,\nthe connection to the back-end is torn down and reconnection is attempted.","type":"integer","format":"int64","default":30,"example":1}},"xml":{"name":"data-store-properties-container","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"}},"flow-capable-transaction_send-barrier_input":{"title":"flow-capable-transaction_send-barrier_input","type":"object","properties":{"node":{"description":"","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:flow:transaction"}},"forwarding-rules-manager-config_forwarding-rules-manager-config":{"title":"forwarding-rules-manager-config_forwarding-rules-manager-config","type":"object","properties":{"disable-reconciliation":{"description":"","type":"boolean","default":false,"example":true},"stale-marking-enabled":{"description":"","type":"boolean","default":false,"example":true},"reconciliation-retry-count":{"description":"","type":"integer","format":"int32","default":5,"example":0},"bundle-based-reconciliation-enabled":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"forwarding-rules-manager-config","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config"}},"frm-reconciliation_reconcile-node_input":{"title":"frm-reconciliation_reconcile-node_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"nodeId":{"description":"","type":"integer","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service"}},"frm-reconciliation_reconcile-node_output":{"title":"frm-reconciliation_reconcile-node_output","type":"object","properties":{"result":{"description":"The result of reconciliation, for follow-up","type":"boolean","example":true}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service"}},"graph_graph-topology":{"title":"graph_graph-topology","type":"object","properties":{"graph":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph"},"description":"Graph representation of the Network Topology"}},"xml":{"name":"graph-topology","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph":{"title":"graph_graph-topology_graph","type":"object","description":"Graph representation of the Network Topology","properties":{"edge":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge"},"description":"The list of Edges defined for the Graph."},"vertex":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex"},"description":"The list of Vertices defined for the Graph."},"prefix":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix"},"description":"The list of prefixes for the Graph."},"name":{"description":"","type":"string","example":"Some name"},"domain-scope":{"description":"Network domain scope: intra or inter domain","type":"string","enum":["intra-domain","inter-domain"],"default":"intra-domain","example":"intra-domain"},"asn":{"description":"AS Number","type":"integer","format":"int64","example":0}},"xml":{"name":"graph","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_vertex":{"title":"graph_graph-topology_graph_vertex","type":"object","description":"The list of Vertices defined for the Graph.","properties":{"vertex-id":{"description":"Identifier of the Vertex","type":"integer","example":0},"router-id":{"description":"Global unique IPv4 Trafic Engineering Router ID","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"router-id6":{"description":"Global unique IPv6 Trafic Engineering Router ID","type":"string","example":":","minLength":0,"maxLength":2147483647},"name":{"description":"Name of the Vertex when known","type":"string","example":"Some name"},"type":{"description":"","type":"string","enum":["standard","abr","asbr-in","asbr-out","pseudo"],"default":"standard","example":"standard"},"asn":{"description":"AS Number","type":"integer","format":"int64","example":0},"sr-node-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes"}},"required":["vertex-id"],"xml":{"name":"vertex","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_vertex_sr-node-attributes":{"title":"graph_graph-topology_graph_vertex_sr-node-attributes","type":"object","description":"Vertex Segment Routing information","properties":{"algorithms":{"type":"array","items":{"type":"string","enum":["spf","strict-spf"],"example":"spf"},"description":"Supported SR Algorithm"},"flex-algo":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_flex-algo"},"description":"Supported Flex Algorithms"},"srlb":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srlb"},"description":"List of Segment Routing Local Block: lower-bound + range-size"},"mpls-ipv4":{"description":"","type":"boolean","example":true},"mpls-ipv6":{"description":"","type":"boolean","example":true},"node-msd":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_node-msd"},"description":""},"srgb":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_vertex_sr-node-attributes_srgb"},"description":"List of Segment Routing Global Block: lower-bound + range-size"}},"xml":{"name":"sr-node-attributes","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_vertex_sr-node-attributes_srgb":{"title":"graph_graph-topology_graph_vertex_sr-node-attributes_srgb","type":"object","description":"List of Segment Routing Global Block: lower-bound + range-size","properties":{"lower-bound":{"description":"","type":"integer","format":"int64","example":0},"range-size":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"srgb","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_vertex_sr-node-attributes_srlb":{"title":"graph_graph-topology_graph_vertex_sr-node-attributes_srlb","type":"object","description":"List of Segment Routing Local Block: lower-bound + range-size","properties":{"lower-bound":{"description":"","type":"integer","format":"int64","example":0},"range-size":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"srlb","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_vertex_sr-node-attributes_node-msd":{"title":"graph_graph-topology_graph_vertex_sr-node-attributes_node-msd","type":"object","properties":{"msd-type":{"description":"","type":"integer","format":"int32","example":0},"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"node-msd","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_vertex_sr-node-attributes_flex-algo":{"title":"graph_graph-topology_graph_vertex_sr-node-attributes_flex-algo","type":"object","description":"Supported Flex Algorithms","properties":{"flex-algo":{"description":"","type":"integer","format":"int32","example":128},"include-any":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""},"metric-type":{"description":"","type":"string","enum":["igp","delay","te"],"example":"igp"},"calc-type":{"description":"","type":"integer","format":"int32","example":0},"include-all":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""},"exclude-any":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""},"priority":{"description":"","type":"integer","format":"int32","example":0},"exclude-srlg":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""}},"xml":{"name":"flex-algo","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_edge":{"title":"graph_graph-topology_graph_edge","type":"object","description":"The list of Edges defined for the Graph.","properties":{"edge-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes"},"name":{"description":"Edge name","type":"string","example":"Some name"},"local-vertex-id":{"description":"Vertex identifier where the Edge is attached","type":"integer","example":0},"remote-vertex-id":{"description":"Vertex identifier where the Edge is going to","type":"integer","example":0},"edge-id":{"description":"","type":"integer","example":0}},"required":["edge-id"],"xml":{"name":"edge","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_edge_edge-attributes":{"title":"graph_graph-topology_graph_edge_edge-attributes","type":"object","description":"All attributes associated to the Edge","properties":{"extended-metric":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric"},"asla-metric":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric"},"remote-identifier":{"description":"","type":"integer","format":"int64","example":0},"remote-address6":{"description":"","type":"string","example":":","minLength":0,"maxLength":2147483647},"local-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"local-identifier":{"description":"","type":"integer","format":"int64","example":0},"srlgs":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":"List of Shared Risk Link Group Attributes"},"egress-peer-engineering":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_egress-peer-engineering"},"metric":{"description":"Standard Metric from the routing protocol","type":"integer","format":"int64","example":0},"remote-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"te-metric":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric"},"sr-link-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes"},"local-address6":{"description":"","type":"string","example":":","minLength":0,"maxLength":2147483647}},"xml":{"name":"edge-attributes","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_edge_edge-attributes_te-metric":{"title":"graph_graph-topology_graph_edge_edge-attributes_te-metric","type":"object","description":"Standard Traffic Engineering Metrics","properties":{"max-link-bandwidth":{"description":"Maximum bandwidth that can be use","type":"number","example":-92233720368547758.08},"metric":{"description":"Traffic Engineering Metric","type":"integer","format":"int64","example":0},"unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_te-metric_unreserved-bandwidth"},"description":"Unreserved bandwidth for 0-7 class type","maxItems":8},"admin-group":{"description":"Administrative group or color of the link","type":"integer","format":"int64","example":0},"max-resv-link-bandwidth":{"description":"Maximum amount of bandwidth that can be reserved","type":"number","example":-92233720368547758.08}},"xml":{"name":"te-metric","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_edge_edge-attributes_te-metric_unreserved-bandwidth":{"title":"graph_graph-topology_graph_edge_edge-attributes_te-metric_unreserved-bandwidth","type":"object","description":"Unreserved bandwidth for 0-7 class type","properties":{"bandwidth":{"description":"Unreserved bandwidth for this class type","type":"number","example":-92233720368547758.08},"class-type":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"unreserved-bandwidth","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_edge_edge-attributes_extended-metric":{"title":"graph_graph-topology_graph_edge_edge-attributes_extended-metric","type":"object","description":"Performance (Extended) Metrics","properties":{"loss":{"description":"Unidirectional Loss","type":"integer","format":"int64","example":0},"delay":{"description":"Unidirectional Delay.","type":"integer","format":"int64","example":0},"jitter":{"description":"Unidirectional Delay Variation","type":"integer","format":"int64","example":0},"residual-bandwidth":{"description":"Unidirectional Residual Bandwidth","type":"number","example":-92233720368547758.08},"available-bandwidth":{"description":"Unidirectional Available Bandwidth","type":"number","example":-92233720368547758.08},"utilized-bandwidth":{"description":"Unidirectional Utilized Bandwidth","type":"number","example":-92233720368547758.08},"extended-admin-group":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":"List of Extended Admin Group"},"min-max-delay":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_extended-metric_min-max-delay"}},"xml":{"name":"extended-metric","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_edge_edge-attributes_extended-metric_min-max-delay":{"title":"graph_graph-topology_graph_edge_edge-attributes_extended-metric_min-max-delay","type":"object","description":"Min/Max Unidirectional Delay","properties":{"max-delay":{"description":"","type":"integer","format":"int64","example":0},"min-delay":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"min-max-delay","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes":{"title":"graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes","type":"object","description":"Segment Routing information of the Link","properties":{"adj-sid":{"description":"Segment Routing Adjacency Identifier for IPv4","type":"integer","format":"int64","example":0},"backup-adj-sid":{"description":"Segment Routing Backup Adjacency Identifier for IPv4","type":"integer","format":"int64","example":0},"link-msd":{"type":"array","items":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes_link-msd"},"description":""},"adj-sid6":{"description":"Segment Routing Adjacency Identifier for IPv6","type":"integer","format":"int64","example":0},"backup-adj-sid6":{"description":"Segment Routing Backup Adjacency Identifier for IPv6","type":"integer","format":"int64","example":0}},"xml":{"name":"sr-link-attributes","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes_link-msd":{"title":"graph_graph-topology_graph_edge_edge-attributes_sr-link-attributes_link-msd","type":"object","properties":{"msd-type":{"description":"","type":"integer","format":"int32","example":0},"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"link-msd","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_edge_edge-attributes_egress-peer-engineering":{"title":"graph_graph-topology_graph_edge_edge-attributes_egress-peer-engineering","type":"object","description":"Egress Peer Engineering (EPE) SID","properties":{"peer-node-sid":{"description":"The SID representing the peer of the BGP session.","type":"integer","format":"int64","example":0},"peer-set-sids":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":"The SID representing the group the peer is part of."},"peer-adj-sid":{"description":"The SID representing the peer of the BGP session.","type":"integer","format":"int64","example":0}},"xml":{"name":"egress-peer-engineering","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_edge_edge-attributes_asla-metric":{"title":"graph_graph-topology_graph_edge_edge-attributes_asla-metric","type":"object","description":"Application Specific Link Attributes","properties":{"loss":{"description":"Unidirectional Loss","type":"integer","format":"int64","example":0},"srlgs":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""},"delay":{"description":"Unidirectional Delay.","type":"integer","format":"int64","example":0},"jitter":{"description":"Unidirectional Delay Variation","type":"integer","format":"int64","example":0},"residual-bandwidth":{"description":"Unidirectional Residual Bandwidth","type":"number","example":-92233720368547758.08},"available-bandwidth":{"description":"Unidirectional Available Bandwidth","type":"number","example":-92233720368547758.08},"utilized-bandwidth":{"description":"Unidirectional Utilized Bandwidth","type":"number","example":-92233720368547758.08},"te-metric":{"description":"","type":"integer","format":"int64","example":0},"extended-admin-group":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":"List of Extended Admin Group"},"admin-group":{"description":"","type":"integer","format":"int64","example":0},"applications":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_applications"},"min-max-delay":{"$ref":"#/components/schemas/graph_graph-topology_graph_edge_edge-attributes_asla-metric_min-max-delay"}},"xml":{"name":"asla-metric","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_edge_edge-attributes_asla-metric_applications":{"title":"graph_graph-topology_graph_edge_edge-attributes_asla-metric_applications","type":"object","properties":{"flex-algo":{"description":"","type":"boolean","example":true},"rsvp-te":{"description":"","type":"boolean","example":true},"lfa":{"description":"","type":"boolean","example":true},"segment-routing":{"description":"","type":"boolean","example":true}},"xml":{"name":"applications","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_edge_edge-attributes_asla-metric_min-max-delay":{"title":"graph_graph-topology_graph_edge_edge-attributes_asla-metric_min-max-delay","type":"object","description":"Min/Max Unidirectional Delay","properties":{"max-delay":{"description":"","type":"integer","format":"int64","example":0},"min-delay":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"min-max-delay","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_prefix":{"title":"graph_graph-topology_graph_prefix","type":"object","description":"The list of prefixes for the Graph.","properties":{"igp-metric":{"description":"Metric associated to the prefix by the IGP","type":"integer","format":"int64","example":0},"vertex-id":{"description":"Reference to the Vertex where the prefix is attached","type":"integer","example":0},"sr-prefix-attributes":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes"},"prefix":{"description":"IP (v4 or v6) Prefix.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"required":["prefix"],"xml":{"name":"prefix","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_prefix_sr-prefix-attributes":{"title":"graph_graph-topology_graph_prefix_sr-prefix-attributes","type":"object","description":"Prefix Segment Routing information","properties":{"prefix-sr-flags":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-sr-flags"},"prefix-flex-algo":{"$ref":"#/components/schemas/graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-flex-algo"},"prefix-sid":{"description":"Segment Routing prefix Identifier. Unit MPLS label","type":"integer","format":"int64","example":0},"prefix-algo":{"description":"Algorithm (SPF or S-SPF) associated to this SID","type":"integer","format":"int32","example":0}},"xml":{"name":"sr-prefix-attributes","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-sr-flags":{"title":"graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-sr-flags","type":"object","properties":{"explicit-null":{"description":"Prefix SID requested explicit-Null for the last hop","type":"boolean","example":true},"no-php":{"description":"Prefix SID requested No Pinultimate-Hop-Popping (PHP) for the last hop","type":"boolean","example":true},"node-sid":{"description":"Prefix is a Node Segment Routing Identifier (Node-SID)","type":"boolean","example":true},"value":{"description":"Prefix SID is an MPLS label","type":"boolean","example":true},"local":{"description":"Prefix SID is local","type":"boolean","example":true}},"xml":{"name":"prefix-sr-flags","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-flex-algo":{"title":"graph_graph-topology_graph_prefix_sr-prefix-attributes_prefix-flex-algo","type":"object","description":"Flexible Algorithm","properties":{"flex-algo":{"description":"","type":"integer","format":"int32","example":128},"metric":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"prefix-flex-algo","namespace":"urn:opendaylight:params:xml:ns:yang:graph"}},"ietf-interfaces_interfaces":{"title":"ietf-interfaces_interfaces","type":"object","description":"Interface parameters.","properties":{"interface":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface"},"description":"The list of interfaces on the device.\n\nThe status of an interface is available in this list in the\noperational state.  If the configuration of a\nsystem-controlled interface cannot be used by the system\n(e.g., the interface hardware present does not match the\ninterface type), then the configuration is not applied to\nthe system-controlled interface shown in the operational\nstate.  If the configuration of a user-controlled interface\ncannot be used by the system, the configured interface is\nnot instantiated in the operational state.\n\nSystem-controlled interfaces created by the system are\nalways present in this list in the operational state,\nwhether or not they are configured."}},"xml":{"name":"interfaces","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces"}},"ietf-interfaces_interfaces_interface":{"title":"ietf-interfaces_interfaces_interface","type":"object","description":"The list of interfaces on the device.\n\nThe status of an interface is available in this list in the\noperational state.  If the configuration of a\nsystem-controlled interface cannot be used by the system\n(e.g., the interface hardware present does not match the\ninterface type), then the configuration is not applied to\nthe system-controlled interface shown in the operational\nstate.  If the configuration of a user-controlled interface\ncannot be used by the system, the configured interface is\nnot instantiated in the operational state.\n\nSystem-controlled interfaces created by the system are\nalways present in this list in the operational state,\nwhether or not they are configured.","properties":{"link-up-down-trap-enable":{"description":"Controls whether linkUp/linkDown SNMP notifications\nshould be generated for this interface.\n\nIf this node is not configured, the value 'enabled' is\noperationally used by the server for interfaces that do\nnot operate on top of any other interface (i.e., there are\nno 'lower-layer-if' entries), and 'disabled' otherwise.","type":"string","enum":["enabled","disabled"],"example":"enabled"},"description":{"description":"A textual description of the interface.\n\nA server implementation MAY map this leaf to the ifAlias\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifAlias.  The definition of\nsuch a mechanism is outside the scope of this document.\n\nSince ifAlias is defined to be stored in non-volatile\nstorage, the MIB implementation MUST map ifAlias to the\nvalue of 'description' in the persistently stored\nconfiguration.","type":"string","example":"Some description"},"type":{"description":"The type of the interface.\n\nWhen an interface entry is created, a server MAY\ninitialize the type leaf with a valid value, e.g., if it\nis possible to derive the type from the name of the\ninterface.\n\nIf a client tries to set the type of an interface to a\nvalue that can never be used by the system, e.g., if the\ntype is not supported or if the type does not match the\nname of the interface, the server MUST reject the request.\nA NETCONF server MUST reply with an rpc-error with the\nerror-tag 'invalid-value' in this case.","type":"string","enum":["interface-type"],"example":"interface-type"},"enabled":{"description":"This leaf contains the configured, desired state of the\ninterface.\n\nSystems that implement the IF-MIB use the value of this\nleaf in the intended configuration to set\nIF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry\nhas been initialized, as described in RFC 2863.\n\nChanges in this leaf in the intended configuration are\nreflected in ifAdminStatus.","type":"boolean","default":true,"example":true},"ietf-ip:ipv4":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4"},"ietf-ip:ipv6":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6"},"name":{"description":"The name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\noperational state, the server MAY reject the request if\nthe implementation does not support pre-provisioning of\ninterfaces or if the name refers to an interface that can\nnever exist in the system.  A Network Configuration\nProtocol (NETCONF) server MUST reply with an rpc-error\nwith the error-tag 'invalid-value' in this case.\n\nIf the device supports pre-provisioning of interface\nconfiguration, the 'pre-provisioning' feature is\nadvertised.\n\nIf the device allows arbitrarily named user-controlled\ninterfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\noperational state.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document.","type":"string","example":"Some name"},"ietf-network-instance:bind-ni-name":{"description":"Network instance to which an interface is bound.","type":"string","example":"Some bind-ni-name","xml":{"name":"bind-ni-name","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance"}},"statistics":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_statistics"}},"required":["type"],"xml":{"name":"interface","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces"}},"ietf-interfaces_interfaces_interface_statistics":{"title":"ietf-interfaces_interfaces_interface_statistics","type":"object","description":"A collection of interface-related statistics objects.","properties":{"in-unknown-protos":{"description":"For packet-oriented interfaces, the number of packets\nreceived via the interface that were discarded because\nof an unknown or unsupported protocol.  For\ncharacter-oriented or fixed-length interfaces that\nsupport protocol multiplexing, the number of\ntransmission units received via the interface that were\ndiscarded because of an unknown or unsupported protocol.\nFor any interface that does not support protocol\nmultiplexing, this counter is not present.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","format":"int64","example":0},"discontinuity-time":{"description":"The time on the most recent occasion at which any one or\nmore of this interface's counters suffered a\ndiscontinuity.  If no such discontinuities have occurred\nsince the last re-initialization of the local management\nsubsystem, then this node contains the time the local\nmanagement subsystem re-initialized itself.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"out-broadcast-pkts":{"description":"The total number of packets that higher-level protocols\nrequested be transmitted and that were addressed to a\nbroadcast address at this sub-layer, including those\nthat were discarded or not sent.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-multicast-pkts":{"description":"The total number of packets that higher-level protocols\nrequested be transmitted and that were addressed to a\nmulticast address at this sub-layer, including those\nthat were discarded or not sent.  For a MAC-layer\nprotocol, this includes both Group and Functional\naddresses.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-discards":{"description":"The number of outbound packets that were chosen to be\ndiscarded even though no errors had been detected to\nprevent their being transmitted.  One possible reason\nfor discarding such a packet could be to free up buffer\nspace.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","format":"int64","example":0},"in-broadcast-pkts":{"description":"The number of packets, delivered by this sub-layer to a\nhigher (sub-)layer, that were addressed to a broadcast\naddress at this sub-layer.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-unicast-pkts":{"description":"The total number of packets that higher-level protocols\nrequested be transmitted and that were not addressed\nto a multicast or broadcast address at this sub-layer,\nincluding those that were discarded or not sent.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-octets":{"description":"The total number of octets transmitted out of the\ninterface, including framing characters.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-octets":{"description":"The total number of octets received on the interface,\nincluding framing characters.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-multicast-pkts":{"description":"The number of packets, delivered by this sub-layer to a\nhigher (sub-)layer, that were addressed to a multicast\naddress at this sub-layer.  For a MAC-layer protocol,\nthis includes both Group and Functional addresses.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-errors":{"description":"For packet-oriented interfaces, the number of inbound\npackets that contained errors preventing them from being\ndeliverable to a higher-layer protocol.  For character-\noriented or fixed-length interfaces, the number of\ninbound transmission units that contained errors\npreventing them from being deliverable to a higher-layer\nprotocol.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","format":"int64","example":0},"in-discards":{"description":"The number of inbound packets that were chosen to be\ndiscarded even though no errors had been detected to\nprevent their being deliverable to a higher-layer\nprotocol.  One possible reason for discarding such a\npacket could be to free up buffer space.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","format":"int64","example":0},"in-unicast-pkts":{"description":"The number of packets, delivered by this sub-layer to a\nhigher (sub-)layer, that were not addressed to a\nmulticast or broadcast address at this sub-layer.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-errors":{"description":"For packet-oriented interfaces, the number of outbound\npackets that could not be transmitted because of errors.\nFor character-oriented or fixed-length interfaces, the\nnumber of outbound transmission units that could not be\ntransmitted because of errors.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","format":"int64","example":0}},"required":["discontinuity-time"],"xml":{"name":"statistics","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces"}},"ietf-interfaces_interfaces_interface_ipv4":{"title":"ietf-interfaces_interfaces_interface_ipv4","type":"object","description":"Parameters for the IPv4 address family.","properties":{"address":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_address"},"description":"The list of IPv4 addresses on the interface."},"ietf-network-instance:bind-ni-name":{"description":"Network instance to which IPv4 interface is bound.","type":"string","example":"Some bind-ni-name","xml":{"name":"bind-ni-name","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance"}},"forwarding":{"description":"Controls IPv4 packet forwarding of datagrams received by,\nbut not addressed to, this interface.  IPv4 routers\nforward datagrams.  IPv4 hosts do not (except those\nsource-routed via the host).","type":"boolean","default":false,"example":true},"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv4_neighbor"},"description":"A list of mappings from IPv4 addresses to\nlink-layer addresses.\n\nEntries in this list in the intended configuration are\nused as static entries in the ARP Cache.\n\nIn the operational state, this list represents the ARP\nCache."},"enabled":{"description":"Controls whether IPv4 is enabled or disabled on this\ninterface.  When IPv4 is enabled, this interface is\nconnected to an IPv4 stack, and the interface can send\nand receive IPv4 packets.","type":"boolean","default":true,"example":true},"mtu":{"description":"The size, in octets, of the largest IPv4 packet that the\ninterface will send and receive.\n\nThe server may restrict the allowed values for this leaf,\ndepending on the interface's type.\n\nIf this leaf is not configured, the operationally used MTU\ndepends on the interface's type.","type":"integer","format":"int32","example":68}},"xml":{"name":"ipv4","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip"}},"ietf-interfaces_interfaces_interface_ipv4_address":{"title":"ietf-interfaces_interfaces_interface_ipv4_address","type":"object","description":"The list of IPv4 addresses on the interface.","properties":{"prefix-length":{"description":"The length of the subnet prefix.","type":"integer","format":"int32","example":0},"ip":{"description":"The IPv4 address on the interface.","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"address","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip"}},"ietf-interfaces_interfaces_interface_ipv4_neighbor":{"title":"ietf-interfaces_interfaces_interface_ipv4_neighbor","type":"object","description":"A list of mappings from IPv4 addresses to\nlink-layer addresses.\n\nEntries in this list in the intended configuration are\nused as static entries in the ARP Cache.\n\nIn the operational state, this list represents the ARP\nCache.","properties":{"link-layer-address":{"description":"The link-layer address of the neighbor node.","type":"string","example":"","minLength":0,"maxLength":2147483647},"ip":{"description":"The IPv4 address of the neighbor node.","type":"string","example":"","minLength":0,"maxLength":2147483647}},"required":["link-layer-address"],"xml":{"name":"neighbor","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip"}},"ietf-interfaces_interfaces_interface_ipv6":{"title":"ietf-interfaces_interfaces_interface_ipv6","type":"object","description":"Parameters for the IPv6 address family.","properties":{"address":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_address"},"description":"The list of IPv6 addresses on the interface."},"dup-addr-detect-transmits":{"description":"The number of consecutive Neighbor Solicitation messages\nsent while performing Duplicate Address Detection on a\ntentative address.  A value of zero indicates that\nDuplicate Address Detection is not performed on\ntentative addresses.  A value of one indicates a single\ntransmission with no follow-up retransmissions.","type":"integer","format":"int64","default":1,"example":0},"ietf-network-instance:bind-ni-name":{"description":"Network instance to which IPv6 interface is bound.","type":"string","example":"Some bind-ni-name","xml":{"name":"bind-ni-name","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance"}},"forwarding":{"description":"Controls IPv6 packet forwarding of datagrams received by,\nbut not addressed to, this interface.  IPv6 routers\nforward datagrams.  IPv6 hosts do not (except those\nsource-routed via the host).","type":"boolean","default":false,"example":true},"autoconf":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_autoconf"},"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces_interface_ipv6_neighbor"},"description":"A list of mappings from IPv6 addresses to\nlink-layer addresses.\n\nEntries in this list in the intended configuration are\nused as static entries in the Neighbor Cache.\n\nIn the operational state, this list represents the\nNeighbor Cache."},"enabled":{"description":"Controls whether IPv6 is enabled or disabled on this\ninterface.  When IPv6 is enabled, this interface is\nconnected to an IPv6 stack, and the interface can send\nand receive IPv6 packets.","type":"boolean","default":true,"example":true},"mtu":{"description":"The size, in octets, of the largest IPv6 packet that the\ninterface will send and receive.\n\nThe server may restrict the allowed values for this leaf,\ndepending on the interface's type.\n\nIf this leaf is not configured, the operationally used MTU\ndepends on the interface's type.","type":"integer","format":"int64","example":1280}},"xml":{"name":"ipv6","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip"}},"ietf-interfaces_interfaces_interface_ipv6_address":{"title":"ietf-interfaces_interfaces_interface_ipv6_address","type":"object","description":"The list of IPv6 addresses on the interface.","properties":{"prefix-length":{"description":"The length of the subnet prefix.","type":"integer","format":"int32","example":0},"ip":{"description":"The IPv6 address on the interface.","type":"string","example":"","minLength":0,"maxLength":2147483647}},"required":["prefix-length"],"xml":{"name":"address","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip"}},"ietf-interfaces_interfaces_interface_ipv6_neighbor":{"title":"ietf-interfaces_interfaces_interface_ipv6_neighbor","type":"object","description":"A list of mappings from IPv6 addresses to\nlink-layer addresses.\n\nEntries in this list in the intended configuration are\nused as static entries in the Neighbor Cache.\n\nIn the operational state, this list represents the\nNeighbor Cache.","properties":{"link-layer-address":{"description":"The link-layer address of the neighbor node.\n\nIn the operational state, if the neighbor's 'state' leaf\nis 'incomplete', this leaf is not instantiated.","type":"string","example":"","minLength":0,"maxLength":2147483647},"ip":{"description":"The IPv6 address of the neighbor node.","type":"string","example":"","minLength":0,"maxLength":2147483647}},"required":["link-layer-address"],"xml":{"name":"neighbor","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip"}},"ietf-interfaces_interfaces_interface_ipv6_autoconf":{"title":"ietf-interfaces_interfaces_interface_ipv6_autoconf","type":"object","description":"Parameters to control the autoconfiguration of IPv6\naddresses, as described in RFC 4862.","properties":{"temporary-valid-lifetime":{"description":"The time period during which the temporary address\nis valid.","type":"integer","format":"int64","default":604800,"example":0},"temporary-preferred-lifetime":{"description":"The time period during which the temporary address is\npreferred.","type":"integer","format":"int64","default":86400,"example":0},"create-global-addresses":{"description":"If enabled, the host creates global addresses as\ndescribed in RFC 4862.","type":"boolean","default":true,"example":true},"create-temporary-addresses":{"description":"If enabled, the host creates temporary addresses as\ndescribed in RFC 4941.","type":"boolean","default":false,"example":true}},"xml":{"name":"autoconf","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip"}},"ietf-interfaces_interfaces-state":{"title":"ietf-interfaces_interfaces-state","type":"object","description":"Data nodes for the operational state of interfaces.","properties":{"interface":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface"},"description":"The list of interfaces on the device.\n\nSystem-controlled interfaces created by the system are\nalways present in this list, whether or not they are\nconfigured."}},"xml":{"name":"interfaces-state","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces"}},"ietf-interfaces_interfaces-state_interface":{"title":"ietf-interfaces_interfaces-state_interface","type":"object","description":"The list of interfaces on the device.\n\nSystem-controlled interfaces created by the system are\nalways present in this list, whether or not they are\nconfigured.","properties":{"lower-layer-if":{"type":"array","items":{"type":"string","example":"Some lower-layer-if"},"description":"A list of references to interfaces layered underneath this\ninterface."},"last-change":{"description":"The time the interface entered its current operational\nstate.  If the current state was entered prior to the\nlast re-initialization of the local network management\nsubsystem, then this node is not present.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"oper-status":{"description":"The current operational state of the interface.\n\nThis leaf has the same semantics as ifOperStatus.","type":"string","enum":["up","down","testing","unknown","dormant","not-present","lower-layer-down"],"example":"up"},"type":{"description":"The type of the interface.","type":"string","enum":["interface-type"],"example":"interface-type"},"speed":{"description":"An estimate of the interface's current bandwidth in bits\nper second.  For interfaces that do not vary in\nbandwidth or for those where no accurate estimation can\n\nbe made, this node should contain the nominal bandwidth.\nFor interfaces that have no concept of bandwidth, this\nnode is not present.","type":"integer","example":0},"admin-status":{"description":"The desired state of the interface.\n\nThis leaf has the same read semantics as ifAdminStatus.","type":"string","enum":["up","down","testing"],"example":"up"},"ietf-ip:ipv4":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv4"},"ietf-ip:ipv6":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv6"},"name":{"description":"The name of the interface.\n\nA server implementation MAY map this leaf to the ifName\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifName.  The definition of\nsuch a mechanism is outside the scope of this document.","type":"string","example":"Some name"},"phys-address":{"description":"The interface's address at its protocol sub-layer.  For\nexample, for an 802.x interface, this object normally\ncontains a Media Access Control (MAC) address.  The\ninterface's media-specific modules must define the bit\nand byte ordering and the format of the value of this\nobject.  For interfaces that do not have such an address\n(e.g., a serial line), this node is not present.","type":"string","example":"","minLength":0,"maxLength":2147483647},"higher-layer-if":{"type":"array","items":{"type":"string","example":"Some higher-layer-if"},"description":"A list of references to interfaces layered on top of this\ninterface."},"if-index":{"description":"The ifIndex value for the ifEntry represented by this\ninterface.","type":"integer","format":"int32","example":1},"statistics":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_statistics"}},"required":["oper-status","type","admin-status","if-index","statistics"],"xml":{"name":"interface","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces"}},"ietf-interfaces_interfaces-state_interface_statistics":{"title":"ietf-interfaces_interfaces-state_interface_statistics","type":"object","description":"A collection of interface-related statistics objects.","properties":{"in-unknown-protos":{"description":"For packet-oriented interfaces, the number of packets\nreceived via the interface that were discarded because\nof an unknown or unsupported protocol.  For\ncharacter-oriented or fixed-length interfaces that\nsupport protocol multiplexing, the number of\ntransmission units received via the interface that were\ndiscarded because of an unknown or unsupported protocol.\nFor any interface that does not support protocol\nmultiplexing, this counter is not present.\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","format":"int64","example":0},"discontinuity-time":{"description":"The time on the most recent occasion at which any one or\nmore of this interface's counters suffered a\ndiscontinuity.  If no such discontinuities have occurred\nsince the last re-initialization of the local management\nsubsystem, then this node contains the time the local\nmanagement subsystem re-initialized itself.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"out-broadcast-pkts":{"description":"The total number of packets that higher-level protocols\nrequested be transmitted and that were addressed to a\nbroadcast address at this sub-layer, including those\nthat were discarded or not sent.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-multicast-pkts":{"description":"The total number of packets that higher-level protocols\nrequested be transmitted and that were addressed to a\nmulticast address at this sub-layer, including those\nthat were discarded or not sent.  For a MAC-layer\nprotocol, this includes both Group and Functional\naddresses.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-discards":{"description":"The number of outbound packets that were chosen to be\ndiscarded even though no errors had been detected to\nprevent their being transmitted.  One possible reason\nfor discarding such a packet could be to free up buffer\nspace.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","format":"int64","example":0},"in-broadcast-pkts":{"description":"The number of packets, delivered by this sub-layer to a\nhigher (sub-)layer, that were addressed to a broadcast\naddress at this sub-layer.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-unicast-pkts":{"description":"The total number of packets that higher-level protocols\nrequested be transmitted and that were not addressed\nto a multicast or broadcast address at this sub-layer,\nincluding those that were discarded or not sent.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-octets":{"description":"The total number of octets transmitted out of the\ninterface, including framing characters.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-octets":{"description":"The total number of octets received on the interface,\nincluding framing characters.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-multicast-pkts":{"description":"The number of packets, delivered by this sub-layer to a\nhigher (sub-)layer, that were addressed to a multicast\naddress at this sub-layer.  For a MAC-layer protocol,\nthis includes both Group and Functional addresses.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-errors":{"description":"For packet-oriented interfaces, the number of inbound\npackets that contained errors preventing them from being\ndeliverable to a higher-layer protocol.  For character-\noriented or fixed-length interfaces, the number of\ninbound transmission units that contained errors\npreventing them from being deliverable to a higher-layer\nprotocol.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","format":"int64","example":0},"in-discards":{"description":"The number of inbound packets that were chosen to be\ndiscarded even though no errors had been detected to\nprevent their being deliverable to a higher-layer\nprotocol.  One possible reason for discarding such a\npacket could be to free up buffer space.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","format":"int64","example":0},"in-unicast-pkts":{"description":"The number of packets, delivered by this sub-layer to a\nhigher (sub-)layer, that were not addressed to a\nmulticast or broadcast address at this sub-layer.\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-errors":{"description":"For packet-oriented interfaces, the number of outbound\npackets that could not be transmitted because of errors.\nFor character-oriented or fixed-length interfaces, the\nnumber of outbound transmission units that could not be\ntransmitted because of errors.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","format":"int64","example":0}},"required":["discontinuity-time"],"xml":{"name":"statistics","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces"}},"ietf-interfaces_interfaces-state_interface_ipv4":{"title":"ietf-interfaces_interfaces-state_interface_ipv4","type":"object","description":"Interface-specific parameters for the IPv4 address family.","properties":{"address":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv4_address"},"description":"The list of IPv4 addresses on the interface."},"forwarding":{"description":"Indicates whether IPv4 packet forwarding is enabled or\ndisabled on this interface.","type":"boolean","example":true},"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv4_neighbor"},"description":"A list of mappings from IPv4 addresses to\nlink-layer addresses.\n\nThis list represents the ARP Cache."},"mtu":{"description":"The size, in octets, of the largest IPv4 packet that the\ninterface will send and receive.","type":"integer","format":"int32","example":68}},"xml":{"name":"ipv4","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip"}},"ietf-interfaces_interfaces-state_interface_ipv4_address":{"title":"ietf-interfaces_interfaces-state_interface_ipv4_address","type":"object","description":"The list of IPv4 addresses on the interface.","properties":{"prefix-length":{"description":"The length of the subnet prefix.","type":"integer","format":"int32","example":0},"ip":{"description":"The IPv4 address on the interface.","type":"string","example":"","minLength":0,"maxLength":2147483647},"origin":{"description":"The origin of this address.","type":"string","enum":["other","static","dhcp","link-layer","random"],"example":"other"}},"xml":{"name":"address","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip"}},"ietf-interfaces_interfaces-state_interface_ipv4_neighbor":{"title":"ietf-interfaces_interfaces-state_interface_ipv4_neighbor","type":"object","description":"A list of mappings from IPv4 addresses to\nlink-layer addresses.\n\nThis list represents the ARP Cache.","properties":{"link-layer-address":{"description":"The link-layer address of the neighbor node.","type":"string","example":"","minLength":0,"maxLength":2147483647},"ip":{"description":"The IPv4 address of the neighbor node.","type":"string","example":"","minLength":0,"maxLength":2147483647},"origin":{"description":"The origin of this neighbor entry.","type":"string","enum":["other","static","dynamic"],"example":"other"}},"xml":{"name":"neighbor","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip"}},"ietf-interfaces_interfaces-state_interface_ipv6":{"title":"ietf-interfaces_interfaces-state_interface_ipv6","type":"object","description":"Parameters for the IPv6 address family.","properties":{"address":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv6_address"},"description":"The list of IPv6 addresses on the interface."},"forwarding":{"description":"Indicates whether IPv6 packet forwarding is enabled or\ndisabled on this interface.","type":"boolean","default":false,"example":true},"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/ietf-interfaces_interfaces-state_interface_ipv6_neighbor"},"description":"A list of mappings from IPv6 addresses to\nlink-layer addresses.\n\nThis list represents the Neighbor Cache."},"mtu":{"description":"The size, in octets, of the largest IPv6 packet that the\ninterface will send and receive.","type":"integer","format":"int64","example":1280}},"xml":{"name":"ipv6","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip"}},"ietf-interfaces_interfaces-state_interface_ipv6_address":{"title":"ietf-interfaces_interfaces-state_interface_ipv6_address","type":"object","description":"The list of IPv6 addresses on the interface.","properties":{"prefix-length":{"description":"The length of the subnet prefix.","type":"integer","format":"int32","example":0},"ip":{"description":"The IPv6 address on the interface.","type":"string","example":"","minLength":0,"maxLength":2147483647},"origin":{"description":"The origin of this address.","type":"string","enum":["other","static","dhcp","link-layer","random"],"example":"other"},"status":{"description":"The status of an address.  Most of the states correspond\nto states from the IPv6 Stateless Address\nAutoconfiguration protocol.","type":"string","enum":["preferred","deprecated","invalid","inaccessible","unknown","tentative","duplicate","optimistic"],"example":"preferred"}},"required":["prefix-length"],"xml":{"name":"address","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip"}},"ietf-interfaces_interfaces-state_interface_ipv6_neighbor":{"title":"ietf-interfaces_interfaces-state_interface_ipv6_neighbor","type":"object","description":"A list of mappings from IPv6 addresses to\nlink-layer addresses.\n\nThis list represents the Neighbor Cache.","properties":{"link-layer-address":{"description":"The link-layer address of the neighbor node.","type":"string","example":"","minLength":0,"maxLength":2147483647},"is-router":{"description":"Indicates that the neighbor node acts as a router.","type":"object"},"ip":{"description":"The IPv6 address of the neighbor node.","type":"string","example":"","minLength":0,"maxLength":2147483647},"origin":{"description":"The origin of this neighbor entry.","type":"string","enum":["other","static","dynamic"],"example":"other"},"state":{"description":"The Neighbor Unreachability Detection state of this\nentry.","type":"string","enum":["incomplete","reachable","stale","delay","probe"],"example":"incomplete"}},"xml":{"name":"neighbor","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip"}},"ietf-netconf_get-config_input":{"title":"ietf-netconf_get-config_input","type":"object","properties":{"source":{"$ref":"#/components/schemas/ietf-netconf_source"},"filter":{"description":"Subtree or XPath filter to use. (This is unknown data, need to be filled by user.)","example":{},"type":"object"},"ietf-netconf-with-defaults:with-defaults":{"description":"The explicit defaults processing mode requested.","type":"string","enum":["report-all","report-all-tagged","trim","explicit"],"example":"report-all","xml":{"name":"with-defaults","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults"}}},"required":["source"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_source":{"title":"ietf-netconf_source","type":"object","description":"Particular configuration to retrieve.","properties":{"candidate":{"description":"The candidate configuration is the config source.","type":"object"}},"xml":{"name":"source","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_get-config_output":{"title":"ietf-netconf_get-config_output","type":"object","properties":{"data":{"description":"Copy of the source datastore subset that matched\nthe filter criteria (if any).  An empty data container\nindicates that the request did not produce any results. (This is unknown data, need to be filled by user.)","example":{},"type":"object"}},"xml":{"name":"output","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_edit-config_input":{"title":"ietf-netconf_edit-config_input","type":"object","properties":{"target":{"$ref":"#/components/schemas/ietf-netconf_target"},"default-operation":{"description":"The default operation to use.","type":"string","enum":["merge","replace","none"],"default":"merge","example":"merge"},"test-option":{"description":"The test option to use.","type":"string","enum":["test-then-set","set","test-only"],"default":"test-then-set","example":"test-then-set"},"error-option":{"description":"The error option to use.","type":"string","enum":["stop-on-error","continue-on-error","rollback-on-error"],"default":"stop-on-error","example":"stop-on-error"},"config":{"description":"Inline Config content. (This is unknown data, need to be filled by user.)","example":{},"type":"object"}},"required":["target"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_target":{"title":"ietf-netconf_target","type":"object","description":"Particular configuration to edit.","properties":{"candidate":{"description":"The candidate configuration is the config target.","type":"object"}},"xml":{"name":"target","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_copy-config_input":{"title":"ietf-netconf_copy-config_input","type":"object","properties":{"target":{"$ref":"#/components/schemas/ietf-netconf_target1"},"source":{"$ref":"#/components/schemas/ietf-netconf_source1"},"ietf-netconf-with-defaults:with-defaults":{"description":"The explicit defaults processing mode requested.","type":"string","enum":["report-all","report-all-tagged","trim","explicit"],"example":"report-all","xml":{"name":"with-defaults","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults"}}},"required":["target","source"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_target1":{"title":"ietf-netconf_target","type":"object","description":"Particular configuration to copy to.","properties":{"candidate":{"description":"The candidate configuration is the config target.","type":"object"}},"xml":{"name":"target","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_source1":{"title":"ietf-netconf_source","type":"object","description":"Particular configuration to copy from.","properties":{"candidate":{"description":"The candidate configuration is the config source.","type":"object"}},"xml":{"name":"source","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_delete-config_input":{"title":"ietf-netconf_delete-config_input","type":"object","properties":{"target":{"$ref":"#/components/schemas/ietf-netconf_target2"}},"required":["target"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_target2":{"title":"ietf-netconf_target","type":"object","description":"Particular configuration to delete.","properties":{"startup":{"description":"The startup configuration is the config target.","type":"object"}},"xml":{"name":"target","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_lock_input":{"title":"ietf-netconf_lock_input","type":"object","properties":{"target":{"$ref":"#/components/schemas/ietf-netconf_target3"}},"required":["target"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_target3":{"title":"ietf-netconf_target","type":"object","description":"Particular configuration to lock.","properties":{"candidate":{"description":"The candidate configuration is the config target.","type":"object"}},"xml":{"name":"target","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_unlock_input":{"title":"ietf-netconf_unlock_input","type":"object","properties":{"target":{"$ref":"#/components/schemas/ietf-netconf_target4"}},"required":["target"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_target4":{"title":"ietf-netconf_target","type":"object","description":"Particular configuration to unlock.","properties":{"candidate":{"description":"The candidate configuration is the config target.","type":"object"}},"xml":{"name":"target","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_get_input":{"title":"ietf-netconf_get_input","type":"object","properties":{"filter":{"description":"This parameter specifies the portion of the system\nconfiguration and state data to retrieve. (This is unknown data, need to be filled by user.)","example":{},"type":"object"},"ietf-netconf-with-defaults:with-defaults":{"description":"The explicit defaults processing mode requested.","type":"string","enum":["report-all","report-all-tagged","trim","explicit"],"example":"report-all","xml":{"name":"with-defaults","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults"}}},"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_get_output":{"title":"ietf-netconf_get_output","type":"object","properties":{"data":{"description":"Copy of the running datastore subset and/or state\ndata that matched the filter criteria (if any).\nAn empty data container indicates that the request did not\nproduce any results. (This is unknown data, need to be filled by user.)","example":{},"type":"object"}},"xml":{"name":"output","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_kill-session_input":{"title":"ietf-netconf_kill-session_input","type":"object","properties":{"session-id":{"description":"Particular session to kill.","type":"integer","format":"int64","example":1}},"required":["session-id"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_commit_input":{"title":"ietf-netconf_commit_input","type":"object","properties":{"confirmed":{"description":"Requests a confirmed commit.","type":"object"},"confirm-timeout":{"description":"The timeout interval for a confirmed commit.","type":"integer","format":"int64","default":600,"example":1},"persist":{"description":"This parameter is used to make a confirmed commit\npersistent.  A persistent confirmed commit is not aborted\nif the NETCONF session terminates.  The only way to abort\na persistent confirmed commit is to let the timer expire,\nor to use the &lt;cancel-commit&gt; operation.\n\nThe value of this parameter is a token that must be given\nin the 'persist-id' parameter of &lt;commit&gt; or\n&lt;cancel-commit&gt; operations in order to confirm or cancel\nthe persistent confirmed commit.\n\nThe token should be a random string.","type":"string","example":"Some persist"},"persist-id":{"description":"This parameter is given in order to commit a persistent\nconfirmed commit.  The value must be equal to the value\ngiven in the 'persist' parameter to the &lt;commit&gt; operation.\nIf it does not match, the operation fails with an\n'invalid-value' error.","type":"string","example":"Some persist-id"}},"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_cancel-commit_input":{"title":"ietf-netconf_cancel-commit_input","type":"object","properties":{"persist-id":{"description":"This parameter is given in order to cancel a persistent\nconfirmed commit.  The value must be equal to the value\ngiven in the 'persist' parameter to the &lt;commit&gt; operation.\nIf it does not match, the operation fails with an\n'invalid-value' error.","type":"string","example":"Some persist-id"}},"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_validate_input":{"title":"ietf-netconf_validate_input","type":"object","properties":{"source":{"$ref":"#/components/schemas/ietf-netconf_source2"}},"required":["source"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf_source2":{"title":"ietf-netconf_source","type":"object","description":"Particular configuration to validate.","properties":{"candidate":{"description":"The candidate configuration is the config source.","type":"object"}},"xml":{"name":"source","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0"}},"ietf-netconf-acm_nacm":{"title":"ietf-netconf-acm_nacm","type":"object","description":"Parameters for NETCONF access control model.","properties":{"write-default":{"description":"Controls whether create, update, or delete access\nis granted if no appropriate rule is found for a\nparticular write request.","type":"string","enum":["permit","deny"],"default":"deny","example":"permit"},"read-default":{"description":"Controls whether read access is granted if\nno appropriate rule is found for a\nparticular read request.","type":"string","enum":["permit","deny"],"default":"permit","example":"permit"},"enable-nacm":{"description":"Enables or disables all NETCONF access control\nenforcement.  If 'true', then enforcement\nis enabled.  If 'false', then enforcement\nis disabled.","type":"boolean","default":true,"example":true},"rule-list":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_rule-list"},"description":"An ordered collection of access control rules."},"exec-default":{"description":"Controls whether exec access is granted if no appropriate\nrule is found for a particular protocol operation request.","type":"string","enum":["permit","deny"],"default":"permit","example":"permit"},"groups":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups"},"enable-external-groups":{"description":"Controls whether the server uses the groups reported by the\nNETCONF transport layer when it assigns the user to a set of\nNACM groups.  If this leaf has the value 'false', any group\nnames reported by the transport layer are ignored by the\nserver.","type":"boolean","default":true,"example":true}},"xml":{"name":"nacm","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm"}},"ietf-netconf-acm_nacm_groups":{"title":"ietf-netconf-acm_nacm_groups","type":"object","description":"NETCONF access control groups.","properties":{"group":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_groups_group"},"description":"One NACM group entry.  This list will only contain\nconfigured entries, not any entries learned from\nany transport protocols."}},"xml":{"name":"groups","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm"}},"ietf-netconf-acm_nacm_groups_group":{"title":"ietf-netconf-acm_nacm_groups_group","type":"object","description":"One NACM group entry.  This list will only contain\nconfigured entries, not any entries learned from\nany transport protocols.","properties":{"user-name":{"type":"array","items":{"type":"string","example":"Some user-name","minLength":1,"maxLength":2147483647},"description":"Each entry identifies the username of\na member of the group associated with\nthis entry."},"name":{"description":"Group name associated with this entry.","type":"string","example":"\u0000","minLength":1,"maxLength":2147483647}},"xml":{"name":"group","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm"}},"ietf-netconf-acm_nacm_rule-list":{"title":"ietf-netconf-acm_nacm_rule-list","type":"object","description":"An ordered collection of access control rules.","properties":{"name":{"description":"Arbitrary name assigned to the rule-list.","type":"string","example":"Some name","minLength":1,"maxLength":2147483647},"rule":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-acm_nacm_rule-list_rule"},"description":"One access control rule.\n\nRules are processed in user-defined order until a match is\nfound.  A rule matches if 'module-name', 'rule-type', and\n'access-operations' match the request.  If a rule\nmatches, the 'action' leaf determines whether or not\naccess is granted."},"group":{"type":"array","items":{"type":"string","example":"*","minLength":0,"maxLength":2147483647},"description":"List of administrative groups that will be\nassigned the associated access rights\ndefined by the 'rule' list.\n\nThe string '*' indicates that all groups apply to the\nentry."}},"xml":{"name":"rule-list","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm"}},"ietf-netconf-acm_nacm_rule-list_rule":{"title":"ietf-netconf-acm_nacm_rule-list_rule","type":"object","description":"One access control rule.\n\nRules are processed in user-defined order until a match is\nfound.  A rule matches if 'module-name', 'rule-type', and\n'access-operations' match the request.  If a rule\nmatches, the 'action' leaf determines whether or not\naccess is granted.","properties":{"rpc-name":{"description":"This leaf matches if it has the value '*' or if\nits value equals the requested protocol operation\nname.","type":"string","example":"*","minLength":0,"maxLength":2147483647},"name":{"description":"Arbitrary name assigned to the rule.","type":"string","example":"Some name","minLength":1,"maxLength":2147483647},"access-operations":{"description":"Access operations associated with this rule.\n\nThis leaf matches if it has the value '*' or if the\nbit corresponding to the requested operation is set.","type":"string","default":"*","example":"*","minLength":0,"maxLength":2147483647},"module-name":{"description":"Name of the module associated with this rule.\n\nThis leaf matches if it has the value '*' or if the\nobject being accessed is defined in the module with the\nspecified module name.","type":"string","default":"*","example":"*","minLength":0,"maxLength":2147483647},"action":{"description":"The access control action associated with the\nrule.  If a rule has been determined to match a\nparticular request, then this object is used\nto determine whether to permit or deny the\nrequest.","type":"string","enum":["permit","deny"],"example":"permit"},"comment":{"description":"A textual description of the access rule.","type":"string","example":"Some comment"}},"required":["action"],"xml":{"name":"rule","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm"}},"ietf-netconf-client_netconf-client":{"title":"ietf-netconf-client_netconf-client","type":"object","description":"Top-level container for NETCONF client configuration.","properties":{"initiate":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate"},"listen":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen"}},"xml":{"name":"netconf-client","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate":{"title":"ietf-netconf-client_netconf-client_initiate","type":"object","description":"Configures client initiating underlying TCP connections.","properties":{"netconf-server":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server"},"description":"List of NETCONF servers the NETCONF client is to\nmaintain simultaneous connections with.","example":[{"name":"Some name"}],"minItems":1}},"required":["netconf-server"],"xml":{"name":"initiate","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server","type":"object","description":"List of NETCONF servers the NETCONF client is to\nmaintain simultaneous connections with.","properties":{"endpoints":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints"},"connection-type":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_connection-type"},"name":{"description":"An arbitrary name for the NETCONF server.","type":"string","example":"Some name"},"reconnect-strategy":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_reconnect-strategy"}},"required":["connection-type"],"xml":{"name":"netconf-server","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints","type":"object","description":"Container for the list of endpoints.","properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint"},"description":"A user-ordered list of endpoints that the NETCONF\nclient will attempt to connect to in the specified\nsequence.  Defining more than one enables\nhigh-availability.","example":[{"name":"Some name"}],"minItems":1}},"required":["endpoint"],"xml":{"name":"endpoints","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint","type":"object","description":"A user-ordered list of endpoints that the NETCONF\nclient will attempt to connect to in the specified\nsequence.  Defining more than one enables\nhigh-availability.","properties":{"name":{"description":"An arbitrary name for the endpoint.","type":"string","example":"Some name"},"ssh":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh"}},"xml":{"name":"endpoint","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh","type":"object","description":"Specifies TCP, SSH, and NETCONF configuration\nfor the connection.","properties":{"ssh-client-parameters":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters"},"netconf-client-parameters":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_netconf-client-parameters"},"tcp-client-parameters":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_tcp-client-parameters"}},"required":["tcp-client-parameters"],"xml":{"name":"ssh","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_tcp-client-parameters":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_tcp-client-parameters","type":"object","description":"TCP-level client parameters to initiate\na NETCONF over SSH connection.","properties":{"local-port":{"description":"The local IP port number to bind to for when connecting\nto the remote peer.  The port number '0', which is the\ndefault value, indicates that any available local port\nnumber may be used.","type":"string","default":"0"},"keepalives":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_tcp-client-parameters_keepalives"},"remote-address":{"description":"The IP address or hostname of the remote peer to\nestablish a connection with.  If a domain name is\nconfigured, then the DNS resolution should happen on\neach connection attempt.  If the DNS resolution\nresults in multiple IP addresses, the IP addresses\nare tried according to local preference order until\na connection has been established or until all IP\naddresses have failed.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"remote-port":{"description":"The NETCONF client will attempt to connect\nto the IANA-assigned well-known port value\nfor 'netconf-ssh' (830) if no value is\nspecified.","type":"integer","format":"int32","default":830,"example":0},"local-address":{"description":"The local IP address/interface to bind to for when\nconnecting to the remote peer.  INADDR_ANY ('0.0.0.0') or\nINADDR6_ANY ('0:0:0:0:0:0:0:0' a.k.a. '::') MAY be used to\nexplicitly indicate the implicit default, which the server\ncan bind to any IPv4 or IPv6 address.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"required":["remote-address"],"xml":{"name":"tcp-client-parameters","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_tcp-client-parameters_keepalives":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_tcp-client-parameters_keepalives","type":"object","description":"An 'if-feature' statement so that implementations\ncan choose to support TCP client keepalives.","properties":{"idle-time":{"description":"Sets the amount of time after which a TCP-level probe\nmessage will be sent to test the aliveness of the TCP\npeer if no data has been received from the TCP peer.\nTwo hours (7200 seconds) is a safe value, per Section\n3.8.4 of RFC 9293.","type":"integer","format":"int32","default":7200,"example":1},"probe-interval":{"description":"Sets the time interval between failed probes.  The\ninterval SHOULD be significantly longer than one second\nin order to avoid harm on a congested link.","type":"integer","format":"int32","default":75,"example":1},"max-probes":{"description":"Sets the maximum number of sequential keepalive probes\nthat can fail to obtain a response from the TCP peer\nbefore assuming the TCP peer is no longer alive.","type":"integer","format":"int32","default":9,"example":1}},"xml":{"name":"keepalives","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters","type":"object","description":"SSH-level client parameters to initiate\na NETCONF over SSH connection.","properties":{"server-authentication":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication"},"transport-params":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params"},"keepalives":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_keepalives"},"client-identity":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity"}},"xml":{"name":"ssh-client-parameters","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity","type":"object","description":"The username and authentication methods for the client.\nThe authentication methods are unordered.  Clients may\ninitially send any configured method or, per Section 5.2 of\nRFC 4252, send the 'none' method to prompt the server\nto provide a list of productive methods.  Whenever a\nchoice amongst methods arises, implementations SHOULD\nuse a default ordering that prioritizes automation\nover human interaction.","properties":{"password":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_password"},"certificate":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate"},"public-key":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_public-key"},"hostbased":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_hostbased"},"username":{"description":"The username of this user.  This will be the username\nused, for instance, to log into an SSH server.","type":"string","example":"Some username"}},"xml":{"name":"client-identity","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_public-key":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_public-key","type":"object","description":"A locally defined or referenced asymmetric key\npair to be used for client identification.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_public-key_inline-definition"}},"required":["inline-definition"],"xml":{"name":"public-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_public-key_inline-definition":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_public-key_inline-definition","type":"object","description":"A container to hold the local key definition.","properties":{"cleartext-private-key":{"description":"The value of the binary key.  The key's value is\ninterpreted by the 'private-key-format' field.","type":"string","format":"byte"},"private-key-format":{"description":"Identifies the private key's format.  Implementations SHOULD\nensure that the incoming private key value is encoded in the\nspecified format.\n\nFor encrypted keys, the value is the decrypted key's\nformat (i.e., the 'encrypted-value-format' conveys the\nencrypted key's format).","type":"string","enum":["private-key-format","one-asymmetric-key-format","ec-private-key-format","rsa-private-key-format"],"example":"private-key-format"},"public-key":{"description":"The binary value of the public key.  The interpretation\nof the value is defined by the 'public-key-format' field.","type":"string","format":"byte"},"public-key-format":{"description":"Identifies the public key's format.  Implementations SHOULD\nensure that the incoming public key value is encoded in the\nspecified format.","type":"string","enum":["public-key-format","subject-public-key-info-format","ssh-public-key-format"],"example":"public-key-format"}},"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_password":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_password","type":"object","description":"A password to be used to authenticate the client's\nidentity.","properties":{"cleartext-password":{"description":"The cleartext value of the password.","type":"string","example":"Some cleartext-password"}},"xml":{"name":"password","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_hostbased":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_hostbased","type":"object","description":"A locally defined or referenced asymmetric key\npair to be used for host identification.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_hostbased_inline-definition"}},"required":["inline-definition"],"xml":{"name":"hostbased","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_hostbased_inline-definition":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_hostbased_inline-definition","type":"object","description":"A container to hold the local key definition.","properties":{"cleartext-private-key":{"description":"The value of the binary key.  The key's value is\ninterpreted by the 'private-key-format' field.","type":"string","format":"byte"},"private-key-format":{"description":"Identifies the private key's format.  Implementations SHOULD\nensure that the incoming private key value is encoded in the\nspecified format.\n\nFor encrypted keys, the value is the decrypted key's\nformat (i.e., the 'encrypted-value-format' conveys the\nencrypted key's format).","type":"string","enum":["private-key-format","one-asymmetric-key-format","ec-private-key-format","rsa-private-key-format"],"example":"private-key-format"},"public-key":{"description":"The binary value of the public key.  The interpretation\nof the value is defined by the 'public-key-format' field.","type":"string","format":"byte"},"public-key-format":{"description":"Identifies the public key's format.  Implementations SHOULD\nensure that the incoming public key value is encoded in the\nspecified format.","type":"string","enum":["public-key-format","subject-public-key-info-format","ssh-public-key-format"],"example":"public-key-format"}},"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate","type":"object","description":"A locally defined or referenced certificate\nto be used for client identification.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate_inline-definition"}},"required":["inline-definition"],"xml":{"name":"certificate","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate_inline-definition":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate_inline-definition","type":"object","description":"A container to hold the local key definition.","properties":{"cleartext-private-key":{"description":"The value of the binary key.  The key's value is\ninterpreted by the 'private-key-format' field.","type":"string","format":"byte"},"private-key-format":{"description":"Identifies the private key's format.  Implementations SHOULD\nensure that the incoming private key value is encoded in the\nspecified format.\n\nFor encrypted keys, the value is the decrypted key's\nformat (i.e., the 'encrypted-value-format' conveys the\nencrypted key's format).","type":"string","enum":["private-key-format","one-asymmetric-key-format","ec-private-key-format","rsa-private-key-format"],"example":"private-key-format"},"public-key":{"description":"The binary value of the public key.  The interpretation\nof the value is defined by the 'public-key-format' field.","type":"string","format":"byte"},"cert-data":{"description":"The binary certificate data for this certificate.","type":"string","format":"byte"},"public-key-format":{"description":"Identifies the public key's format.  Implementations SHOULD\nensure that the incoming public key value is encoded in the\nspecified format.","type":"string","enum":["public-key-format","subject-public-key-info-format","ssh-public-key-format"],"example":"public-key-format"}},"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate_inline-definition_generate-csr_input":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate_inline-definition_generate-csr_input","type":"object","properties":{"csr-format":{"description":"Specifies the format for the returned certificate.","type":"string","enum":["csr-format","p10-csr-format"],"example":"csr-format"},"csr-info":{"description":"A CertificationRequestInfo structure, as defined in\nRFC 2986.\n\nEnables the client to provide a fully populated\nCertificationRequestInfo structure that the server\nonly needs to sign in order to generate the complete\nCertificationRequest structure to return in the\n'output'.\n\nThe 'AlgorithmIdentifier' field contained inside\nthe 'SubjectPublicKeyInfo' field MUST be one known\nto be supported by the device.","type":"string","format":"byte"}},"required":["csr-format","csr-info"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate_inline-definition_generate-csr_output":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate_inline-definition_generate-csr_output","type":"object","properties":{"p10-csr":{"description":"A CertificationRequest, as defined in RFC 2986.","type":"string","format":"byte"}},"xml":{"name":"output","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication","type":"object","description":"Specifies how the SSH client can authenticate SSH servers.\nAny combination of authentication methods is additive and\nunordered.","properties":{"ssh-host-keys":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys"},"ee-certs":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs"},"ca-certs":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs"}},"xml":{"name":"server-authentication","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys","type":"object","description":"A bag of SSH host keys used by the SSH client to\nauthenticate SSH server host keys.  A server host key\nis authenticated if it is an exact match to a\nconfigured SSH host key.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys_inline-definition"}},"xml":{"name":"ssh-host-keys","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys_inline-definition":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys_inline-definition","type":"object","description":"A container to hold local public key definitions.","properties":{"public-key":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys_inline-definition_public-key"},"description":"A public key definition."}},"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys_inline-definition_public-key":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys_inline-definition_public-key","type":"object","description":"A public key definition.","properties":{"name":{"description":"An arbitrary name for this public key.","type":"string","example":"Some name"},"public-key":{"description":"The binary value of the public key.  The interpretation\nof the value is defined by the 'public-key-format' field.","type":"string","format":"byte"},"public-key-format":{"description":"Identifies the public key's format.  Implementations SHOULD\nensure that the incoming public key value is encoded in the\nspecified format.","type":"string","enum":["public-key-format","subject-public-key-info-format","ssh-public-key-format"],"example":"public-key-format"}},"required":["public-key","public-key-format"],"xml":{"name":"public-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs","type":"object","description":"A set of Certification Authority (CA) certificates used by\nthe SSH client to authenticate SSH servers.  A server\nis authenticated if its certificate has a valid chain\nof trust to a configured CA certificate.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs_inline-definition"}},"xml":{"name":"ca-certs","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs_inline-definition":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs_inline-definition","type":"object","description":"A container for locally configured trust anchor\ncertificates.","properties":{"certificate":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs_inline-definition_certificate"},"description":"A trust anchor certificate or chain of certificates.","example":[{"name":"Some name"}],"minItems":1}},"required":["certificate"],"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs_inline-definition_certificate":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs_inline-definition_certificate","type":"object","description":"A trust anchor certificate or chain of certificates.","properties":{"name":{"description":"An arbitrary name for this certificate.","type":"string","example":"Some name"},"cert-data":{"description":"The binary certificate data for this certificate.","type":"string","format":"byte"}},"required":["cert-data"],"xml":{"name":"certificate","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs","type":"object","description":"A set of end-entity (EE) certificates used by the SSH\nclient to authenticate SSH servers.  A server is\nauthenticated if its certificate is an exact match to a\nconfigured end-entity certificate.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs_inline-definition"}},"xml":{"name":"ee-certs","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs_inline-definition":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs_inline-definition","type":"object","description":"A container for locally configured trust anchor\ncertificates.","properties":{"certificate":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs_inline-definition_certificate"},"description":"A trust anchor certificate or chain of certificates.","example":[{"name":"Some name"}],"minItems":1}},"required":["certificate"],"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs_inline-definition_certificate":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs_inline-definition_certificate","type":"object","description":"A trust anchor certificate or chain of certificates.","properties":{"name":{"description":"An arbitrary name for this certificate.","type":"string","example":"Some name"},"cert-data":{"description":"The binary certificate data for this certificate.","type":"string","format":"byte"}},"required":["cert-data"],"xml":{"name":"certificate","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params","type":"object","description":"Configurable parameters of the SSH transport layer.","properties":{"key-exchange":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_key-exchange"},"encryption":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_encryption"},"host-key":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_host-key"},"mac":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_mac"}},"xml":{"name":"transport-params","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_host-key":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_host-key","type":"object","description":"Parameters regarding host key.","properties":{"host-key-alg":{"type":"array","items":{"type":"string","enum":["ssh-dss","ssh-rsa","rsa-sha2-256","rsa-sha2-512","spki-sign-rsa","spki-sign-dss","pgp-sign-rsa","pgp-sign-dss","null","ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ecdsa-sha2-1.3.132.0.1","ecdsa-sha2-1.2.840.10045.3.1.1","ecdsa-sha2-1.3.132.0.33","ecdsa-sha2-1.3.132.0.26","ecdsa-sha2-1.3.132.0.27","ecdsa-sha2-1.3.132.0.16","ecdsa-sha2-1.3.132.0.36","ecdsa-sha2-1.3.132.0.37","ecdsa-sha2-1.3.132.0.38","x509v3-ssh-dss","x509v3-ssh-rsa","x509v3-rsa2048-sha256","x509v3-ecdsa-sha2-nistp256","x509v3-ecdsa-sha2-nistp384","x509v3-ecdsa-sha2-nistp521","x509v3-ecdsa-sha2-1.3.132.0.1","x509v3-ecdsa-sha2-1.2.840.10045.3.1.1","x509v3-ecdsa-sha2-1.3.132.0.33","x509v3-ecdsa-sha2-1.3.132.0.26","x509v3-ecdsa-sha2-1.3.132.0.27","x509v3-ecdsa-sha2-1.3.132.0.16","x509v3-ecdsa-sha2-1.3.132.0.36","x509v3-ecdsa-sha2-1.3.132.0.37","x509v3-ecdsa-sha2-1.3.132.0.38","ssh-ed25519","ssh-ed448"],"example":"ssh-dss"},"description":"Acceptable host key algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable host key algorithms are\nimplementation-defined."}},"xml":{"name":"host-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_key-exchange":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_key-exchange","type":"object","description":"Parameters regarding key exchange.","properties":{"key-exchange-alg":{"type":"array","items":{"type":"string","enum":["diffie-hellman-group-exchange-sha1","diffie-hellman-group-exchange-sha256","diffie-hellman-group1-sha1","diffie-hellman-group14-sha1","diffie-hellman-group14-sha256","diffie-hellman-group15-sha512","diffie-hellman-group16-sha512","diffie-hellman-group17-sha512","diffie-hellman-group18-sha512","ecdh-sha2-nistp256","ecdh-sha2-nistp384","ecdh-sha2-nistp521","ecdh-sha2-1.3.132.0.1","ecdh-sha2-1.2.840.10045.3.1.1","ecdh-sha2-1.3.132.0.33","ecdh-sha2-1.3.132.0.26","ecdh-sha2-1.3.132.0.27","ecdh-sha2-1.3.132.0.16","ecdh-sha2-1.3.132.0.36","ecdh-sha2-1.3.132.0.37","ecdh-sha2-1.3.132.0.38","ecmqv-sha2","gss-group1-sha1-nistp256","gss-group1-sha1-nistp384","gss-group1-sha1-nistp521","gss-group1-sha1-1.3.132.0.1","gss-group1-sha1-1.2.840.10045.3.1.1","gss-group1-sha1-1.3.132.0.33","gss-group1-sha1-1.3.132.0.26","gss-group1-sha1-1.3.132.0.27","gss-group1-sha1-1.3.132.0.16","gss-group1-sha1-1.3.132.0.36","gss-group1-sha1-1.3.132.0.37","gss-group1-sha1-1.3.132.0.38","gss-group14-sha1-nistp256","gss-group14-sha1-nistp384","gss-group14-sha1-nistp521","gss-group14-sha1-1.3.132.0.1","gss-group14-sha1-1.2.840.10045.3.1.1","gss-group14-sha1-1.3.132.0.33","gss-group14-sha1-1.3.132.0.26","gss-group14-sha1-1.3.132.0.27","gss-group14-sha1-1.3.132.0.16","gss-group14-sha1-1.3.132.0.36","gss-group14-sha1-1.3.132.0.37","gss-group14-sha1-1.3.132.0.38","gss-gex-sha1-nistp256","gss-gex-sha1-nistp384","gss-gex-sha1-nistp521","gss-gex-sha1-1.3.132.0.1","gss-gex-sha1-1.2.840.10045.3.1.1","gss-gex-sha1-1.3.132.0.33","gss-gex-sha1-1.3.132.0.26","gss-gex-sha1-1.3.132.0.27","gss-gex-sha1-1.3.132.0.16","gss-gex-sha1-1.3.132.0.36","gss-gex-sha1-1.3.132.0.37","gss-gex-sha1-1.3.132.0.38","gss-","rsa1024-sha1","rsa2048-sha256","ext-info-s","ext-info-c","gss-group14-sha256-nistp256","gss-group14-sha256-nistp384","gss-group14-sha256-nistp521","gss-group14-sha256-1.3.132.0.1","gss-group14-sha256-1.2.840.10045.3.1.1","gss-group14-sha256-1.3.132.0.33","gss-group14-sha256-1.3.132.0.26","gss-group14-sha256-1.3.132.0.27","gss-group14-sha256-1.3.132.0.16","gss-group14-sha256-1.3.132.0.36","gss-group14-sha256-1.3.132.0.37","gss-group14-sha256-1.3.132.0.38","gss-group15-sha512-nistp256","gss-group15-sha512-nistp384","gss-group15-sha512-nistp521","gss-group15-sha512-1.3.132.0.1","gss-group15-sha512-1.2.840.10045.3.1.1","gss-group15-sha512-1.3.132.0.33","gss-group15-sha512-1.3.132.0.26","gss-group15-sha512-1.3.132.0.27","gss-group15-sha512-1.3.132.0.16","gss-group15-sha512-1.3.132.0.36","gss-group15-sha512-1.3.132.0.37","gss-group15-sha512-1.3.132.0.38","gss-group16-sha512-nistp256","gss-group16-sha512-nistp384","gss-group16-sha512-nistp521","gss-group16-sha512-1.3.132.0.1","gss-group16-sha512-1.2.840.10045.3.1.1","gss-group16-sha512-1.3.132.0.33","gss-group16-sha512-1.3.132.0.26","gss-group16-sha512-1.3.132.0.27","gss-group16-sha512-1.3.132.0.16","gss-group16-sha512-1.3.132.0.36","gss-group16-sha512-1.3.132.0.37","gss-group16-sha512-1.3.132.0.38","gss-group17-sha512-nistp256","gss-group17-sha512-nistp384","gss-group17-sha512-nistp521","gss-group17-sha512-1.3.132.0.1","gss-group17-sha512-1.2.840.10045.3.1.1","gss-group17-sha512-1.3.132.0.33","gss-group17-sha512-1.3.132.0.26","gss-group17-sha512-1.3.132.0.27","gss-group17-sha512-1.3.132.0.16","gss-group17-sha512-1.3.132.0.36","gss-group17-sha512-1.3.132.0.37","gss-group17-sha512-1.3.132.0.38","gss-group18-sha512-nistp256","gss-group18-sha512-nistp384","gss-group18-sha512-nistp521","gss-group18-sha512-1.3.132.0.1","gss-group18-sha512-1.2.840.10045.3.1.1","gss-group18-sha512-1.3.132.0.33","gss-group18-sha512-1.3.132.0.26","gss-group18-sha512-1.3.132.0.27","gss-group18-sha512-1.3.132.0.16","gss-group18-sha512-1.3.132.0.36","gss-group18-sha512-1.3.132.0.37","gss-group18-sha512-1.3.132.0.38","gss-nistp256-sha256-nistp256","gss-nistp256-sha256-nistp384","gss-nistp256-sha256-nistp521","gss-nistp256-sha256-1.3.132.0.1","gss-nistp256-sha256-1.2.840.10045.3.1.1","gss-nistp256-sha256-1.3.132.0.33","gss-nistp256-sha256-1.3.132.0.26","gss-nistp256-sha256-1.3.132.0.27","gss-nistp256-sha256-1.3.132.0.16","gss-nistp256-sha256-1.3.132.0.36","gss-nistp256-sha256-1.3.132.0.37","gss-nistp256-sha256-1.3.132.0.38","gss-nistp384-sha384-nistp256","gss-nistp384-sha384-nistp384","gss-nistp384-sha384-nistp521","gss-nistp384-sha384-1.3.132.0.1","gss-nistp384-sha384-1.2.840.10045.3.1.1","gss-nistp384-sha384-1.3.132.0.33","gss-nistp384-sha384-1.3.132.0.26","gss-nistp384-sha384-1.3.132.0.27","gss-nistp384-sha384-1.3.132.0.16","gss-nistp384-sha384-1.3.132.0.36","gss-nistp384-sha384-1.3.132.0.37","gss-nistp384-sha384-1.3.132.0.38","gss-nistp521-sha512-nistp256","gss-nistp521-sha512-nistp384","gss-nistp521-sha512-nistp521","gss-nistp521-sha512-1.3.132.0.1","gss-nistp521-sha512-1.2.840.10045.3.1.1","gss-nistp521-sha512-1.3.132.0.33","gss-nistp521-sha512-1.3.132.0.26","gss-nistp521-sha512-1.3.132.0.27","gss-nistp521-sha512-1.3.132.0.16","gss-nistp521-sha512-1.3.132.0.36","gss-nistp521-sha512-1.3.132.0.37","gss-nistp521-sha512-1.3.132.0.38","gss-curve25519-sha256-nistp256","gss-curve25519-sha256-nistp384","gss-curve25519-sha256-nistp521","gss-curve25519-sha256-1.3.132.0.1","gss-curve25519-sha256-1.2.840.10045.3.1.1","gss-curve25519-sha256-1.3.132.0.33","gss-curve25519-sha256-1.3.132.0.26","gss-curve25519-sha256-1.3.132.0.27","gss-curve25519-sha256-1.3.132.0.16","gss-curve25519-sha256-1.3.132.0.36","gss-curve25519-sha256-1.3.132.0.37","gss-curve25519-sha256-1.3.132.0.38","gss-curve448-sha512-nistp256","gss-curve448-sha512-nistp384","gss-curve448-sha512-nistp521","gss-curve448-sha512-1.3.132.0.1","gss-curve448-sha512-1.2.840.10045.3.1.1","gss-curve448-sha512-1.3.132.0.33","gss-curve448-sha512-1.3.132.0.26","gss-curve448-sha512-1.3.132.0.27","gss-curve448-sha512-1.3.132.0.16","gss-curve448-sha512-1.3.132.0.36","gss-curve448-sha512-1.3.132.0.37","gss-curve448-sha512-1.3.132.0.38","curve25519-sha256","curve448-sha512","sntrup761x25519-sha512","mlkem768nistp256-sha256","mlkem1024nistp384-sha384","mlkem768x25519-sha256"],"example":"diffie-hellman-group-exchange-sha1"},"description":"Acceptable key exchange algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable key exchange algorithms are\nimplementation-defined."}},"xml":{"name":"key-exchange","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_encryption":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_encryption","type":"object","description":"Parameters regarding encryption.","properties":{"encryption-alg":{"type":"array","items":{"type":"string","enum":["3des-cbc","blowfish-cbc","twofish256-cbc","twofish-cbc","twofish192-cbc","twofish128-cbc","aes256-cbc","aes192-cbc","aes128-cbc","serpent256-cbc","serpent192-cbc","serpent128-cbc","arcfour","idea-cbc","cast128-cbc","none","des-cbc","arcfour128","arcfour256","aes128-ctr","aes192-ctr","aes256-ctr","3des-ctr","blowfish-ctr","twofish128-ctr","twofish192-ctr","twofish256-ctr","serpent128-ctr","serpent192-ctr","serpent256-ctr","idea-ctr","cast128-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","chacha20-poly1305"],"example":"3des-cbc"},"description":"Acceptable encryption algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable encryption algorithms are\nimplementation-defined."}},"xml":{"name":"encryption","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_mac":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_mac","type":"object","description":"Parameters regarding message authentication code (MAC).","properties":{"mac-alg":{"type":"array","items":{"type":"string","enum":["hmac-sha1","hmac-sha1-96","hmac-md5","hmac-md5-96","none","AEAD_AES_128_GCM","AEAD_AES_256_GCM","hmac-sha2-256","hmac-sha2-512"],"example":"hmac-sha1"},"description":"Acceptable MAC algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable MAC algorithms are\nimplementation-defined."}},"xml":{"name":"mac","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_keepalives":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_ssh-client-parameters_keepalives","type":"object","description":"Configures the keepalive policy to proactively test\nthe aliveness of the SSH server.  An unresponsive SSH\nserver is dropped after approximately max-wait *\nmax-attempts seconds.  Per Section 4 of RFC 4254,\nthe SSH client SHOULD send an SSH_MSG_GLOBAL_REQUEST\nmessage with a purposely nonexistent 'request name'\nvalue (e.g., keepalive@example.com) and the 'want reply'\nvalue set to '1'.","properties":{"max-attempts":{"description":"Sets the maximum number of sequential keepalive\nmessages that can fail to obtain a response from\nthe SSH server before assuming the SSH server is\nno longer alive.","type":"integer","format":"int32","default":3,"example":0},"max-wait":{"description":"Sets the amount of time in seconds after which an\nSSH-level message will be sent to test the aliveness\nof the SSH server if no data has been received from the\nSSH server.","type":"integer","format":"int32","default":30,"example":1}},"xml":{"name":"keepalives","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_netconf-client-parameters":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_endpoints_endpoint_ssh_netconf-client-parameters","type":"object","description":"NETCONF-level client parameters to initiate\na NETCONF over SSH connection.","properties":{},"xml":{"name":"netconf-client-parameters","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_connection-type":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_connection-type","type":"object","description":"Indicates the NETCONF client's preference for how the\nNETCONF connection is maintained.","properties":{"persistent":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_initiate_netconf-server_connection-type_persistent"}},"xml":{"name":"connection-type","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_connection-type_persistent":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_connection-type_persistent","type":"object","description":"Maintain a persistent connection to the NETCONF\nserver.  If the connection goes down, immediately\nstart trying to reconnect to the NETCONF server,\nusing the reconnection strategy.\n\nThis connection type minimizes any NETCONF server\nto NETCONF client data-transfer delay, albeit at\nthe expense of holding resources longer.","properties":{},"xml":{"name":"persistent","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_initiate_netconf-server_reconnect-strategy":{"title":"ietf-netconf-client_netconf-client_initiate_netconf-server_reconnect-strategy","type":"object","description":"The reconnection strategy directs how a NETCONF client\nreconnects to a NETCONF server, after discovering its\nconnection to the server has dropped, even if due to a\nreboot.  The NETCONF client starts with the specified\nendpoint and tries to connect to it max-attempts times\nbefore trying the next endpoint in the list (round\nrobin).","properties":{"max-attempts":{"description":"Specifies the number times the NETCONF client tries\nto connect to a specific endpoint before moving on\nto the next endpoint in the list (round robin).","type":"integer","format":"int32","default":3,"example":1},"start-with":{"description":"Specifies which of the NETCONF server's endpoints\nthe NETCONF client should start with when trying\nto connect to the NETCONF server.","type":"string","enum":["first-listed","last-connected","random-selection"],"default":"first-listed","example":"first-listed"},"max-wait":{"description":"Specifies the amount of time in seconds after which,\nif the connection is not established, an endpoint\nconnection attempt is considered unsuccessful.","type":"integer","format":"int32","default":5,"example":1}},"xml":{"name":"reconnect-strategy","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen":{"title":"ietf-netconf-client_netconf-client_listen","type":"object","description":"Configures the client to accept call-home TCP connections.","properties":{"endpoints":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints"},"idle-timeout":{"description":"Specifies the maximum number of seconds that a NETCONF\nsession may remain idle. A NETCONF session will be\ndropped if it is idle for an interval longer than this\nnumber of seconds.  If set to zero, then the server\nwill never drop a session because it is idle.","type":"integer","format":"int32","default":180,"example":0}},"xml":{"name":"listen","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints":{"title":"ietf-netconf-client_netconf-client_listen_endpoints","type":"object","description":"Container for a list of endpoints.","properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint"},"description":"List of endpoints to listen for NETCONF connections.","example":[{"name":"Some name"}],"minItems":1}},"required":["endpoint"],"xml":{"name":"endpoints","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint","type":"object","description":"List of endpoints to listen for NETCONF connections.","properties":{"name":{"description":"An arbitrary name for the NETCONF listen endpoint.","type":"string","example":"Some name"},"ssh":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh"}},"xml":{"name":"endpoint","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh","type":"object","description":"TCP, SSH, and NETCONF configuration to listen\nfor NETCONF over SSH Call Home connections.","properties":{"tcp-server-parameters":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_tcp-server-parameters"},"ssh-client-parameters":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters"},"netconf-client-parameters":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_netconf-client-parameters"}},"xml":{"name":"ssh","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_tcp-server-parameters":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_tcp-server-parameters","type":"object","description":"TCP-level server parameters to listen for\nNETCONF over SSH Call Home connections.","properties":{"local-bind":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_tcp-server-parameters_local-bind"},"description":"A list of bind (listen) points for this server\ninstance.  A server instance may have multiple\nbind points to support, e.g., the same port in\ndifferent address families or different ports\nin the same address family.","example":[{"local-port":0,"local-address":"0.0.0.0"}],"minItems":1},"keepalives":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_tcp-server-parameters_keepalives"}},"required":["local-bind"],"xml":{"name":"tcp-server-parameters","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_tcp-server-parameters_local-bind":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_tcp-server-parameters_local-bind","type":"object","description":"A list of bind (listen) points for this server\ninstance.  A server instance may have multiple\nbind points to support, e.g., the same port in\ndifferent address families or different ports\nin the same address family.","properties":{"local-port":{"description":"The NETCONF client will listen on the IANA-\nassigned well-known port for 'netconf-ch-ssh'\n(4334) if no value is specified.","type":"integer","format":"int32","default":4334,"example":0},"local-address":{"description":"The local IP address to listen on for incoming\nTCP client connections.  To configure listening\non all IPv4 addresses, the value must be '0.0.0.0'\n(INADDR_ANY).  To configure listening on all IPv6\naddresses, the value must be '::' (INADDR6_ANY).","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"local-bind","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_tcp-server-parameters_keepalives":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_tcp-server-parameters_keepalives","type":"object","description":"An 'if-feature' statement so that implementations\ncan choose to support TCP server keepalives.","properties":{"idle-time":{"description":"Sets the amount of time after which a TCP-level probe\nmessage will be sent to test the aliveness of the TCP\npeer if no data has been received from the TCP peer.\nTwo hours (7200 seconds) is a safe value, per Section\n3.8.4 of RFC 9293.","type":"integer","format":"int32","default":7200,"example":1},"probe-interval":{"description":"Sets the time interval between failed probes.  The\ninterval SHOULD be significantly longer than one second\nin order to avoid harm on a congested link.","type":"integer","format":"int32","default":75,"example":1},"max-probes":{"description":"Sets the maximum number of sequential keepalive probes\nthat can fail to obtain a response from the TCP peer\nbefore assuming the TCP peer is no longer alive.","type":"integer","format":"int32","default":9,"example":1}},"xml":{"name":"keepalives","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters","type":"object","description":"SSH-level client parameters to listen for\nNETCONF over SSH Call Home connections.","properties":{"server-authentication":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication"},"transport-params":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params"},"keepalives":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_keepalives"},"client-identity":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity"}},"xml":{"name":"ssh-client-parameters","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity","type":"object","description":"The username and authentication methods for the client.\nThe authentication methods are unordered.  Clients may\ninitially send any configured method or, per Section 5.2 of\nRFC 4252, send the 'none' method to prompt the server\nto provide a list of productive methods.  Whenever a\nchoice amongst methods arises, implementations SHOULD\nuse a default ordering that prioritizes automation\nover human interaction.","properties":{"password":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_password"},"certificate":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate"},"public-key":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_public-key"},"hostbased":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_hostbased"},"username":{"description":"The username of this user.  This will be the username\nused, for instance, to log into an SSH server.","type":"string","example":"Some username"}},"xml":{"name":"client-identity","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_public-key":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_public-key","type":"object","description":"A locally defined or referenced asymmetric key\npair to be used for client identification.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_public-key_inline-definition"}},"required":["inline-definition"],"xml":{"name":"public-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_public-key_inline-definition":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_public-key_inline-definition","type":"object","description":"A container to hold the local key definition.","properties":{"cleartext-private-key":{"description":"The value of the binary key.  The key's value is\ninterpreted by the 'private-key-format' field.","type":"string","format":"byte"},"private-key-format":{"description":"Identifies the private key's format.  Implementations SHOULD\nensure that the incoming private key value is encoded in the\nspecified format.\n\nFor encrypted keys, the value is the decrypted key's\nformat (i.e., the 'encrypted-value-format' conveys the\nencrypted key's format).","type":"string","enum":["private-key-format","one-asymmetric-key-format","ec-private-key-format","rsa-private-key-format"],"example":"private-key-format"},"public-key":{"description":"The binary value of the public key.  The interpretation\nof the value is defined by the 'public-key-format' field.","type":"string","format":"byte"},"public-key-format":{"description":"Identifies the public key's format.  Implementations SHOULD\nensure that the incoming public key value is encoded in the\nspecified format.","type":"string","enum":["public-key-format","subject-public-key-info-format","ssh-public-key-format"],"example":"public-key-format"}},"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_password":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_password","type":"object","description":"A password to be used to authenticate the client's\nidentity.","properties":{"cleartext-password":{"description":"The cleartext value of the password.","type":"string","example":"Some cleartext-password"}},"xml":{"name":"password","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_hostbased":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_hostbased","type":"object","description":"A locally defined or referenced asymmetric key\npair to be used for host identification.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_hostbased_inline-definition"}},"required":["inline-definition"],"xml":{"name":"hostbased","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_hostbased_inline-definition":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_hostbased_inline-definition","type":"object","description":"A container to hold the local key definition.","properties":{"cleartext-private-key":{"description":"The value of the binary key.  The key's value is\ninterpreted by the 'private-key-format' field.","type":"string","format":"byte"},"private-key-format":{"description":"Identifies the private key's format.  Implementations SHOULD\nensure that the incoming private key value is encoded in the\nspecified format.\n\nFor encrypted keys, the value is the decrypted key's\nformat (i.e., the 'encrypted-value-format' conveys the\nencrypted key's format).","type":"string","enum":["private-key-format","one-asymmetric-key-format","ec-private-key-format","rsa-private-key-format"],"example":"private-key-format"},"public-key":{"description":"The binary value of the public key.  The interpretation\nof the value is defined by the 'public-key-format' field.","type":"string","format":"byte"},"public-key-format":{"description":"Identifies the public key's format.  Implementations SHOULD\nensure that the incoming public key value is encoded in the\nspecified format.","type":"string","enum":["public-key-format","subject-public-key-info-format","ssh-public-key-format"],"example":"public-key-format"}},"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate","type":"object","description":"A locally defined or referenced certificate\nto be used for client identification.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate_inline-definition"}},"required":["inline-definition"],"xml":{"name":"certificate","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate_inline-definition":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate_inline-definition","type":"object","description":"A container to hold the local key definition.","properties":{"cleartext-private-key":{"description":"The value of the binary key.  The key's value is\ninterpreted by the 'private-key-format' field.","type":"string","format":"byte"},"private-key-format":{"description":"Identifies the private key's format.  Implementations SHOULD\nensure that the incoming private key value is encoded in the\nspecified format.\n\nFor encrypted keys, the value is the decrypted key's\nformat (i.e., the 'encrypted-value-format' conveys the\nencrypted key's format).","type":"string","enum":["private-key-format","one-asymmetric-key-format","ec-private-key-format","rsa-private-key-format"],"example":"private-key-format"},"public-key":{"description":"The binary value of the public key.  The interpretation\nof the value is defined by the 'public-key-format' field.","type":"string","format":"byte"},"cert-data":{"description":"The binary certificate data for this certificate.","type":"string","format":"byte"},"public-key-format":{"description":"Identifies the public key's format.  Implementations SHOULD\nensure that the incoming public key value is encoded in the\nspecified format.","type":"string","enum":["public-key-format","subject-public-key-info-format","ssh-public-key-format"],"example":"public-key-format"}},"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate_inline-definition_generate-csr_input":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate_inline-definition_generate-csr_input","type":"object","properties":{"csr-format":{"description":"Specifies the format for the returned certificate.","type":"string","enum":["csr-format","p10-csr-format"],"example":"csr-format"},"csr-info":{"description":"A CertificationRequestInfo structure, as defined in\nRFC 2986.\n\nEnables the client to provide a fully populated\nCertificationRequestInfo structure that the server\nonly needs to sign in order to generate the complete\nCertificationRequest structure to return in the\n'output'.\n\nThe 'AlgorithmIdentifier' field contained inside\nthe 'SubjectPublicKeyInfo' field MUST be one known\nto be supported by the device.","type":"string","format":"byte"}},"required":["csr-format","csr-info"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate_inline-definition_generate-csr_output":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_client-identity_certificate_inline-definition_generate-csr_output","type":"object","properties":{"p10-csr":{"description":"A CertificationRequest, as defined in RFC 2986.","type":"string","format":"byte"}},"xml":{"name":"output","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication","type":"object","description":"Specifies how the SSH client can authenticate SSH servers.\nAny combination of authentication methods is additive and\nunordered.","properties":{"ssh-host-keys":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys"},"ee-certs":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs"},"ca-certs":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs"}},"xml":{"name":"server-authentication","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys","type":"object","description":"A bag of SSH host keys used by the SSH client to\nauthenticate SSH server host keys.  A server host key\nis authenticated if it is an exact match to a\nconfigured SSH host key.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys_inline-definition"}},"xml":{"name":"ssh-host-keys","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys_inline-definition":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys_inline-definition","type":"object","description":"A container to hold local public key definitions.","properties":{"public-key":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys_inline-definition_public-key"},"description":"A public key definition."}},"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys_inline-definition_public-key":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ssh-host-keys_inline-definition_public-key","type":"object","description":"A public key definition.","properties":{"name":{"description":"An arbitrary name for this public key.","type":"string","example":"Some name"},"public-key":{"description":"The binary value of the public key.  The interpretation\nof the value is defined by the 'public-key-format' field.","type":"string","format":"byte"},"public-key-format":{"description":"Identifies the public key's format.  Implementations SHOULD\nensure that the incoming public key value is encoded in the\nspecified format.","type":"string","enum":["public-key-format","subject-public-key-info-format","ssh-public-key-format"],"example":"public-key-format"}},"required":["public-key","public-key-format"],"xml":{"name":"public-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs","type":"object","description":"A set of Certification Authority (CA) certificates used by\nthe SSH client to authenticate SSH servers.  A server\nis authenticated if its certificate has a valid chain\nof trust to a configured CA certificate.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs_inline-definition"}},"xml":{"name":"ca-certs","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs_inline-definition":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs_inline-definition","type":"object","description":"A container for locally configured trust anchor\ncertificates.","properties":{"certificate":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs_inline-definition_certificate"},"description":"A trust anchor certificate or chain of certificates.","example":[{"name":"Some name"}],"minItems":1}},"required":["certificate"],"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs_inline-definition_certificate":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ca-certs_inline-definition_certificate","type":"object","description":"A trust anchor certificate or chain of certificates.","properties":{"name":{"description":"An arbitrary name for this certificate.","type":"string","example":"Some name"},"cert-data":{"description":"The binary certificate data for this certificate.","type":"string","format":"byte"}},"required":["cert-data"],"xml":{"name":"certificate","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs","type":"object","description":"A set of end-entity (EE) certificates used by the SSH\nclient to authenticate SSH servers.  A server is\nauthenticated if its certificate is an exact match to a\nconfigured end-entity certificate.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs_inline-definition"}},"xml":{"name":"ee-certs","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs_inline-definition":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs_inline-definition","type":"object","description":"A container for locally configured trust anchor\ncertificates.","properties":{"certificate":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs_inline-definition_certificate"},"description":"A trust anchor certificate or chain of certificates.","example":[{"name":"Some name"}],"minItems":1}},"required":["certificate"],"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs_inline-definition_certificate":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_server-authentication_ee-certs_inline-definition_certificate","type":"object","description":"A trust anchor certificate or chain of certificates.","properties":{"name":{"description":"An arbitrary name for this certificate.","type":"string","example":"Some name"},"cert-data":{"description":"The binary certificate data for this certificate.","type":"string","format":"byte"}},"required":["cert-data"],"xml":{"name":"certificate","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params","type":"object","description":"Configurable parameters of the SSH transport layer.","properties":{"key-exchange":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_key-exchange"},"encryption":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_encryption"},"host-key":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_host-key"},"mac":{"$ref":"#/components/schemas/ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_mac"}},"xml":{"name":"transport-params","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_host-key":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_host-key","type":"object","description":"Parameters regarding host key.","properties":{"host-key-alg":{"type":"array","items":{"type":"string","enum":["ssh-dss","ssh-rsa","rsa-sha2-256","rsa-sha2-512","spki-sign-rsa","spki-sign-dss","pgp-sign-rsa","pgp-sign-dss","null","ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ecdsa-sha2-1.3.132.0.1","ecdsa-sha2-1.2.840.10045.3.1.1","ecdsa-sha2-1.3.132.0.33","ecdsa-sha2-1.3.132.0.26","ecdsa-sha2-1.3.132.0.27","ecdsa-sha2-1.3.132.0.16","ecdsa-sha2-1.3.132.0.36","ecdsa-sha2-1.3.132.0.37","ecdsa-sha2-1.3.132.0.38","x509v3-ssh-dss","x509v3-ssh-rsa","x509v3-rsa2048-sha256","x509v3-ecdsa-sha2-nistp256","x509v3-ecdsa-sha2-nistp384","x509v3-ecdsa-sha2-nistp521","x509v3-ecdsa-sha2-1.3.132.0.1","x509v3-ecdsa-sha2-1.2.840.10045.3.1.1","x509v3-ecdsa-sha2-1.3.132.0.33","x509v3-ecdsa-sha2-1.3.132.0.26","x509v3-ecdsa-sha2-1.3.132.0.27","x509v3-ecdsa-sha2-1.3.132.0.16","x509v3-ecdsa-sha2-1.3.132.0.36","x509v3-ecdsa-sha2-1.3.132.0.37","x509v3-ecdsa-sha2-1.3.132.0.38","ssh-ed25519","ssh-ed448"],"example":"ssh-dss"},"description":"Acceptable host key algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable host key algorithms are\nimplementation-defined."}},"xml":{"name":"host-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_key-exchange":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_key-exchange","type":"object","description":"Parameters regarding key exchange.","properties":{"key-exchange-alg":{"type":"array","items":{"type":"string","enum":["diffie-hellman-group-exchange-sha1","diffie-hellman-group-exchange-sha256","diffie-hellman-group1-sha1","diffie-hellman-group14-sha1","diffie-hellman-group14-sha256","diffie-hellman-group15-sha512","diffie-hellman-group16-sha512","diffie-hellman-group17-sha512","diffie-hellman-group18-sha512","ecdh-sha2-nistp256","ecdh-sha2-nistp384","ecdh-sha2-nistp521","ecdh-sha2-1.3.132.0.1","ecdh-sha2-1.2.840.10045.3.1.1","ecdh-sha2-1.3.132.0.33","ecdh-sha2-1.3.132.0.26","ecdh-sha2-1.3.132.0.27","ecdh-sha2-1.3.132.0.16","ecdh-sha2-1.3.132.0.36","ecdh-sha2-1.3.132.0.37","ecdh-sha2-1.3.132.0.38","ecmqv-sha2","gss-group1-sha1-nistp256","gss-group1-sha1-nistp384","gss-group1-sha1-nistp521","gss-group1-sha1-1.3.132.0.1","gss-group1-sha1-1.2.840.10045.3.1.1","gss-group1-sha1-1.3.132.0.33","gss-group1-sha1-1.3.132.0.26","gss-group1-sha1-1.3.132.0.27","gss-group1-sha1-1.3.132.0.16","gss-group1-sha1-1.3.132.0.36","gss-group1-sha1-1.3.132.0.37","gss-group1-sha1-1.3.132.0.38","gss-group14-sha1-nistp256","gss-group14-sha1-nistp384","gss-group14-sha1-nistp521","gss-group14-sha1-1.3.132.0.1","gss-group14-sha1-1.2.840.10045.3.1.1","gss-group14-sha1-1.3.132.0.33","gss-group14-sha1-1.3.132.0.26","gss-group14-sha1-1.3.132.0.27","gss-group14-sha1-1.3.132.0.16","gss-group14-sha1-1.3.132.0.36","gss-group14-sha1-1.3.132.0.37","gss-group14-sha1-1.3.132.0.38","gss-gex-sha1-nistp256","gss-gex-sha1-nistp384","gss-gex-sha1-nistp521","gss-gex-sha1-1.3.132.0.1","gss-gex-sha1-1.2.840.10045.3.1.1","gss-gex-sha1-1.3.132.0.33","gss-gex-sha1-1.3.132.0.26","gss-gex-sha1-1.3.132.0.27","gss-gex-sha1-1.3.132.0.16","gss-gex-sha1-1.3.132.0.36","gss-gex-sha1-1.3.132.0.37","gss-gex-sha1-1.3.132.0.38","gss-","rsa1024-sha1","rsa2048-sha256","ext-info-s","ext-info-c","gss-group14-sha256-nistp256","gss-group14-sha256-nistp384","gss-group14-sha256-nistp521","gss-group14-sha256-1.3.132.0.1","gss-group14-sha256-1.2.840.10045.3.1.1","gss-group14-sha256-1.3.132.0.33","gss-group14-sha256-1.3.132.0.26","gss-group14-sha256-1.3.132.0.27","gss-group14-sha256-1.3.132.0.16","gss-group14-sha256-1.3.132.0.36","gss-group14-sha256-1.3.132.0.37","gss-group14-sha256-1.3.132.0.38","gss-group15-sha512-nistp256","gss-group15-sha512-nistp384","gss-group15-sha512-nistp521","gss-group15-sha512-1.3.132.0.1","gss-group15-sha512-1.2.840.10045.3.1.1","gss-group15-sha512-1.3.132.0.33","gss-group15-sha512-1.3.132.0.26","gss-group15-sha512-1.3.132.0.27","gss-group15-sha512-1.3.132.0.16","gss-group15-sha512-1.3.132.0.36","gss-group15-sha512-1.3.132.0.37","gss-group15-sha512-1.3.132.0.38","gss-group16-sha512-nistp256","gss-group16-sha512-nistp384","gss-group16-sha512-nistp521","gss-group16-sha512-1.3.132.0.1","gss-group16-sha512-1.2.840.10045.3.1.1","gss-group16-sha512-1.3.132.0.33","gss-group16-sha512-1.3.132.0.26","gss-group16-sha512-1.3.132.0.27","gss-group16-sha512-1.3.132.0.16","gss-group16-sha512-1.3.132.0.36","gss-group16-sha512-1.3.132.0.37","gss-group16-sha512-1.3.132.0.38","gss-group17-sha512-nistp256","gss-group17-sha512-nistp384","gss-group17-sha512-nistp521","gss-group17-sha512-1.3.132.0.1","gss-group17-sha512-1.2.840.10045.3.1.1","gss-group17-sha512-1.3.132.0.33","gss-group17-sha512-1.3.132.0.26","gss-group17-sha512-1.3.132.0.27","gss-group17-sha512-1.3.132.0.16","gss-group17-sha512-1.3.132.0.36","gss-group17-sha512-1.3.132.0.37","gss-group17-sha512-1.3.132.0.38","gss-group18-sha512-nistp256","gss-group18-sha512-nistp384","gss-group18-sha512-nistp521","gss-group18-sha512-1.3.132.0.1","gss-group18-sha512-1.2.840.10045.3.1.1","gss-group18-sha512-1.3.132.0.33","gss-group18-sha512-1.3.132.0.26","gss-group18-sha512-1.3.132.0.27","gss-group18-sha512-1.3.132.0.16","gss-group18-sha512-1.3.132.0.36","gss-group18-sha512-1.3.132.0.37","gss-group18-sha512-1.3.132.0.38","gss-nistp256-sha256-nistp256","gss-nistp256-sha256-nistp384","gss-nistp256-sha256-nistp521","gss-nistp256-sha256-1.3.132.0.1","gss-nistp256-sha256-1.2.840.10045.3.1.1","gss-nistp256-sha256-1.3.132.0.33","gss-nistp256-sha256-1.3.132.0.26","gss-nistp256-sha256-1.3.132.0.27","gss-nistp256-sha256-1.3.132.0.16","gss-nistp256-sha256-1.3.132.0.36","gss-nistp256-sha256-1.3.132.0.37","gss-nistp256-sha256-1.3.132.0.38","gss-nistp384-sha384-nistp256","gss-nistp384-sha384-nistp384","gss-nistp384-sha384-nistp521","gss-nistp384-sha384-1.3.132.0.1","gss-nistp384-sha384-1.2.840.10045.3.1.1","gss-nistp384-sha384-1.3.132.0.33","gss-nistp384-sha384-1.3.132.0.26","gss-nistp384-sha384-1.3.132.0.27","gss-nistp384-sha384-1.3.132.0.16","gss-nistp384-sha384-1.3.132.0.36","gss-nistp384-sha384-1.3.132.0.37","gss-nistp384-sha384-1.3.132.0.38","gss-nistp521-sha512-nistp256","gss-nistp521-sha512-nistp384","gss-nistp521-sha512-nistp521","gss-nistp521-sha512-1.3.132.0.1","gss-nistp521-sha512-1.2.840.10045.3.1.1","gss-nistp521-sha512-1.3.132.0.33","gss-nistp521-sha512-1.3.132.0.26","gss-nistp521-sha512-1.3.132.0.27","gss-nistp521-sha512-1.3.132.0.16","gss-nistp521-sha512-1.3.132.0.36","gss-nistp521-sha512-1.3.132.0.37","gss-nistp521-sha512-1.3.132.0.38","gss-curve25519-sha256-nistp256","gss-curve25519-sha256-nistp384","gss-curve25519-sha256-nistp521","gss-curve25519-sha256-1.3.132.0.1","gss-curve25519-sha256-1.2.840.10045.3.1.1","gss-curve25519-sha256-1.3.132.0.33","gss-curve25519-sha256-1.3.132.0.26","gss-curve25519-sha256-1.3.132.0.27","gss-curve25519-sha256-1.3.132.0.16","gss-curve25519-sha256-1.3.132.0.36","gss-curve25519-sha256-1.3.132.0.37","gss-curve25519-sha256-1.3.132.0.38","gss-curve448-sha512-nistp256","gss-curve448-sha512-nistp384","gss-curve448-sha512-nistp521","gss-curve448-sha512-1.3.132.0.1","gss-curve448-sha512-1.2.840.10045.3.1.1","gss-curve448-sha512-1.3.132.0.33","gss-curve448-sha512-1.3.132.0.26","gss-curve448-sha512-1.3.132.0.27","gss-curve448-sha512-1.3.132.0.16","gss-curve448-sha512-1.3.132.0.36","gss-curve448-sha512-1.3.132.0.37","gss-curve448-sha512-1.3.132.0.38","curve25519-sha256","curve448-sha512","sntrup761x25519-sha512","mlkem768nistp256-sha256","mlkem1024nistp384-sha384","mlkem768x25519-sha256"],"example":"diffie-hellman-group-exchange-sha1"},"description":"Acceptable key exchange algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable key exchange algorithms are\nimplementation-defined."}},"xml":{"name":"key-exchange","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_encryption":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_encryption","type":"object","description":"Parameters regarding encryption.","properties":{"encryption-alg":{"type":"array","items":{"type":"string","enum":["3des-cbc","blowfish-cbc","twofish256-cbc","twofish-cbc","twofish192-cbc","twofish128-cbc","aes256-cbc","aes192-cbc","aes128-cbc","serpent256-cbc","serpent192-cbc","serpent128-cbc","arcfour","idea-cbc","cast128-cbc","none","des-cbc","arcfour128","arcfour256","aes128-ctr","aes192-ctr","aes256-ctr","3des-ctr","blowfish-ctr","twofish128-ctr","twofish192-ctr","twofish256-ctr","serpent128-ctr","serpent192-ctr","serpent256-ctr","idea-ctr","cast128-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","chacha20-poly1305"],"example":"3des-cbc"},"description":"Acceptable encryption algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable encryption algorithms are\nimplementation-defined."}},"xml":{"name":"encryption","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_mac":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_transport-params_mac","type":"object","description":"Parameters regarding message authentication code (MAC).","properties":{"mac-alg":{"type":"array","items":{"type":"string","enum":["hmac-sha1","hmac-sha1-96","hmac-md5","hmac-md5-96","none","AEAD_AES_128_GCM","AEAD_AES_256_GCM","hmac-sha2-256","hmac-sha2-512"],"example":"hmac-sha1"},"description":"Acceptable MAC algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable MAC algorithms are\nimplementation-defined."}},"xml":{"name":"mac","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_keepalives":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_ssh-client-parameters_keepalives","type":"object","description":"Configures the keepalive policy to proactively test\nthe aliveness of the SSH server.  An unresponsive SSH\nserver is dropped after approximately max-wait *\nmax-attempts seconds.  Per Section 4 of RFC 4254,\nthe SSH client SHOULD send an SSH_MSG_GLOBAL_REQUEST\nmessage with a purposely nonexistent 'request name'\nvalue (e.g., keepalive@example.com) and the 'want reply'\nvalue set to '1'.","properties":{"max-attempts":{"description":"Sets the maximum number of sequential keepalive\nmessages that can fail to obtain a response from\nthe SSH server before assuming the SSH server is\nno longer alive.","type":"integer","format":"int32","default":3,"example":0},"max-wait":{"description":"Sets the amount of time in seconds after which an\nSSH-level message will be sent to test the aliveness\nof the SSH server if no data has been received from the\nSSH server.","type":"integer","format":"int32","default":30,"example":1}},"xml":{"name":"keepalives","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_netconf-client-parameters":{"title":"ietf-netconf-client_netconf-client_listen_endpoints_endpoint_ssh_netconf-client-parameters","type":"object","description":"NETCONF-level client parameters to listen for\nNETCONF over SSH Call Home connections.","properties":{},"xml":{"name":"netconf-client-parameters","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-client"}},"ietf-netconf-monitoring_get-schema_input":{"title":"ietf-netconf-monitoring_get-schema_input","type":"object","properties":{"identifier":{"description":"Identifier for the schema list entry.","type":"string","example":"Some identifier"},"version":{"description":"Version of the schema requested.  If this parameter is not\npresent, and more than one version of the schema exists on\nthe server, a 'data-not-unique' error is returned, as\ndescribed above.","type":"string","example":"Some version"},"format":{"description":"The data modeling language of the schema.  If this\nparameter is not present, and more than one formats of\nthe schema exists on the server, a 'data-not-unique' error\nis returned, as described above.","type":"string","enum":["schema-format","rnc","xsd","yang","rng","yin"],"example":"schema-format"}},"required":["identifier"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"}},"ietf-netconf-monitoring_get-schema_output":{"title":"ietf-netconf-monitoring_get-schema_output","type":"object","properties":{"data":{"description":"Contains the schema content. (This is unknown data, need to be filled by user.)","example":{},"type":"object"}},"xml":{"name":"output","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"}},"ietf-netconf-monitoring_netconf-state":{"title":"ietf-netconf-monitoring_netconf-state","type":"object","description":"The netconf-state container is the root of the monitoring\ndata model.","properties":{"sessions":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_sessions"},"capabilities":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_capabilities"},"schemas":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_schemas"},"datastores":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_datastores"},"statistics":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_statistics"}},"xml":{"name":"netconf-state","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"}},"ietf-netconf-monitoring_netconf-state_capabilities":{"title":"ietf-netconf-monitoring_netconf-state_capabilities","type":"object","description":"Contains the list of NETCONF capabilities supported by the\nserver.","properties":{"capability":{"type":"array","items":{"type":"string","example":"Some capability"},"description":"List of NETCONF capabilities supported by the server."}},"xml":{"name":"capabilities","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"}},"ietf-netconf-monitoring_netconf-state_datastores":{"title":"ietf-netconf-monitoring_netconf-state_datastores","type":"object","description":"Contains the list of NETCONF configuration datastores.","properties":{"datastore":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_datastores_datastore"},"description":"List of NETCONF configuration datastores supported by\nthe NETCONF server and related information."}},"xml":{"name":"datastores","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"}},"ietf-netconf-monitoring_netconf-state_datastores_datastore":{"title":"ietf-netconf-monitoring_netconf-state_datastores_datastore","type":"object","description":"List of NETCONF configuration datastores supported by\nthe NETCONF server and related information.","properties":{"name":{"description":"Name of the datastore associated with this list entry.","type":"string","enum":["running","candidate","startup"],"example":"running"},"locks":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_datastores_datastore_locks"}},"xml":{"name":"datastore","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"}},"ietf-netconf-monitoring_netconf-state_datastores_datastore_locks":{"title":"ietf-netconf-monitoring_netconf-state_datastores_datastore_locks","type":"object","description":"The NETCONF &lt;lock&gt; and &lt;partial-lock&gt; operations allow\na client to lock specific resources in a datastore.  The\nNETCONF server will prevent changes to the locked\nresources by all sessions except the one that acquired\nthe lock(s).\n\nMonitoring information is provided for each datastore\nentry including details such as the session that acquired\nthe lock, the type of lock (global or partial) and the\nlist of locked resources.  Multiple locks per datastore\nare supported.","properties":{"global-lock":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_datastores_datastore_locks_global-lock"}},"required":["global-lock"],"xml":{"name":"locks","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"}},"ietf-netconf-monitoring_netconf-state_datastores_datastore_locks_global-lock":{"title":"ietf-netconf-monitoring_netconf-state_datastores_datastore_locks_global-lock","type":"object","description":"Present if the global lock is set.","properties":{"locked-time":{"description":"The date and time of when the resource was\nlocked.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"locked-by-session":{"description":"The session ID of the session that has locked\nthis resource.  Both a global lock and a partial\nlock MUST contain the NETCONF session-id.\n\nIf the lock is held by a session that is not managed\nby the NETCONF server (e.g., a CLI session), a session\nid of 0 (zero) is reported.","type":"integer","format":"int64","example":0}},"required":["locked-time","locked-by-session"],"xml":{"name":"global-lock","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"}},"ietf-netconf-monitoring_netconf-state_schemas":{"title":"ietf-netconf-monitoring_netconf-state_schemas","type":"object","description":"Contains the list of data model schemas supported by the\nserver.","properties":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_schemas_schema"},"description":"List of data model schemas supported by the server."}},"xml":{"name":"schemas","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"}},"ietf-netconf-monitoring_netconf-state_schemas_schema":{"title":"ietf-netconf-monitoring_netconf-state_schemas_schema","type":"object","description":"List of data model schemas supported by the server.","properties":{"identifier":{"description":"Identifier to uniquely reference the schema.  The\nidentifier is used in the &lt;get-schema&gt; operation and may\nbe used for other purposes such as file retrieval.\n\nFor modeling languages that support or require a data\nmodel name (e.g., YANG module name) the identifier MUST\nmatch that name.  For YANG data models, the identifier is\nthe name of the module or submodule.  In other cases, an\nidentifier such as a filename MAY be used instead.","type":"string","example":"Some identifier"},"format":{"description":"The data modeling language the schema is written\nin (currently xsd, yang, yin, rng, or rnc).\nFor YANG data models, 'yang' format MUST be supported and\n'yin' format MAY also be provided.","type":"string","enum":["schema-format","rnc","xsd","yang","rng","yin"],"example":"schema-format"},"namespace":{"description":"The XML namespace defined by the data model.\n\nFor YANG data models, this is the module's namespace.\nIf the list entry describes a submodule, this field\ncontains the namespace of the module to which the\nsubmodule belongs.","type":"string","example":"Some namespace"},"location":{"type":"array","items":{"type":"string","enum":["NETCONF"],"example":"NETCONF"},"description":"One or more locations from which the schema can be\nretrieved.  This list SHOULD contain at least one\nentry per schema.\n\nA schema entry may be located on a remote file system\n(e.g., reference to file system for ftp retrieval) or\nretrieved directly from a server supporting the\n&lt;get-schema&gt; operation (denoted by the value 'NETCONF')."},"version":{"description":"Version of the schema supported.  Multiple versions MAY be\nsupported simultaneously by a NETCONF server.  Each\nversion MUST be reported individually in the schema list,\ni.e., with same identifier, possibly different location,\nbut different version.\n\nFor YANG data models, version is the value of the most\nrecent YANG 'revision' statement in the module or\nsubmodule, or the empty string if no 'revision' statement\nis present.","type":"string","example":"Some version"}},"required":["namespace"],"xml":{"name":"schema","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"}},"ietf-netconf-monitoring_netconf-state_sessions":{"title":"ietf-netconf-monitoring_netconf-state_sessions","type":"object","description":"The sessions container includes session-specific data for\nNETCONF management sessions.  The session list MUST include\nall currently active NETCONF sessions.","properties":{"session":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-monitoring_netconf-state_sessions_session"},"description":"All NETCONF sessions managed by the NETCONF server\nMUST be reported in this list."}},"xml":{"name":"sessions","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"}},"ietf-netconf-monitoring_netconf-state_sessions_session":{"title":"ietf-netconf-monitoring_netconf-state_sessions_session","type":"object","description":"All NETCONF sessions managed by the NETCONF server\nMUST be reported in this list.","properties":{"source-host":{"description":"Host identifier of the NETCONF client.  The value\nreturned is implementation specific (e.g., hostname,\nIPv4 address, IPv6 address)","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"login-time":{"description":"Time at the server at which the session was established.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"in-rpcs":{"description":"Number of correct &lt;rpc&gt; messages received.","type":"string","default":"0"},"out-rpc-errors":{"description":"Number of &lt;rpc-reply&gt; messages sent that contained an\n&lt;rpc-error&gt; element.","type":"string","default":"0"},"in-bad-rpcs":{"description":"Number of messages received when an &lt;rpc&gt; message was expected,\nthat were not correct &lt;rpc&gt; messages.  This includes XML parse\nerrors and errors on the rpc layer.","type":"string","default":"0"},"out-notifications":{"description":"Number of &lt;notification&gt; messages sent.","type":"string","default":"0"},"transport":{"description":"Identifies the transport for each session, e.g.,\n'netconf-ssh', 'netconf-soap', etc.","type":"string","enum":["transport","netconf-soap-over-https","netconf-soap-over-beep","netconf-tcp","netconf-tls","netconf-ssh","netconf-beep"],"example":"transport"},"odl-netconf-monitoring:session-identifier":{"description":"","type":"string","example":"Some session-identifier","xml":{"name":"session-identifier","namespace":"urn:opendaylight:params:xml:ns:yang:netconf:monitoring"}},"session-id":{"description":"Unique identifier for the session.  This value is the\nNETCONF session identifier, as defined in RFC 4741.","type":"integer","format":"int64","example":1},"username":{"description":"The username is the client identity that was authenticated\nby the NETCONF transport protocol.  The algorithm used to\nderive the username is NETCONF transport protocol specific\nand in addition specific to the authentication mechanism\nused by the NETCONF transport protocol.","type":"string","example":"Some username"}},"required":["login-time","transport","username"],"xml":{"name":"session","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"}},"ietf-netconf-monitoring_netconf-state_statistics":{"title":"ietf-netconf-monitoring_netconf-state_statistics","type":"object","description":"Statistical data pertaining to the NETCONF server.","properties":{"netconf-start-time":{"description":"Date and time at which the management subsystem was\nstarted.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"in-rpcs":{"description":"Number of correct &lt;rpc&gt; messages received.","type":"string","default":"0"},"in-sessions":{"description":"Number of sessions started.  This counter is incremented\nwhen a &lt;hello&gt; message with a &lt;session-id&gt; is sent.\n\n'in-sessions' - 'in-bad-hellos' =\n 'number of correctly started netconf sessions'","type":"string","default":"0"},"out-rpc-errors":{"description":"Number of &lt;rpc-reply&gt; messages sent that contained an\n&lt;rpc-error&gt; element.","type":"string","default":"0"},"in-bad-hellos":{"description":"Number of sessions silently dropped because an\ninvalid &lt;hello&gt; message was received.  This includes &lt;hello&gt;\nmessages with a 'session-id' attribute, bad namespace, and\nbad capability declarations.","type":"string","default":"0"},"in-bad-rpcs":{"description":"Number of messages received when an &lt;rpc&gt; message was expected,\nthat were not correct &lt;rpc&gt; messages.  This includes XML parse\nerrors and errors on the rpc layer.","type":"string","default":"0"},"out-notifications":{"description":"Number of &lt;notification&gt; messages sent.","type":"string","default":"0"},"dropped-sessions":{"description":"Number of sessions that were abnormally terminated, e.g.,\ndue to idle timeout or transport close.  This counter is not\nincremented when a session is properly closed by a\n&lt;close-session&gt; operation, or killed by a &lt;kill-session&gt;\noperation.","type":"string","default":"0"}},"xml":{"name":"statistics","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"}},"ietf-netconf-nmda_get-data_input":{"title":"ietf-netconf-nmda_get-data_input","type":"object","properties":{"datastore":{"description":"Datastore from which to retrieve data.\n\nIf the datastore is not supported by the server, then the\nserver MUST return an &lt;rpc-error&gt; element with an\n&lt;error-tag&gt; value of 'invalid-value'.","type":"string","enum":["datastore","conventional","intended","startup","running","candidate","dynamic","operational"],"example":"datastore"},"subtree-filter":{"description":"This parameter identifies the portions of the\ntarget datastore to retrieve. (This is unknown data, need to be filled by user.)","example":{},"type":"object"},"config-filter":{"description":"Filter for nodes with the given value for their 'config'\nproperty.  When this leaf is set to 'true', only 'config\ntrue' nodes are selected, and when set to 'false', only\n'config false' nodes are selected.  If this leaf is not\npresent, no nodes are filtered.","type":"boolean","example":true},"origin-filter":{"type":"array","items":{"type":"string","enum":["origin","default","learned","intended","system","dynamic","unknown"],"example":"origin"},"description":"Filter based on the 'origin' annotation.  A\nconfiguration node matches the filter if its 'origin'\nannotation is derived from or equal to any of the given\nfilter values."},"max-depth":{"description":"For each node selected by the filters, this parameter\nselects how many conceptual subtree levels should be\nreturned in the reply.  If the depth is 1, the reply\nincludes just the selected nodes but no children.  If the\ndepth is 'unbounded', all descendant nodes are included.","type":"integer","format":"int32","default":"unbounded","example":1},"with-origin":{"description":"If this parameter is present, the server will return\nthe 'origin' annotation for the nodes that have one.","type":"object"},"with-defaults":{"description":"The explicit defaults processing mode requested.","type":"string","enum":["report-all","report-all-tagged","trim","explicit"],"example":"report-all"}},"required":["datastore"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda"}},"ietf-netconf-nmda_get-data_output":{"title":"ietf-netconf-nmda_get-data_output","type":"object","properties":{"data":{"description":"Copy of the source datastore subset that matched\nthe filter criteria (if any).  An empty data\ncontainer indicates that the request did not\nproduce any results. (This is unknown data, need to be filled by user.)","example":{},"type":"object"}},"xml":{"name":"output","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda"}},"ietf-netconf-nmda_edit-data_input":{"title":"ietf-netconf-nmda_edit-data_input","type":"object","properties":{"datastore":{"description":"Datastore that is the target of the &lt;edit-data&gt; operation.\n\nIf the target datastore is not writable, or is not\nsupported by the server, then the server MUST return an\n&lt;rpc-error&gt; element with an &lt;error-tag&gt; value of\n'invalid-value'.","type":"string","enum":["datastore","conventional","intended","startup","running","candidate","dynamic","operational"],"example":"datastore"},"default-operation":{"description":"The default operation to use.","type":"string","enum":["merge","replace","none"],"default":"merge","example":"merge"},"config":{"description":"Inline config content. (This is unknown data, need to be filled by user.)","example":{},"type":"object"}},"required":["datastore"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda"}},"ietf-netconf-server_netconf-server":{"title":"ietf-netconf-server_netconf-server","type":"object","description":"Top-level container for NETCONF server configuration.","properties":{"listen":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen"},"call-home":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home"}},"xml":{"name":"netconf-server","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen":{"title":"ietf-netconf-server_netconf-server_listen","type":"object","description":"Configures listen behavior","properties":{"endpoints":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints"},"idle-timeout":{"description":"Specifies the maximum number of seconds that a NETCONF\nsession may remain idle. A NETCONF session will be\ndropped if it is idle for an interval longer than this\nnumber of seconds.  If set to zero, then the server\nwill never drop a session because it is idle.","type":"integer","format":"int32","default":180,"example":0}},"xml":{"name":"listen","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints":{"title":"ietf-netconf-server_netconf-server_listen_endpoints","type":"object","description":"Container for a list of endpoints.","properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint"},"description":"List of endpoints to listen for NETCONF connections.","example":[{"name":"Some name"}],"minItems":1}},"required":["endpoint"],"xml":{"name":"endpoints","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint","type":"object","description":"List of endpoints to listen for NETCONF connections.","properties":{"name":{"description":"An arbitrary name for the NETCONF listen endpoint.","type":"string","example":"Some name"},"ssh":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh"}},"xml":{"name":"endpoint","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh","type":"object","description":"TCP, SSH, and NETCONF configuration to listen\nfor NETCONF over SSH connections.","properties":{"tcp-server-parameters":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_tcp-server-parameters"},"ssh-server-parameters":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters"},"netconf-server-parameters":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_netconf-server-parameters"}},"xml":{"name":"ssh","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_tcp-server-parameters":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_tcp-server-parameters","type":"object","description":"TCP-level server parameters to listen\nfor NETCONF over SSH connections.","properties":{"local-bind":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_tcp-server-parameters_local-bind"},"description":"A list of bind (listen) points for this server\ninstance.  A server instance may have multiple\nbind points to support, e.g., the same port in\ndifferent address families or different ports\nin the same address family.","example":[{"local-port":0,"local-address":"0.0.0.0"}],"minItems":1},"keepalives":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_tcp-server-parameters_keepalives"}},"required":["local-bind"],"xml":{"name":"tcp-server-parameters","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_tcp-server-parameters_local-bind":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_tcp-server-parameters_local-bind","type":"object","description":"A list of bind (listen) points for this server\ninstance.  A server instance may have multiple\nbind points to support, e.g., the same port in\ndifferent address families or different ports\nin the same address family.","properties":{"local-port":{"description":"The NETCONF server will listen on the\nIANA-assigned well-known port value\nfor 'netconf-ssh' (830) if no value\nis specified.","type":"integer","format":"int32","default":830,"example":0},"local-address":{"description":"The local IP address to listen on for incoming\nTCP client connections.  To configure listening\non all IPv4 addresses, the value must be '0.0.0.0'\n(INADDR_ANY).  To configure listening on all IPv6\naddresses, the value must be '::' (INADDR6_ANY).","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"local-bind","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_tcp-server-parameters_keepalives":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_tcp-server-parameters_keepalives","type":"object","description":"An 'if-feature' statement so that implementations\ncan choose to support TCP server keepalives.","properties":{"idle-time":{"description":"Sets the amount of time after which a TCP-level probe\nmessage will be sent to test the aliveness of the TCP\npeer if no data has been received from the TCP peer.\nTwo hours (7200 seconds) is a safe value, per Section\n3.8.4 of RFC 9293.","type":"integer","format":"int32","default":7200,"example":1},"probe-interval":{"description":"Sets the time interval between failed probes.  The\ninterval SHOULD be significantly longer than one second\nin order to avoid harm on a congested link.","type":"integer","format":"int32","default":75,"example":1},"max-probes":{"description":"Sets the maximum number of sequential keepalive probes\nthat can fail to obtain a response from the TCP peer\nbefore assuming the TCP peer is no longer alive.","type":"integer","format":"int32","default":9,"example":1}},"xml":{"name":"keepalives","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters","type":"object","description":"SSH-level server parameters to listen\nfor NETCONF over SSH connections.","properties":{"server-identity":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_server-identity"},"transport-params":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params"},"client-authentication":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication"},"keepalives":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_keepalives"}},"xml":{"name":"ssh-server-parameters","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_server-identity":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_server-identity","type":"object","description":"The list of host keys the SSH server will present when\nestablishing an SSH connection.","properties":{"host-key":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key"},"description":"An ordered list of host keys (see RFC 4251) the SSH\nserver will use to construct its ordered list of\nalgorithms when sending its SSH_MSG_KEXINIT message,\nas defined in Section 7.1 of RFC 4253.","example":[{"name":"Some name"}],"minItems":1}},"required":["host-key"],"xml":{"name":"server-identity","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key","type":"object","description":"An ordered list of host keys (see RFC 4251) the SSH\nserver will use to construct its ordered list of\nalgorithms when sending its SSH_MSG_KEXINIT message,\nas defined in Section 7.1 of RFC 4253.","properties":{"public-key":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key_public-key"},"name":{"description":"An arbitrary name for this host key.","type":"string","example":"Some name"}},"required":["public-key"],"xml":{"name":"host-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key_public-key":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key_public-key","type":"object","description":"A locally defined or referenced asymmetric key pair\nto be used for the SSH server's host key.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key_public-key_inline-definition"}},"required":["inline-definition"],"xml":{"name":"public-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key_public-key_inline-definition":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key_public-key_inline-definition","type":"object","description":"A container to hold the local key definition.","properties":{"cleartext-private-key":{"description":"The value of the binary key.  The key's value is\ninterpreted by the 'private-key-format' field.","type":"string","format":"byte"},"private-key-format":{"description":"Identifies the private key's format.  Implementations SHOULD\nensure that the incoming private key value is encoded in the\nspecified format.\n\nFor encrypted keys, the value is the decrypted key's\nformat (i.e., the 'encrypted-value-format' conveys the\nencrypted key's format).","type":"string","enum":["private-key-format","one-asymmetric-key-format","ec-private-key-format","rsa-private-key-format"],"example":"private-key-format"},"public-key":{"description":"The binary value of the public key.  The interpretation\nof the value is defined by the 'public-key-format' field.","type":"string","format":"byte"},"public-key-format":{"description":"Identifies the public key's format.  Implementations SHOULD\nensure that the incoming public key value is encoded in the\nspecified format.","type":"string","enum":["public-key-format","subject-public-key-info-format","ssh-public-key-format"],"example":"public-key-format"}},"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication","type":"object","description":"Specifies how the SSH server can be configured to\nauthenticate SSH clients.  See RFC 4252 for a general\ndiscussion about SSH authentication.","properties":{"ee-certs":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs"},"ca-certs":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs"},"users":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users"}},"xml":{"name":"client-authentication","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users","type":"object","description":"A list of locally configured users.","properties":{"user":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user"},"description":"A locally configured user.\n\nThe server SHOULD derive the list of authentication\n'method names' returned to the SSH client from the\ndescendant nodes configured herein, per Sections\n5.1 and 5.2 of RFC 4252.\n\nThe authentication methods are unordered.  Clients\nmust authenticate to all configured methods.\nWhenever a choice amongst methods arises,\nimplementations SHOULD use a default ordering\nthat prioritizes automation over human interaction."}},"xml":{"name":"users","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user","type":"object","description":"A locally configured user.\n\nThe server SHOULD derive the list of authentication\n'method names' returned to the SSH client from the\ndescendant nodes configured herein, per Sections\n5.1 and 5.2 of RFC 4252.\n\nThe authentication methods are unordered.  Clients\nmust authenticate to all configured methods.\nWhenever a choice amongst methods arises,\nimplementations SHOULD use a default ordering\nthat prioritizes automation over human interaction.","properties":{"public-keys":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys"},"password":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_password"},"name":{"description":"The 'username' for the SSH client, as defined in\nthe SSH_MSG_USERAUTH_REQUEST message in RFC 4253.","type":"string","example":"Some name"},"hostbased":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased"}},"xml":{"name":"user","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys","type":"object","description":"A set of SSH public keys may be used by the SSH\nserver to authenticate this user.  A user is\nauthenticated if its public key is an exact\nmatch to a configured public key.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys_inline-definition"}},"xml":{"name":"public-keys","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys_inline-definition":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys_inline-definition","type":"object","description":"A container to hold local public key definitions.","properties":{"public-key":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys_inline-definition_public-key"},"description":"A public key definition."}},"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys_inline-definition_public-key":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys_inline-definition_public-key","type":"object","description":"A public key definition.","properties":{"name":{"description":"An arbitrary name for this public key.","type":"string","example":"Some name"},"public-key":{"description":"The binary value of the public key.  The interpretation\nof the value is defined by the 'public-key-format' field.","type":"string","format":"byte"},"public-key-format":{"description":"Identifies the public key's format.  Implementations SHOULD\nensure that the incoming public key value is encoded in the\nspecified format.","type":"string","enum":["public-key-format","subject-public-key-info-format","ssh-public-key-format"],"example":"public-key-format"}},"required":["public-key","public-key-format"],"xml":{"name":"public-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_password":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_password","type":"object","description":"A password the SSH server may use to authenticate\nthis user.  A user is authenticated if the hash\nof the supplied password matches this value.","properties":{"hashed-password":{"description":"The password for this user.","type":"string","example":"$0$","minLength":0,"maxLength":2147483647}},"xml":{"name":"password","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased","type":"object","description":"A set of SSH host keys used by the SSH server to\nauthenticate this user's host.  A user's host is\nauthenticated if its host key is an exact match\nto a configured host key.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased_inline-definition"}},"xml":{"name":"hostbased","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased_inline-definition":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased_inline-definition","type":"object","description":"A container to hold local public key definitions.","properties":{"public-key":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased_inline-definition_public-key"},"description":"A public key definition."}},"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased_inline-definition_public-key":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased_inline-definition_public-key","type":"object","description":"A public key definition.","properties":{"name":{"description":"An arbitrary name for this public key.","type":"string","example":"Some name"},"public-key":{"description":"The binary value of the public key.  The interpretation\nof the value is defined by the 'public-key-format' field.","type":"string","format":"byte"},"public-key-format":{"description":"Identifies the public key's format.  Implementations SHOULD\nensure that the incoming public key value is encoded in the\nspecified format.","type":"string","enum":["public-key-format","subject-public-key-info-format","ssh-public-key-format"],"example":"public-key-format"}},"required":["public-key","public-key-format"],"xml":{"name":"public-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs","type":"object","description":"A set of Certification Authority (CA) certificates used by\nthe SSH server to authenticate SSH client certificates.\nA client certificate is authenticated if it has a valid\nchain of trust to a configured CA certificate.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs_inline-definition"}},"xml":{"name":"ca-certs","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs_inline-definition":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs_inline-definition","type":"object","description":"A container for locally configured trust anchor\ncertificates.","properties":{"certificate":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs_inline-definition_certificate"},"description":"A trust anchor certificate or chain of certificates.","example":[{"name":"Some name"}],"minItems":1}},"required":["certificate"],"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs_inline-definition_certificate":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs_inline-definition_certificate","type":"object","description":"A trust anchor certificate or chain of certificates.","properties":{"name":{"description":"An arbitrary name for this certificate.","type":"string","example":"Some name"},"cert-data":{"description":"The binary certificate data for this certificate.","type":"string","format":"byte"}},"required":["cert-data"],"xml":{"name":"certificate","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs","type":"object","description":"A set of client certificates (i.e., end-entity\ncertificates) used by the SSH server to authenticate\nthe certificates presented by SSH clients.  A client\ncertificate is authenticated if it is an exact match\nto a configured end-entity certificate.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs_inline-definition"}},"xml":{"name":"ee-certs","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs_inline-definition":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs_inline-definition","type":"object","description":"A container for locally configured trust anchor\ncertificates.","properties":{"certificate":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs_inline-definition_certificate"},"description":"A trust anchor certificate or chain of certificates.","example":[{"name":"Some name"}],"minItems":1}},"required":["certificate"],"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs_inline-definition_certificate":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs_inline-definition_certificate","type":"object","description":"A trust anchor certificate or chain of certificates.","properties":{"name":{"description":"An arbitrary name for this certificate.","type":"string","example":"Some name"},"cert-data":{"description":"The binary certificate data for this certificate.","type":"string","format":"byte"}},"required":["cert-data"],"xml":{"name":"certificate","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params","type":"object","description":"Configurable parameters of the SSH transport layer.","properties":{"key-exchange":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_key-exchange"},"encryption":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_encryption"},"host-key":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_host-key"},"mac":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_mac"}},"xml":{"name":"transport-params","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_host-key":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_host-key","type":"object","description":"Parameters regarding host key.","properties":{"host-key-alg":{"type":"array","items":{"type":"string","enum":["ssh-dss","ssh-rsa","rsa-sha2-256","rsa-sha2-512","spki-sign-rsa","spki-sign-dss","pgp-sign-rsa","pgp-sign-dss","null","ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ecdsa-sha2-1.3.132.0.1","ecdsa-sha2-1.2.840.10045.3.1.1","ecdsa-sha2-1.3.132.0.33","ecdsa-sha2-1.3.132.0.26","ecdsa-sha2-1.3.132.0.27","ecdsa-sha2-1.3.132.0.16","ecdsa-sha2-1.3.132.0.36","ecdsa-sha2-1.3.132.0.37","ecdsa-sha2-1.3.132.0.38","x509v3-ssh-dss","x509v3-ssh-rsa","x509v3-rsa2048-sha256","x509v3-ecdsa-sha2-nistp256","x509v3-ecdsa-sha2-nistp384","x509v3-ecdsa-sha2-nistp521","x509v3-ecdsa-sha2-1.3.132.0.1","x509v3-ecdsa-sha2-1.2.840.10045.3.1.1","x509v3-ecdsa-sha2-1.3.132.0.33","x509v3-ecdsa-sha2-1.3.132.0.26","x509v3-ecdsa-sha2-1.3.132.0.27","x509v3-ecdsa-sha2-1.3.132.0.16","x509v3-ecdsa-sha2-1.3.132.0.36","x509v3-ecdsa-sha2-1.3.132.0.37","x509v3-ecdsa-sha2-1.3.132.0.38","ssh-ed25519","ssh-ed448"],"example":"ssh-dss"},"description":"Acceptable host key algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable host key algorithms are\nimplementation-defined."}},"xml":{"name":"host-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_key-exchange":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_key-exchange","type":"object","description":"Parameters regarding key exchange.","properties":{"key-exchange-alg":{"type":"array","items":{"type":"string","enum":["diffie-hellman-group-exchange-sha1","diffie-hellman-group-exchange-sha256","diffie-hellman-group1-sha1","diffie-hellman-group14-sha1","diffie-hellman-group14-sha256","diffie-hellman-group15-sha512","diffie-hellman-group16-sha512","diffie-hellman-group17-sha512","diffie-hellman-group18-sha512","ecdh-sha2-nistp256","ecdh-sha2-nistp384","ecdh-sha2-nistp521","ecdh-sha2-1.3.132.0.1","ecdh-sha2-1.2.840.10045.3.1.1","ecdh-sha2-1.3.132.0.33","ecdh-sha2-1.3.132.0.26","ecdh-sha2-1.3.132.0.27","ecdh-sha2-1.3.132.0.16","ecdh-sha2-1.3.132.0.36","ecdh-sha2-1.3.132.0.37","ecdh-sha2-1.3.132.0.38","ecmqv-sha2","gss-group1-sha1-nistp256","gss-group1-sha1-nistp384","gss-group1-sha1-nistp521","gss-group1-sha1-1.3.132.0.1","gss-group1-sha1-1.2.840.10045.3.1.1","gss-group1-sha1-1.3.132.0.33","gss-group1-sha1-1.3.132.0.26","gss-group1-sha1-1.3.132.0.27","gss-group1-sha1-1.3.132.0.16","gss-group1-sha1-1.3.132.0.36","gss-group1-sha1-1.3.132.0.37","gss-group1-sha1-1.3.132.0.38","gss-group14-sha1-nistp256","gss-group14-sha1-nistp384","gss-group14-sha1-nistp521","gss-group14-sha1-1.3.132.0.1","gss-group14-sha1-1.2.840.10045.3.1.1","gss-group14-sha1-1.3.132.0.33","gss-group14-sha1-1.3.132.0.26","gss-group14-sha1-1.3.132.0.27","gss-group14-sha1-1.3.132.0.16","gss-group14-sha1-1.3.132.0.36","gss-group14-sha1-1.3.132.0.37","gss-group14-sha1-1.3.132.0.38","gss-gex-sha1-nistp256","gss-gex-sha1-nistp384","gss-gex-sha1-nistp521","gss-gex-sha1-1.3.132.0.1","gss-gex-sha1-1.2.840.10045.3.1.1","gss-gex-sha1-1.3.132.0.33","gss-gex-sha1-1.3.132.0.26","gss-gex-sha1-1.3.132.0.27","gss-gex-sha1-1.3.132.0.16","gss-gex-sha1-1.3.132.0.36","gss-gex-sha1-1.3.132.0.37","gss-gex-sha1-1.3.132.0.38","gss-","rsa1024-sha1","rsa2048-sha256","ext-info-s","ext-info-c","gss-group14-sha256-nistp256","gss-group14-sha256-nistp384","gss-group14-sha256-nistp521","gss-group14-sha256-1.3.132.0.1","gss-group14-sha256-1.2.840.10045.3.1.1","gss-group14-sha256-1.3.132.0.33","gss-group14-sha256-1.3.132.0.26","gss-group14-sha256-1.3.132.0.27","gss-group14-sha256-1.3.132.0.16","gss-group14-sha256-1.3.132.0.36","gss-group14-sha256-1.3.132.0.37","gss-group14-sha256-1.3.132.0.38","gss-group15-sha512-nistp256","gss-group15-sha512-nistp384","gss-group15-sha512-nistp521","gss-group15-sha512-1.3.132.0.1","gss-group15-sha512-1.2.840.10045.3.1.1","gss-group15-sha512-1.3.132.0.33","gss-group15-sha512-1.3.132.0.26","gss-group15-sha512-1.3.132.0.27","gss-group15-sha512-1.3.132.0.16","gss-group15-sha512-1.3.132.0.36","gss-group15-sha512-1.3.132.0.37","gss-group15-sha512-1.3.132.0.38","gss-group16-sha512-nistp256","gss-group16-sha512-nistp384","gss-group16-sha512-nistp521","gss-group16-sha512-1.3.132.0.1","gss-group16-sha512-1.2.840.10045.3.1.1","gss-group16-sha512-1.3.132.0.33","gss-group16-sha512-1.3.132.0.26","gss-group16-sha512-1.3.132.0.27","gss-group16-sha512-1.3.132.0.16","gss-group16-sha512-1.3.132.0.36","gss-group16-sha512-1.3.132.0.37","gss-group16-sha512-1.3.132.0.38","gss-group17-sha512-nistp256","gss-group17-sha512-nistp384","gss-group17-sha512-nistp521","gss-group17-sha512-1.3.132.0.1","gss-group17-sha512-1.2.840.10045.3.1.1","gss-group17-sha512-1.3.132.0.33","gss-group17-sha512-1.3.132.0.26","gss-group17-sha512-1.3.132.0.27","gss-group17-sha512-1.3.132.0.16","gss-group17-sha512-1.3.132.0.36","gss-group17-sha512-1.3.132.0.37","gss-group17-sha512-1.3.132.0.38","gss-group18-sha512-nistp256","gss-group18-sha512-nistp384","gss-group18-sha512-nistp521","gss-group18-sha512-1.3.132.0.1","gss-group18-sha512-1.2.840.10045.3.1.1","gss-group18-sha512-1.3.132.0.33","gss-group18-sha512-1.3.132.0.26","gss-group18-sha512-1.3.132.0.27","gss-group18-sha512-1.3.132.0.16","gss-group18-sha512-1.3.132.0.36","gss-group18-sha512-1.3.132.0.37","gss-group18-sha512-1.3.132.0.38","gss-nistp256-sha256-nistp256","gss-nistp256-sha256-nistp384","gss-nistp256-sha256-nistp521","gss-nistp256-sha256-1.3.132.0.1","gss-nistp256-sha256-1.2.840.10045.3.1.1","gss-nistp256-sha256-1.3.132.0.33","gss-nistp256-sha256-1.3.132.0.26","gss-nistp256-sha256-1.3.132.0.27","gss-nistp256-sha256-1.3.132.0.16","gss-nistp256-sha256-1.3.132.0.36","gss-nistp256-sha256-1.3.132.0.37","gss-nistp256-sha256-1.3.132.0.38","gss-nistp384-sha384-nistp256","gss-nistp384-sha384-nistp384","gss-nistp384-sha384-nistp521","gss-nistp384-sha384-1.3.132.0.1","gss-nistp384-sha384-1.2.840.10045.3.1.1","gss-nistp384-sha384-1.3.132.0.33","gss-nistp384-sha384-1.3.132.0.26","gss-nistp384-sha384-1.3.132.0.27","gss-nistp384-sha384-1.3.132.0.16","gss-nistp384-sha384-1.3.132.0.36","gss-nistp384-sha384-1.3.132.0.37","gss-nistp384-sha384-1.3.132.0.38","gss-nistp521-sha512-nistp256","gss-nistp521-sha512-nistp384","gss-nistp521-sha512-nistp521","gss-nistp521-sha512-1.3.132.0.1","gss-nistp521-sha512-1.2.840.10045.3.1.1","gss-nistp521-sha512-1.3.132.0.33","gss-nistp521-sha512-1.3.132.0.26","gss-nistp521-sha512-1.3.132.0.27","gss-nistp521-sha512-1.3.132.0.16","gss-nistp521-sha512-1.3.132.0.36","gss-nistp521-sha512-1.3.132.0.37","gss-nistp521-sha512-1.3.132.0.38","gss-curve25519-sha256-nistp256","gss-curve25519-sha256-nistp384","gss-curve25519-sha256-nistp521","gss-curve25519-sha256-1.3.132.0.1","gss-curve25519-sha256-1.2.840.10045.3.1.1","gss-curve25519-sha256-1.3.132.0.33","gss-curve25519-sha256-1.3.132.0.26","gss-curve25519-sha256-1.3.132.0.27","gss-curve25519-sha256-1.3.132.0.16","gss-curve25519-sha256-1.3.132.0.36","gss-curve25519-sha256-1.3.132.0.37","gss-curve25519-sha256-1.3.132.0.38","gss-curve448-sha512-nistp256","gss-curve448-sha512-nistp384","gss-curve448-sha512-nistp521","gss-curve448-sha512-1.3.132.0.1","gss-curve448-sha512-1.2.840.10045.3.1.1","gss-curve448-sha512-1.3.132.0.33","gss-curve448-sha512-1.3.132.0.26","gss-curve448-sha512-1.3.132.0.27","gss-curve448-sha512-1.3.132.0.16","gss-curve448-sha512-1.3.132.0.36","gss-curve448-sha512-1.3.132.0.37","gss-curve448-sha512-1.3.132.0.38","curve25519-sha256","curve448-sha512","sntrup761x25519-sha512","mlkem768nistp256-sha256","mlkem1024nistp384-sha384","mlkem768x25519-sha256"],"example":"diffie-hellman-group-exchange-sha1"},"description":"Acceptable key exchange algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable key exchange algorithms are\nimplementation-defined."}},"xml":{"name":"key-exchange","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_encryption":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_encryption","type":"object","description":"Parameters regarding encryption.","properties":{"encryption-alg":{"type":"array","items":{"type":"string","enum":["3des-cbc","blowfish-cbc","twofish256-cbc","twofish-cbc","twofish192-cbc","twofish128-cbc","aes256-cbc","aes192-cbc","aes128-cbc","serpent256-cbc","serpent192-cbc","serpent128-cbc","arcfour","idea-cbc","cast128-cbc","none","des-cbc","arcfour128","arcfour256","aes128-ctr","aes192-ctr","aes256-ctr","3des-ctr","blowfish-ctr","twofish128-ctr","twofish192-ctr","twofish256-ctr","serpent128-ctr","serpent192-ctr","serpent256-ctr","idea-ctr","cast128-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","chacha20-poly1305"],"example":"3des-cbc"},"description":"Acceptable encryption algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable encryption algorithms are\nimplementation-defined."}},"xml":{"name":"encryption","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_mac":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_mac","type":"object","description":"Parameters regarding message authentication code (MAC).","properties":{"mac-alg":{"type":"array","items":{"type":"string","enum":["hmac-sha1","hmac-sha1-96","hmac-md5","hmac-md5-96","none","AEAD_AES_128_GCM","AEAD_AES_256_GCM","hmac-sha2-256","hmac-sha2-512"],"example":"hmac-sha1"},"description":"Acceptable MAC algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable MAC algorithms are\nimplementation-defined."}},"xml":{"name":"mac","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_keepalives":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_ssh-server-parameters_keepalives","type":"object","description":"Configures the keepalive policy to proactively test\nthe aliveness of the SSH client.  An unresponsive SSH\nclient is dropped after approximately max-wait *\nmax-attempts seconds.  Per Section 4 of RFC 4254,\nthe SSH server SHOULD send an SSH_MSG_GLOBAL_REQUEST\nmessage with a purposely nonexistent 'request name'\nvalue (e.g., keepalive@example.com) and the 'want reply'\nvalue set to '1'.","properties":{"max-attempts":{"description":"Sets the maximum number of sequential keepalive\nmessages that can fail to obtain a response from\nthe SSH client before assuming the SSH client is\nno longer alive.","type":"integer","format":"int32","default":3,"example":0},"max-wait":{"description":"Sets the amount of time in seconds after which\nan SSH-level message will be sent to test the\naliveness of the SSH client if no data has been\nreceived from the SSH client.","type":"integer","format":"int32","default":30,"example":1}},"xml":{"name":"keepalives","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_netconf-server-parameters":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_netconf-server-parameters","type":"object","description":"NETCONF-level server parameters to listen\nfor NETCONF over SSH connections.","properties":{"client-identity-mappings":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_netconf-server-parameters_client-identity-mappings"}},"xml":{"name":"netconf-server-parameters","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_netconf-server-parameters_client-identity-mappings":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_netconf-server-parameters_client-identity-mappings","type":"object","description":"Adds in an 'if-feature' statement\nensuring the 'client-identity-mappings'\ndescendant is enabled only when SSH\nsupports X.509 certificates.","properties":{"cert-to-name":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_netconf-server-parameters_client-identity-mappings_cert-to-name"},"description":"This list defines how certificates are mapped to names.\nThe name is derived by considering each cert-to-name\nlist entry in order.  The cert-to-name entry's fingerprint\ndetermines whether the list entry is a match:\n\n1) If the cert-to-name list entry's fingerprint value\n   matches that of the presented certificate, then consider\n   the list entry a successful match.\n\n2) If the cert-to-name list entry's fingerprint value\n   matches that of a locally held copy of a trusted CA\n   certificate, and that CA certificate was part of the CA\n   certificate chain to the presented certificate, then\n   consider the list entry a successful match.\n\nOnce a matching cert-to-name list entry has been found, the\nmap-type is used to determine how the name associated with\nthe certificate should be determined.  See the map-type\nleaf's description for details on determining the name value.\nIf it is impossible to determine a name from the cert-to-name\nlist entry's data combined with the data presented in the\ncertificate, then additional cert-to-name list entries MUST\nbe searched to look for another potential match.\n\nSecurity administrators are encouraged to make use of\ncertificates with subjectAltName fields that can be mapped to\nnames so that a single root CA certificate can allow all\nchild certificates' subjectAltName fields to map directly to\na name via a 1:1 transformation."},"mapping-required":{"description":"Indicates that the cert-to-name mapping\nis required (i.e., the SSH-level username\nis ignored).","type":"boolean","example":true}},"xml":{"name":"client-identity-mappings","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_netconf-server-parameters_client-identity-mappings_cert-to-name":{"title":"ietf-netconf-server_netconf-server_listen_endpoints_endpoint_ssh_netconf-server-parameters_client-identity-mappings_cert-to-name","type":"object","description":"This list defines how certificates are mapped to names.\nThe name is derived by considering each cert-to-name\nlist entry in order.  The cert-to-name entry's fingerprint\ndetermines whether the list entry is a match:\n\n1) If the cert-to-name list entry's fingerprint value\n   matches that of the presented certificate, then consider\n   the list entry a successful match.\n\n2) If the cert-to-name list entry's fingerprint value\n   matches that of a locally held copy of a trusted CA\n   certificate, and that CA certificate was part of the CA\n   certificate chain to the presented certificate, then\n   consider the list entry a successful match.\n\nOnce a matching cert-to-name list entry has been found, the\nmap-type is used to determine how the name associated with\nthe certificate should be determined.  See the map-type\nleaf's description for details on determining the name value.\nIf it is impossible to determine a name from the cert-to-name\nlist entry's data combined with the data presented in the\ncertificate, then additional cert-to-name list entries MUST\nbe searched to look for another potential match.\n\nSecurity administrators are encouraged to make use of\ncertificates with subjectAltName fields that can be mapped to\nnames so that a single root CA certificate can allow all\nchild certificates' subjectAltName fields to map directly to\na name via a 1:1 transformation.","properties":{"map-type":{"description":"Specifies the algorithm used to map the certificate\npresented by the peer to a name.\n\nMappings that need additional configuration objects should\nuse the 'when' statement to make them conditional based on\nthe map-type.","type":"string","enum":["cert-to-name","san-dns-name","san-any","common-name","specified","san-rfc822-name","san-ip-address"],"example":"cert-to-name"},"fingerprint":{"description":"A 'fingerprint' value does not need to be specified\nwhen the 'cert-to-name' mapping is independent of\nfingerprint matching.  A 'cert-to-name' having no\nfingerprint value will match any client certificate\nand therefore should only be present at the end of\nthe user-ordered 'cert-to-name' list.","type":"string","example":"00","minLength":0,"maxLength":2147483647},"name":{"description":"Directly specifies the NETCONF username when the\nmap-type is 'specified'.","type":"string","example":"Some name"},"id":{"description":"The id specifies the order in which the entries in the\ncert-to-name list are searched.  Entries with lower\nnumbers are searched first.","type":"integer","format":"int64","example":0}},"required":["map-type","name"],"xml":{"name":"cert-to-name","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home":{"title":"ietf-netconf-server_netconf-server_call-home","type":"object","description":"Configures the NETCONF server to initiate the underlying\ntransport connection to NETCONF clients.","properties":{"netconf-client":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client"},"description":"List of NETCONF clients the NETCONF server is to\nmaintain simultaneous call-home connections with.","example":[{"name":"Some name"}],"minItems":1}},"required":["netconf-client"],"xml":{"name":"call-home","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client","type":"object","description":"List of NETCONF clients the NETCONF server is to\nmaintain simultaneous call-home connections with.","properties":{"endpoints":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints"},"connection-type":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_connection-type"},"name":{"description":"An arbitrary name for the remote NETCONF client.","type":"string","example":"Some name"},"reconnect-strategy":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_reconnect-strategy"}},"required":["connection-type"],"xml":{"name":"netconf-client","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints","type":"object","description":"Container for the list of endpoints.","properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint"},"description":"A non-empty user-ordered list of endpoints for this\nNETCONF server to try to connect to in sequence.\nDefining more than one enables high-availability.","example":[{"name":"Some name"}],"minItems":1}},"required":["endpoint"],"xml":{"name":"endpoints","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint","type":"object","description":"A non-empty user-ordered list of endpoints for this\nNETCONF server to try to connect to in sequence.\nDefining more than one enables high-availability.","properties":{"name":{"description":"An arbitrary name for this endpoint.","type":"string","example":"Some name"},"ssh":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh"}},"xml":{"name":"endpoint","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh","type":"object","description":"TCP, SSH, and NETCONF configuration to initiate\na NETCONF over SSH Call Home connection.","properties":{"tcp-client-parameters":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_tcp-client-parameters"},"ssh-server-parameters":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters"},"netconf-server-parameters":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_netconf-server-parameters"}},"required":["tcp-client-parameters"],"xml":{"name":"ssh","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_tcp-client-parameters":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_tcp-client-parameters","type":"object","description":"TCP-level client parameters to initiate a\nNETCONF over SSH Call Home connection.","properties":{"local-port":{"description":"The local IP port number to bind to for when connecting\nto the remote peer.  The port number '0', which is the\ndefault value, indicates that any available local port\nnumber may be used.","type":"string","default":"0"},"keepalives":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_tcp-client-parameters_keepalives"},"remote-address":{"description":"The IP address or hostname of the remote peer to\nestablish a connection with.  If a domain name is\nconfigured, then the DNS resolution should happen on\neach connection attempt.  If the DNS resolution\nresults in multiple IP addresses, the IP addresses\nare tried according to local preference order until\na connection has been established or until all IP\naddresses have failed.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"remote-port":{"description":"The NETCONF server will attempt to connect\nto the IANA-assigned well-known port for\n'netconf-ch-ssh' (4334) if no value is\nspecified.","type":"integer","format":"int32","default":4334,"example":0},"local-address":{"description":"The local IP address/interface to bind to for when\nconnecting to the remote peer.  INADDR_ANY ('0.0.0.0') or\nINADDR6_ANY ('0:0:0:0:0:0:0:0' a.k.a. '::') MAY be used to\nexplicitly indicate the implicit default, which the server\ncan bind to any IPv4 or IPv6 address.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"required":["remote-address"],"xml":{"name":"tcp-client-parameters","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_tcp-client-parameters_keepalives":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_tcp-client-parameters_keepalives","type":"object","description":"An 'if-feature' statement so that implementations\ncan choose to support TCP client keepalives.","properties":{"idle-time":{"description":"Sets the amount of time after which a TCP-level probe\nmessage will be sent to test the aliveness of the TCP\npeer if no data has been received from the TCP peer.\nTwo hours (7200 seconds) is a safe value, per Section\n3.8.4 of RFC 9293.","type":"integer","format":"int32","default":7200,"example":1},"probe-interval":{"description":"Sets the time interval between failed probes.  The\ninterval SHOULD be significantly longer than one second\nin order to avoid harm on a congested link.","type":"integer","format":"int32","default":75,"example":1},"max-probes":{"description":"Sets the maximum number of sequential keepalive probes\nthat can fail to obtain a response from the TCP peer\nbefore assuming the TCP peer is no longer alive.","type":"integer","format":"int32","default":9,"example":1}},"xml":{"name":"keepalives","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters","type":"object","description":"SSH-level server parameters to initiate a\nNETCONF over SSH Call Home connection.","properties":{"server-identity":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_server-identity"},"transport-params":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params"},"client-authentication":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication"},"keepalives":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_keepalives"}},"xml":{"name":"ssh-server-parameters","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_server-identity":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_server-identity","type":"object","description":"The list of host keys the SSH server will present when\nestablishing an SSH connection.","properties":{"host-key":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key"},"description":"An ordered list of host keys (see RFC 4251) the SSH\nserver will use to construct its ordered list of\nalgorithms when sending its SSH_MSG_KEXINIT message,\nas defined in Section 7.1 of RFC 4253.","example":[{"name":"Some name"}],"minItems":1}},"required":["host-key"],"xml":{"name":"server-identity","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key","type":"object","description":"An ordered list of host keys (see RFC 4251) the SSH\nserver will use to construct its ordered list of\nalgorithms when sending its SSH_MSG_KEXINIT message,\nas defined in Section 7.1 of RFC 4253.","properties":{"public-key":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key_public-key"},"name":{"description":"An arbitrary name for this host key.","type":"string","example":"Some name"}},"required":["public-key"],"xml":{"name":"host-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key_public-key":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key_public-key","type":"object","description":"A locally defined or referenced asymmetric key pair\nto be used for the SSH server's host key.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key_public-key_inline-definition"}},"required":["inline-definition"],"xml":{"name":"public-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key_public-key_inline-definition":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_server-identity_host-key_public-key_inline-definition","type":"object","description":"A container to hold the local key definition.","properties":{"cleartext-private-key":{"description":"The value of the binary key.  The key's value is\ninterpreted by the 'private-key-format' field.","type":"string","format":"byte"},"private-key-format":{"description":"Identifies the private key's format.  Implementations SHOULD\nensure that the incoming private key value is encoded in the\nspecified format.\n\nFor encrypted keys, the value is the decrypted key's\nformat (i.e., the 'encrypted-value-format' conveys the\nencrypted key's format).","type":"string","enum":["private-key-format","one-asymmetric-key-format","ec-private-key-format","rsa-private-key-format"],"example":"private-key-format"},"public-key":{"description":"The binary value of the public key.  The interpretation\nof the value is defined by the 'public-key-format' field.","type":"string","format":"byte"},"public-key-format":{"description":"Identifies the public key's format.  Implementations SHOULD\nensure that the incoming public key value is encoded in the\nspecified format.","type":"string","enum":["public-key-format","subject-public-key-info-format","ssh-public-key-format"],"example":"public-key-format"}},"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication","type":"object","description":"Specifies how the SSH server can be configured to\nauthenticate SSH clients.  See RFC 4252 for a general\ndiscussion about SSH authentication.","properties":{"ee-certs":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs"},"ca-certs":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs"},"users":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users"}},"xml":{"name":"client-authentication","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users","type":"object","description":"A list of locally configured users.","properties":{"user":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user"},"description":"A locally configured user.\n\nThe server SHOULD derive the list of authentication\n'method names' returned to the SSH client from the\ndescendant nodes configured herein, per Sections\n5.1 and 5.2 of RFC 4252.\n\nThe authentication methods are unordered.  Clients\nmust authenticate to all configured methods.\nWhenever a choice amongst methods arises,\nimplementations SHOULD use a default ordering\nthat prioritizes automation over human interaction."}},"xml":{"name":"users","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user","type":"object","description":"A locally configured user.\n\nThe server SHOULD derive the list of authentication\n'method names' returned to the SSH client from the\ndescendant nodes configured herein, per Sections\n5.1 and 5.2 of RFC 4252.\n\nThe authentication methods are unordered.  Clients\nmust authenticate to all configured methods.\nWhenever a choice amongst methods arises,\nimplementations SHOULD use a default ordering\nthat prioritizes automation over human interaction.","properties":{"public-keys":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys"},"password":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_password"},"name":{"description":"The 'username' for the SSH client, as defined in\nthe SSH_MSG_USERAUTH_REQUEST message in RFC 4253.","type":"string","example":"Some name"},"hostbased":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased"}},"xml":{"name":"user","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys","type":"object","description":"A set of SSH public keys may be used by the SSH\nserver to authenticate this user.  A user is\nauthenticated if its public key is an exact\nmatch to a configured public key.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys_inline-definition"}},"xml":{"name":"public-keys","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys_inline-definition":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys_inline-definition","type":"object","description":"A container to hold local public key definitions.","properties":{"public-key":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys_inline-definition_public-key"},"description":"A public key definition."}},"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys_inline-definition_public-key":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_public-keys_inline-definition_public-key","type":"object","description":"A public key definition.","properties":{"name":{"description":"An arbitrary name for this public key.","type":"string","example":"Some name"},"public-key":{"description":"The binary value of the public key.  The interpretation\nof the value is defined by the 'public-key-format' field.","type":"string","format":"byte"},"public-key-format":{"description":"Identifies the public key's format.  Implementations SHOULD\nensure that the incoming public key value is encoded in the\nspecified format.","type":"string","enum":["public-key-format","subject-public-key-info-format","ssh-public-key-format"],"example":"public-key-format"}},"required":["public-key","public-key-format"],"xml":{"name":"public-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_password":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_password","type":"object","description":"A password the SSH server may use to authenticate\nthis user.  A user is authenticated if the hash\nof the supplied password matches this value.","properties":{"hashed-password":{"description":"The password for this user.","type":"string","example":"$0$","minLength":0,"maxLength":2147483647}},"xml":{"name":"password","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased","type":"object","description":"A set of SSH host keys used by the SSH server to\nauthenticate this user's host.  A user's host is\nauthenticated if its host key is an exact match\nto a configured host key.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased_inline-definition"}},"xml":{"name":"hostbased","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased_inline-definition":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased_inline-definition","type":"object","description":"A container to hold local public key definitions.","properties":{"public-key":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased_inline-definition_public-key"},"description":"A public key definition."}},"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased_inline-definition_public-key":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_users_user_hostbased_inline-definition_public-key","type":"object","description":"A public key definition.","properties":{"name":{"description":"An arbitrary name for this public key.","type":"string","example":"Some name"},"public-key":{"description":"The binary value of the public key.  The interpretation\nof the value is defined by the 'public-key-format' field.","type":"string","format":"byte"},"public-key-format":{"description":"Identifies the public key's format.  Implementations SHOULD\nensure that the incoming public key value is encoded in the\nspecified format.","type":"string","enum":["public-key-format","subject-public-key-info-format","ssh-public-key-format"],"example":"public-key-format"}},"required":["public-key","public-key-format"],"xml":{"name":"public-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs","type":"object","description":"A set of Certification Authority (CA) certificates used by\nthe SSH server to authenticate SSH client certificates.\nA client certificate is authenticated if it has a valid\nchain of trust to a configured CA certificate.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs_inline-definition"}},"xml":{"name":"ca-certs","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs_inline-definition":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs_inline-definition","type":"object","description":"A container for locally configured trust anchor\ncertificates.","properties":{"certificate":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs_inline-definition_certificate"},"description":"A trust anchor certificate or chain of certificates.","example":[{"name":"Some name"}],"minItems":1}},"required":["certificate"],"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs_inline-definition_certificate":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ca-certs_inline-definition_certificate","type":"object","description":"A trust anchor certificate or chain of certificates.","properties":{"name":{"description":"An arbitrary name for this certificate.","type":"string","example":"Some name"},"cert-data":{"description":"The binary certificate data for this certificate.","type":"string","format":"byte"}},"required":["cert-data"],"xml":{"name":"certificate","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs","type":"object","description":"A set of client certificates (i.e., end-entity\ncertificates) used by the SSH server to authenticate\nthe certificates presented by SSH clients.  A client\ncertificate is authenticated if it is an exact match\nto a configured end-entity certificate.","properties":{"inline-definition":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs_inline-definition"}},"xml":{"name":"ee-certs","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs_inline-definition":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs_inline-definition","type":"object","description":"A container for locally configured trust anchor\ncertificates.","properties":{"certificate":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs_inline-definition_certificate"},"description":"A trust anchor certificate or chain of certificates.","example":[{"name":"Some name"}],"minItems":1}},"required":["certificate"],"xml":{"name":"inline-definition","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs_inline-definition_certificate":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_client-authentication_ee-certs_inline-definition_certificate","type":"object","description":"A trust anchor certificate or chain of certificates.","properties":{"name":{"description":"An arbitrary name for this certificate.","type":"string","example":"Some name"},"cert-data":{"description":"The binary certificate data for this certificate.","type":"string","format":"byte"}},"required":["cert-data"],"xml":{"name":"certificate","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params","type":"object","description":"Configurable parameters of the SSH transport layer.","properties":{"key-exchange":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_key-exchange"},"encryption":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_encryption"},"host-key":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_host-key"},"mac":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_mac"}},"xml":{"name":"transport-params","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_host-key":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_host-key","type":"object","description":"Parameters regarding host key.","properties":{"host-key-alg":{"type":"array","items":{"type":"string","enum":["ssh-dss","ssh-rsa","rsa-sha2-256","rsa-sha2-512","spki-sign-rsa","spki-sign-dss","pgp-sign-rsa","pgp-sign-dss","null","ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ecdsa-sha2-1.3.132.0.1","ecdsa-sha2-1.2.840.10045.3.1.1","ecdsa-sha2-1.3.132.0.33","ecdsa-sha2-1.3.132.0.26","ecdsa-sha2-1.3.132.0.27","ecdsa-sha2-1.3.132.0.16","ecdsa-sha2-1.3.132.0.36","ecdsa-sha2-1.3.132.0.37","ecdsa-sha2-1.3.132.0.38","x509v3-ssh-dss","x509v3-ssh-rsa","x509v3-rsa2048-sha256","x509v3-ecdsa-sha2-nistp256","x509v3-ecdsa-sha2-nistp384","x509v3-ecdsa-sha2-nistp521","x509v3-ecdsa-sha2-1.3.132.0.1","x509v3-ecdsa-sha2-1.2.840.10045.3.1.1","x509v3-ecdsa-sha2-1.3.132.0.33","x509v3-ecdsa-sha2-1.3.132.0.26","x509v3-ecdsa-sha2-1.3.132.0.27","x509v3-ecdsa-sha2-1.3.132.0.16","x509v3-ecdsa-sha2-1.3.132.0.36","x509v3-ecdsa-sha2-1.3.132.0.37","x509v3-ecdsa-sha2-1.3.132.0.38","ssh-ed25519","ssh-ed448"],"example":"ssh-dss"},"description":"Acceptable host key algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable host key algorithms are\nimplementation-defined."}},"xml":{"name":"host-key","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_key-exchange":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_key-exchange","type":"object","description":"Parameters regarding key exchange.","properties":{"key-exchange-alg":{"type":"array","items":{"type":"string","enum":["diffie-hellman-group-exchange-sha1","diffie-hellman-group-exchange-sha256","diffie-hellman-group1-sha1","diffie-hellman-group14-sha1","diffie-hellman-group14-sha256","diffie-hellman-group15-sha512","diffie-hellman-group16-sha512","diffie-hellman-group17-sha512","diffie-hellman-group18-sha512","ecdh-sha2-nistp256","ecdh-sha2-nistp384","ecdh-sha2-nistp521","ecdh-sha2-1.3.132.0.1","ecdh-sha2-1.2.840.10045.3.1.1","ecdh-sha2-1.3.132.0.33","ecdh-sha2-1.3.132.0.26","ecdh-sha2-1.3.132.0.27","ecdh-sha2-1.3.132.0.16","ecdh-sha2-1.3.132.0.36","ecdh-sha2-1.3.132.0.37","ecdh-sha2-1.3.132.0.38","ecmqv-sha2","gss-group1-sha1-nistp256","gss-group1-sha1-nistp384","gss-group1-sha1-nistp521","gss-group1-sha1-1.3.132.0.1","gss-group1-sha1-1.2.840.10045.3.1.1","gss-group1-sha1-1.3.132.0.33","gss-group1-sha1-1.3.132.0.26","gss-group1-sha1-1.3.132.0.27","gss-group1-sha1-1.3.132.0.16","gss-group1-sha1-1.3.132.0.36","gss-group1-sha1-1.3.132.0.37","gss-group1-sha1-1.3.132.0.38","gss-group14-sha1-nistp256","gss-group14-sha1-nistp384","gss-group14-sha1-nistp521","gss-group14-sha1-1.3.132.0.1","gss-group14-sha1-1.2.840.10045.3.1.1","gss-group14-sha1-1.3.132.0.33","gss-group14-sha1-1.3.132.0.26","gss-group14-sha1-1.3.132.0.27","gss-group14-sha1-1.3.132.0.16","gss-group14-sha1-1.3.132.0.36","gss-group14-sha1-1.3.132.0.37","gss-group14-sha1-1.3.132.0.38","gss-gex-sha1-nistp256","gss-gex-sha1-nistp384","gss-gex-sha1-nistp521","gss-gex-sha1-1.3.132.0.1","gss-gex-sha1-1.2.840.10045.3.1.1","gss-gex-sha1-1.3.132.0.33","gss-gex-sha1-1.3.132.0.26","gss-gex-sha1-1.3.132.0.27","gss-gex-sha1-1.3.132.0.16","gss-gex-sha1-1.3.132.0.36","gss-gex-sha1-1.3.132.0.37","gss-gex-sha1-1.3.132.0.38","gss-","rsa1024-sha1","rsa2048-sha256","ext-info-s","ext-info-c","gss-group14-sha256-nistp256","gss-group14-sha256-nistp384","gss-group14-sha256-nistp521","gss-group14-sha256-1.3.132.0.1","gss-group14-sha256-1.2.840.10045.3.1.1","gss-group14-sha256-1.3.132.0.33","gss-group14-sha256-1.3.132.0.26","gss-group14-sha256-1.3.132.0.27","gss-group14-sha256-1.3.132.0.16","gss-group14-sha256-1.3.132.0.36","gss-group14-sha256-1.3.132.0.37","gss-group14-sha256-1.3.132.0.38","gss-group15-sha512-nistp256","gss-group15-sha512-nistp384","gss-group15-sha512-nistp521","gss-group15-sha512-1.3.132.0.1","gss-group15-sha512-1.2.840.10045.3.1.1","gss-group15-sha512-1.3.132.0.33","gss-group15-sha512-1.3.132.0.26","gss-group15-sha512-1.3.132.0.27","gss-group15-sha512-1.3.132.0.16","gss-group15-sha512-1.3.132.0.36","gss-group15-sha512-1.3.132.0.37","gss-group15-sha512-1.3.132.0.38","gss-group16-sha512-nistp256","gss-group16-sha512-nistp384","gss-group16-sha512-nistp521","gss-group16-sha512-1.3.132.0.1","gss-group16-sha512-1.2.840.10045.3.1.1","gss-group16-sha512-1.3.132.0.33","gss-group16-sha512-1.3.132.0.26","gss-group16-sha512-1.3.132.0.27","gss-group16-sha512-1.3.132.0.16","gss-group16-sha512-1.3.132.0.36","gss-group16-sha512-1.3.132.0.37","gss-group16-sha512-1.3.132.0.38","gss-group17-sha512-nistp256","gss-group17-sha512-nistp384","gss-group17-sha512-nistp521","gss-group17-sha512-1.3.132.0.1","gss-group17-sha512-1.2.840.10045.3.1.1","gss-group17-sha512-1.3.132.0.33","gss-group17-sha512-1.3.132.0.26","gss-group17-sha512-1.3.132.0.27","gss-group17-sha512-1.3.132.0.16","gss-group17-sha512-1.3.132.0.36","gss-group17-sha512-1.3.132.0.37","gss-group17-sha512-1.3.132.0.38","gss-group18-sha512-nistp256","gss-group18-sha512-nistp384","gss-group18-sha512-nistp521","gss-group18-sha512-1.3.132.0.1","gss-group18-sha512-1.2.840.10045.3.1.1","gss-group18-sha512-1.3.132.0.33","gss-group18-sha512-1.3.132.0.26","gss-group18-sha512-1.3.132.0.27","gss-group18-sha512-1.3.132.0.16","gss-group18-sha512-1.3.132.0.36","gss-group18-sha512-1.3.132.0.37","gss-group18-sha512-1.3.132.0.38","gss-nistp256-sha256-nistp256","gss-nistp256-sha256-nistp384","gss-nistp256-sha256-nistp521","gss-nistp256-sha256-1.3.132.0.1","gss-nistp256-sha256-1.2.840.10045.3.1.1","gss-nistp256-sha256-1.3.132.0.33","gss-nistp256-sha256-1.3.132.0.26","gss-nistp256-sha256-1.3.132.0.27","gss-nistp256-sha256-1.3.132.0.16","gss-nistp256-sha256-1.3.132.0.36","gss-nistp256-sha256-1.3.132.0.37","gss-nistp256-sha256-1.3.132.0.38","gss-nistp384-sha384-nistp256","gss-nistp384-sha384-nistp384","gss-nistp384-sha384-nistp521","gss-nistp384-sha384-1.3.132.0.1","gss-nistp384-sha384-1.2.840.10045.3.1.1","gss-nistp384-sha384-1.3.132.0.33","gss-nistp384-sha384-1.3.132.0.26","gss-nistp384-sha384-1.3.132.0.27","gss-nistp384-sha384-1.3.132.0.16","gss-nistp384-sha384-1.3.132.0.36","gss-nistp384-sha384-1.3.132.0.37","gss-nistp384-sha384-1.3.132.0.38","gss-nistp521-sha512-nistp256","gss-nistp521-sha512-nistp384","gss-nistp521-sha512-nistp521","gss-nistp521-sha512-1.3.132.0.1","gss-nistp521-sha512-1.2.840.10045.3.1.1","gss-nistp521-sha512-1.3.132.0.33","gss-nistp521-sha512-1.3.132.0.26","gss-nistp521-sha512-1.3.132.0.27","gss-nistp521-sha512-1.3.132.0.16","gss-nistp521-sha512-1.3.132.0.36","gss-nistp521-sha512-1.3.132.0.37","gss-nistp521-sha512-1.3.132.0.38","gss-curve25519-sha256-nistp256","gss-curve25519-sha256-nistp384","gss-curve25519-sha256-nistp521","gss-curve25519-sha256-1.3.132.0.1","gss-curve25519-sha256-1.2.840.10045.3.1.1","gss-curve25519-sha256-1.3.132.0.33","gss-curve25519-sha256-1.3.132.0.26","gss-curve25519-sha256-1.3.132.0.27","gss-curve25519-sha256-1.3.132.0.16","gss-curve25519-sha256-1.3.132.0.36","gss-curve25519-sha256-1.3.132.0.37","gss-curve25519-sha256-1.3.132.0.38","gss-curve448-sha512-nistp256","gss-curve448-sha512-nistp384","gss-curve448-sha512-nistp521","gss-curve448-sha512-1.3.132.0.1","gss-curve448-sha512-1.2.840.10045.3.1.1","gss-curve448-sha512-1.3.132.0.33","gss-curve448-sha512-1.3.132.0.26","gss-curve448-sha512-1.3.132.0.27","gss-curve448-sha512-1.3.132.0.16","gss-curve448-sha512-1.3.132.0.36","gss-curve448-sha512-1.3.132.0.37","gss-curve448-sha512-1.3.132.0.38","curve25519-sha256","curve448-sha512","sntrup761x25519-sha512","mlkem768nistp256-sha256","mlkem1024nistp384-sha384","mlkem768x25519-sha256"],"example":"diffie-hellman-group-exchange-sha1"},"description":"Acceptable key exchange algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable key exchange algorithms are\nimplementation-defined."}},"xml":{"name":"key-exchange","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_encryption":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_encryption","type":"object","description":"Parameters regarding encryption.","properties":{"encryption-alg":{"type":"array","items":{"type":"string","enum":["3des-cbc","blowfish-cbc","twofish256-cbc","twofish-cbc","twofish192-cbc","twofish128-cbc","aes256-cbc","aes192-cbc","aes128-cbc","serpent256-cbc","serpent192-cbc","serpent128-cbc","arcfour","idea-cbc","cast128-cbc","none","des-cbc","arcfour128","arcfour256","aes128-ctr","aes192-ctr","aes256-ctr","3des-ctr","blowfish-ctr","twofish128-ctr","twofish192-ctr","twofish256-ctr","serpent128-ctr","serpent192-ctr","serpent256-ctr","idea-ctr","cast128-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","chacha20-poly1305"],"example":"3des-cbc"},"description":"Acceptable encryption algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable encryption algorithms are\nimplementation-defined."}},"xml":{"name":"encryption","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_mac":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_transport-params_mac","type":"object","description":"Parameters regarding message authentication code (MAC).","properties":{"mac-alg":{"type":"array","items":{"type":"string","enum":["hmac-sha1","hmac-sha1-96","hmac-md5","hmac-md5-96","none","AEAD_AES_128_GCM","AEAD_AES_256_GCM","hmac-sha2-256","hmac-sha2-512"],"example":"hmac-sha1"},"description":"Acceptable MAC algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable MAC algorithms are\nimplementation-defined."}},"xml":{"name":"mac","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_keepalives":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_ssh-server-parameters_keepalives","type":"object","description":"Configures the keepalive policy to proactively test\nthe aliveness of the SSH client.  An unresponsive SSH\nclient is dropped after approximately max-wait *\nmax-attempts seconds.  Per Section 4 of RFC 4254,\nthe SSH server SHOULD send an SSH_MSG_GLOBAL_REQUEST\nmessage with a purposely nonexistent 'request name'\nvalue (e.g., keepalive@example.com) and the 'want reply'\nvalue set to '1'.","properties":{"max-attempts":{"description":"Sets the maximum number of sequential keepalive\nmessages that can fail to obtain a response from\nthe SSH client before assuming the SSH client is\nno longer alive.","type":"integer","format":"int32","default":3,"example":0},"max-wait":{"description":"Sets the amount of time in seconds after which\nan SSH-level message will be sent to test the\naliveness of the SSH client if no data has been\nreceived from the SSH client.","type":"integer","format":"int32","default":30,"example":1}},"xml":{"name":"keepalives","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_netconf-server-parameters":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_netconf-server-parameters","type":"object","description":"NETCONF-level server parameters to initiate a\nNETCONF over SSH Call Home connection.","properties":{"client-identity-mappings":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_netconf-server-parameters_client-identity-mappings"}},"xml":{"name":"netconf-server-parameters","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_netconf-server-parameters_client-identity-mappings":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_netconf-server-parameters_client-identity-mappings","type":"object","description":"Adds in an 'if-feature' statement\nensuring the 'client-identity-mappings'\ndescendant is enabled only when SSH\nsupports X.509 certificates.","properties":{"cert-to-name":{"type":"array","items":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_netconf-server-parameters_client-identity-mappings_cert-to-name"},"description":"This list defines how certificates are mapped to names.\nThe name is derived by considering each cert-to-name\nlist entry in order.  The cert-to-name entry's fingerprint\ndetermines whether the list entry is a match:\n\n1) If the cert-to-name list entry's fingerprint value\n   matches that of the presented certificate, then consider\n   the list entry a successful match.\n\n2) If the cert-to-name list entry's fingerprint value\n   matches that of a locally held copy of a trusted CA\n   certificate, and that CA certificate was part of the CA\n   certificate chain to the presented certificate, then\n   consider the list entry a successful match.\n\nOnce a matching cert-to-name list entry has been found, the\nmap-type is used to determine how the name associated with\nthe certificate should be determined.  See the map-type\nleaf's description for details on determining the name value.\nIf it is impossible to determine a name from the cert-to-name\nlist entry's data combined with the data presented in the\ncertificate, then additional cert-to-name list entries MUST\nbe searched to look for another potential match.\n\nSecurity administrators are encouraged to make use of\ncertificates with subjectAltName fields that can be mapped to\nnames so that a single root CA certificate can allow all\nchild certificates' subjectAltName fields to map directly to\na name via a 1:1 transformation."},"mapping-required":{"description":"Indicates that the cert-to-name mapping\nis required (i.e., the SSH-level username\nis ignored).","type":"boolean","example":true}},"xml":{"name":"client-identity-mappings","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_netconf-server-parameters_client-identity-mappings_cert-to-name":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_endpoints_endpoint_ssh_netconf-server-parameters_client-identity-mappings_cert-to-name","type":"object","description":"This list defines how certificates are mapped to names.\nThe name is derived by considering each cert-to-name\nlist entry in order.  The cert-to-name entry's fingerprint\ndetermines whether the list entry is a match:\n\n1) If the cert-to-name list entry's fingerprint value\n   matches that of the presented certificate, then consider\n   the list entry a successful match.\n\n2) If the cert-to-name list entry's fingerprint value\n   matches that of a locally held copy of a trusted CA\n   certificate, and that CA certificate was part of the CA\n   certificate chain to the presented certificate, then\n   consider the list entry a successful match.\n\nOnce a matching cert-to-name list entry has been found, the\nmap-type is used to determine how the name associated with\nthe certificate should be determined.  See the map-type\nleaf's description for details on determining the name value.\nIf it is impossible to determine a name from the cert-to-name\nlist entry's data combined with the data presented in the\ncertificate, then additional cert-to-name list entries MUST\nbe searched to look for another potential match.\n\nSecurity administrators are encouraged to make use of\ncertificates with subjectAltName fields that can be mapped to\nnames so that a single root CA certificate can allow all\nchild certificates' subjectAltName fields to map directly to\na name via a 1:1 transformation.","properties":{"map-type":{"description":"Specifies the algorithm used to map the certificate\npresented by the peer to a name.\n\nMappings that need additional configuration objects should\nuse the 'when' statement to make them conditional based on\nthe map-type.","type":"string","enum":["cert-to-name","san-dns-name","san-any","common-name","specified","san-rfc822-name","san-ip-address"],"example":"cert-to-name"},"fingerprint":{"description":"A 'fingerprint' value does not need to be specified\nwhen the 'cert-to-name' mapping is independent of\nfingerprint matching.  A 'cert-to-name' having no\nfingerprint value will match any client certificate\nand therefore should only be present at the end of\nthe user-ordered 'cert-to-name' list.","type":"string","example":"00","minLength":0,"maxLength":2147483647},"name":{"description":"Directly specifies the NETCONF username when the\nmap-type is 'specified'.","type":"string","example":"Some name"},"id":{"description":"The id specifies the order in which the entries in the\ncert-to-name list are searched.  Entries with lower\nnumbers are searched first.","type":"integer","format":"int64","example":0}},"required":["map-type","name"],"xml":{"name":"cert-to-name","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_connection-type":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_connection-type","type":"object","description":"Indicates the NETCONF server's preference for how the\nNETCONF connection is maintained.","properties":{"persistent":{"$ref":"#/components/schemas/ietf-netconf-server_netconf-server_call-home_netconf-client_connection-type_persistent"}},"xml":{"name":"connection-type","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_connection-type_persistent":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_connection-type_persistent","type":"object","description":"Maintain a persistent connection to the NETCONF\nclient. If the connection goes down, immediately\nstart trying to reconnect to the NETCONF client,\nusing the reconnection strategy.\n\nThis connection type minimizes any NETCONF client\nto NETCONF server data-transfer delay, albeit at\nthe expense of holding resources longer.","properties":{},"xml":{"name":"persistent","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-netconf-server_netconf-server_call-home_netconf-client_reconnect-strategy":{"title":"ietf-netconf-server_netconf-server_call-home_netconf-client_reconnect-strategy","type":"object","description":"The reconnection strategy directs how a NETCONF server\nreconnects to a NETCONF client, after discovering its\nconnection to the client has dropped, even if due to a\nreboot.  The NETCONF server starts with the specified\nendpoint and tries to connect to it max-attempts times\nbefore trying the next endpoint in the list (round\nrobin).","properties":{"max-attempts":{"description":"Specifies the number times the NETCONF server tries\nto connect to a specific endpoint before moving on\nto the next endpoint in the list (round robin).","type":"integer","format":"int32","default":3,"example":1},"start-with":{"description":"Specifies which of the NETCONF client's endpoints\nthe NETCONF server should start with when trying\nto connect to the NETCONF client.","type":"string","enum":["first-listed","last-connected","random-selection"],"default":"first-listed","example":"first-listed"},"max-wait":{"description":"Specifies the amount of time in seconds after which,\nif the connection is not established, an endpoint\nconnection attempt is considered unsuccessful.","type":"integer","format":"int32","default":5,"example":1}},"xml":{"name":"reconnect-strategy","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-server"}},"ietf-network-instance_network-instances":{"title":"ietf-network-instance_network-instances","type":"object","description":"Network instances, each of which consists of\nVRFs and/or VSIs.","properties":{"network-instance":{"type":"array","items":{"$ref":"#/components/schemas/ietf-network-instance_network-instances_network-instance"},"description":"List of network instances."}},"xml":{"name":"network-instances","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance"}},"ietf-network-instance_network-instances_network-instance":{"title":"ietf-network-instance_network-instances_network-instance","type":"object","description":"List of network instances.","properties":{"vrf-root":{"$ref":"#/components/schemas/ietf-network-instance_network-instances_network-instance_vrf-root"},"name":{"description":"device-scoped identifier for the network\ninstance.","type":"string","example":"Some name"},"description":{"description":"Description of the network instance\nand its intended purpose.","type":"string","example":"Some description"},"enabled":{"description":"Flag indicating whether or not the network\ninstance is enabled.","type":"boolean","default":true,"example":true}},"required":["name"],"xml":{"name":"network-instance","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance"}},"ietf-network-instance_network-instances_network-instance_vrf-root":{"title":"ietf-network-instance_network-instances_network-instance_vrf-root","type":"object","description":"Container for mount point.","properties":{},"xml":{"name":"vrf-root","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance"}},"ietf-restconf-monitoring_restconf-state":{"title":"ietf-restconf-monitoring_restconf-state","type":"object","description":"Contains RESTCONF protocol monitoring information.","properties":{"capabilities":{"$ref":"#/components/schemas/ietf-restconf-monitoring_restconf-state_capabilities"},"streams":{"$ref":"#/components/schemas/ietf-restconf-monitoring_restconf-state_streams"}},"xml":{"name":"restconf-state","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"}},"ietf-restconf-monitoring_restconf-state_capabilities":{"title":"ietf-restconf-monitoring_restconf-state_capabilities","type":"object","description":"Contains a list of protocol capability URIs.","properties":{"capability":{"type":"array","items":{"type":"string","example":"Some capability"},"description":"A RESTCONF protocol capability URI."}},"xml":{"name":"capabilities","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"}},"ietf-restconf-monitoring_restconf-state_streams":{"title":"ietf-restconf-monitoring_restconf-state_streams","type":"object","description":"Container representing the notification event streams\nsupported by the server.","properties":{"stream":{"type":"array","items":{"$ref":"#/components/schemas/ietf-restconf-monitoring_restconf-state_streams_stream"},"description":"Each entry describes an event stream supported by\nthe server."}},"xml":{"name":"streams","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"}},"ietf-restconf-monitoring_restconf-state_streams_stream":{"title":"ietf-restconf-monitoring_restconf-state_streams_stream","type":"object","description":"Each entry describes an event stream supported by\nthe server.","properties":{"access":{"type":"array","items":{"$ref":"#/components/schemas/ietf-restconf-monitoring_restconf-state_streams_stream_access"},"description":"The server will create an entry in this list for each\nencoding format that is supported for this stream.\nThe media type 'text/event-stream' is expected\nfor all event streams.  This list identifies the\nsubtypes supported for this stream.","example":[{"location":"Some location","encoding":"Some encoding"}],"minItems":1},"replay-support":{"description":"Indicates if replay buffer is supported for this stream.\nIf 'true', then the server MUST support the 'start-time'\nand 'stop-time' query parameters for this stream.","type":"boolean","default":false,"example":true},"name":{"description":"The stream name.","type":"string","example":"Some name"},"description":{"description":"Description of stream content.","type":"string","example":"Some description"},"replay-log-creation-time":{"description":"Indicates the time the replay log for this stream\nwas created.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647}},"required":["access"],"xml":{"name":"stream","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"}},"ietf-restconf-monitoring_restconf-state_streams_stream_access":{"title":"ietf-restconf-monitoring_restconf-state_streams_stream_access","type":"object","description":"The server will create an entry in this list for each\nencoding format that is supported for this stream.\nThe media type 'text/event-stream' is expected\nfor all event streams.  This list identifies the\nsubtypes supported for this stream.","properties":{"location":{"description":"Contains a URL that represents the entry point\nfor establishing notification delivery via\nserver-sent events.","type":"string","example":"Some location"},"encoding":{"description":"This is the secondary encoding format within the\n'text/event-stream' encoding used by all streams.\nThe type 'xml' is supported for XML encoding.\nThe type 'json' is supported for JSON encoding.","type":"string","example":"Some encoding"}},"required":["location"],"xml":{"name":"access","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"}},"ietf-subscribed-notifications_establish-subscription_input":{"title":"ietf-subscribed-notifications_establish-subscription_input","type":"object","properties":{"stream-filter-name":{"description":"References an existing event stream filter that is\nto be applied to an event stream for the\nsubscription.","type":"string","example":"Some stream-filter-name"},"stream":{"description":"Indicates the event stream to be considered for\nthis subscription.","type":"string","example":"Some stream"},"stop-time":{"description":"Identifies a time after which notification messages for a\nsubscription should not be sent.  If 'stop-time' is not\npresent, the notification messages will continue until the\nsubscription is terminated.  If 'replay-start-time' exists,\n'stop-time' must be for a subsequent time.  If\n'replay-start-time' doesn't exist, 'stop-time', when\nestablished, must be for a future time.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"encoding":{"description":"The type of encoding for the subscribed data.  If not\nincluded as part of the RPC, the encoding MUST be set by\nthe publisher to be the encoding used by this RPC.","type":"string","enum":["encoding","encode-json","encode-xml"],"example":"encoding"}},"required":["stream-filter-name","stream"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"}},"ietf-subscribed-notifications_establish-subscription_output":{"title":"ietf-subscribed-notifications_establish-subscription_output","type":"object","properties":{"id":{"description":"Identifier used for this subscription.","type":"integer","format":"int64","example":0},"ietf-restconf-subscribed-notifications:uri":{"description":"Location of a subscription-specific URI on the publisher.","type":"string","example":"Some uri","xml":{"name":"uri","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications"}}},"required":["id"],"xml":{"name":"output","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"}},"ietf-subscribed-notifications_modify-subscription_input":{"title":"ietf-subscribed-notifications_modify-subscription_input","type":"object","properties":{"id":{"description":"Identifier to use for this subscription.","type":"integer","format":"int64","example":0},"stream-filter-name":{"description":"References an existing event stream filter that is\nto be applied to an event stream for the\nsubscription.","type":"string","example":"Some stream-filter-name"},"stop-time":{"description":"Identifies a time after which notification messages for a\nsubscription should not be sent.  If 'stop-time' is not\npresent, the notification messages will continue until the\nsubscription is terminated.  If 'replay-start-time' exists,\n'stop-time' must be for a subsequent time.  If\n'replay-start-time' doesn't exist, 'stop-time', when\nestablished, must be for a future time.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647}},"required":["id","stream-filter-name"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"}},"ietf-subscribed-notifications_delete-subscription_input":{"title":"ietf-subscribed-notifications_delete-subscription_input","type":"object","properties":{"id":{"description":"Identifier of the subscription that is to be deleted.\nOnly subscriptions that were created using\n'establish-subscription' from the same origin as this RPC\ncan be deleted via this RPC.","type":"integer","format":"int64","example":0}},"required":["id"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"}},"ietf-subscribed-notifications_kill-subscription_input":{"title":"ietf-subscribed-notifications_kill-subscription_input","type":"object","properties":{"id":{"description":"Identifier of the subscription that is to be deleted.\nOnly subscriptions that were created using\n'establish-subscription' can be deleted via this RPC.","type":"integer","format":"int64","example":0}},"required":["id"],"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"}},"ietf-subscribed-notifications_streams":{"title":"ietf-subscribed-notifications_streams","type":"object","description":"Contains information on the built-in event streams provided by\nthe publisher.","properties":{"stream":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_streams_stream"},"description":"Identifies the built-in event streams that are supported by\nthe publisher."}},"xml":{"name":"streams","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"}},"ietf-subscribed-notifications_streams_stream":{"title":"ietf-subscribed-notifications_streams_stream","type":"object","description":"Identifies the built-in event streams that are supported by\nthe publisher.","properties":{"name":{"description":"A handle for a system-provided event stream made up of a\nsequential set of event records, each of which is\ncharacterized by its own domain and semantics.","type":"string","example":"Some name"},"description":{"description":"A description of the event stream, including such\ninformation as the type of event records that are\navailable in this event stream.","type":"string","example":"Some description"}},"xml":{"name":"stream","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"}},"ietf-subscribed-notifications_filters":{"title":"ietf-subscribed-notifications_filters","type":"object","description":"Contains a list of configurable filters that can be applied to\nsubscriptions.  This facilitates the reuse of complex filters\nonce defined.","properties":{"stream-filter":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_filters_stream-filter"},"description":"A list of preconfigured filters that can be applied to\nsubscriptions."}},"xml":{"name":"filters","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"}},"ietf-subscribed-notifications_filters_stream-filter":{"title":"ietf-subscribed-notifications_filters_stream-filter","type":"object","description":"A list of preconfigured filters that can be applied to\nsubscriptions.","properties":{"stream-subtree-filter":{"description":"Event stream evaluation criteria encoded in the syntax of\na subtree filter as defined in RFC 6241, Section 6.\n\nThe subtree filter is applied to the representation of\nindividual, delineated event records as contained in the\nevent stream.\n\nIf the subtree filter returns a non-empty node set, the\nfilter matches the event record, and the event record is\nincluded in the notification message sent to the\nreceivers. (This is unknown data, need to be filled by user.)","example":{},"type":"object"},"name":{"description":"A name to differentiate between filters.","type":"string","example":"Some name"}},"xml":{"name":"stream-filter","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"}},"ietf-subscribed-notifications_subscriptions":{"title":"ietf-subscribed-notifications_subscriptions","type":"object","description":"Contains the list of currently active subscriptions, i.e.,\nsubscriptions that are currently in effect, used for\nsubscription management and monitoring purposes.  This\nincludes subscriptions that have been set up via\nRPC primitives as well as subscriptions that have been\nestablished via configuration.","properties":{"subscription":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription"},"description":"The identity and specific parameters of a subscription.\nSubscriptions in this list can be created using a control\nchannel or RPC or can be established through configuration.\n\nIf the 'kill-subscription' RPC or configuration operations\nare used to delete a subscription, a\n'subscription-terminated' message is sent to any active or\nsuspended receivers."}},"xml":{"name":"subscriptions","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"}},"ietf-subscribed-notifications_subscriptions_subscription":{"title":"ietf-subscribed-notifications_subscriptions_subscription","type":"object","description":"The identity and specific parameters of a subscription.\nSubscriptions in this list can be created using a control\nchannel or RPC or can be established through configuration.\n\nIf the 'kill-subscription' RPC or configuration operations\nare used to delete a subscription, a\n'subscription-terminated' message is sent to any active or\nsuspended receivers.","properties":{"stop-time":{"description":"Identifies a time after which notification messages for a\nsubscription should not be sent.  If 'stop-time' is not\npresent, the notification messages will continue until the\nsubscription is terminated.  If 'replay-start-time' exists,\n'stop-time' must be for a subsequent time.  If\n'replay-start-time' doesn't exist, 'stop-time', when\nestablished, must be for a future time.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"receivers":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers"},"id":{"description":"Identifier of a subscription; unique in a given\npublisher.","type":"integer","format":"int64","example":0},"encoding":{"description":"The type of encoding for notification messages.  For a\ndynamic subscription, if not included as part of an\n'establish-subscription' RPC, the encoding will be populated\nwith the encoding used by that RPC.  For a configured\nsubscription, if not explicitly configured, the encoding\nwill be the default encoding for an underlying transport.","type":"string","enum":["encoding","encode-json","encode-xml"],"example":"encoding"},"stream-filter-name":{"description":"References an existing event stream filter that is\nto be applied to an event stream for the\nsubscription.","type":"string","example":"Some stream-filter-name"},"stream":{"description":"Indicates the event stream to be considered for this\nsubscription.  If an event stream has been removed\nand can no longer be referenced by an active\nsubscription, send a 'subscription-terminated'\nnotification with 'stream-unavailable' as the reason.\nIf a configured subscription refers to a nonexistent\nevent stream, move that subscription to the\n'invalid' state.","type":"string","example":"Some stream"}},"required":["stream-filter-name","stream"],"xml":{"name":"subscription","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"}},"ietf-subscribed-notifications_subscriptions_subscription_receivers":{"title":"ietf-subscribed-notifications_subscriptions_subscription_receivers","type":"object","description":"Set of receivers in a subscription.","properties":{"receiver":{"type":"array","items":{"$ref":"#/components/schemas/ietf-subscribed-notifications_subscriptions_subscription_receivers_receiver"},"description":"A host intended as a recipient for the notification\nmessages of a subscription.  For configured\nsubscriptions, transport-specific network parameters\n(or a leafref to those parameters) may be augmented to a\nspecific receiver in this list.","example":[{"name":"Some name","state":"active"}],"minItems":1}},"required":["receiver"],"xml":{"name":"receivers","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"}},"ietf-subscribed-notifications_subscriptions_subscription_receivers_receiver":{"title":"ietf-subscribed-notifications_subscriptions_subscription_receivers_receiver","type":"object","description":"A host intended as a recipient for the notification\nmessages of a subscription.  For configured\nsubscriptions, transport-specific network parameters\n(or a leafref to those parameters) may be augmented to a\nspecific receiver in this list.","properties":{"name":{"description":"Identifies a unique receiver for a subscription.","type":"string","example":"Some name"}},"xml":{"name":"receiver","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"}},"ietf-yang-library_yang-library":{"title":"ietf-yang-library_yang-library","type":"object","description":"Container holding the entire YANG library of this server.","properties":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_schema"},"description":"A datastore schema that may be used by one or more\ndatastores.\n\nThe schema must be valid and referentially complete, i.e.,\nit must contain modules to satisfy all used import\nstatements for all modules specified in the schema."},"module-set":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set"},"description":"A set of modules that may be used by one or more schemas.\n\nA module set does not have to be referentially complete,\ni.e., it may define modules that contain import statements\nfor other modules not included in the module set."},"datastore":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_datastore"},"description":"A datastore supported by this server.\n\nEach datastore indicates which schema it supports.\n\nThe server MUST instantiate one entry in this list per\nspecific datastore it supports.\nEach datastore entry with the same datastore schema SHOULD\nreference the same schema."},"content-id":{"description":"A server-generated identifier of the contents of the\n'/yang-library' tree.  The server MUST change the value of\nthis leaf if the information represented by the\n'/yang-library' tree, except '/yang-library/content-id', has\nchanged.","type":"string","example":"Some content-id"}},"required":["content-id"],"xml":{"name":"yang-library","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library"}},"ietf-yang-library_yang-library_module-set":{"title":"ietf-yang-library_yang-library_module-set","type":"object","description":"A set of modules that may be used by one or more schemas.\n\nA module set does not have to be referentially complete,\ni.e., it may define modules that contain import statements\nfor other modules not included in the module set.","properties":{"import-only-module":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set_import-only-module"},"description":"An entry in this list indicates that the server imports\nreusable definitions from the specified revision of the\nmodule but does not implement any protocol-accessible\nobjects from this revision.\n\nMultiple entries for the same module name MAY exist.  This\ncan occur if multiple modules import the same module but\nspecify different revision dates in the import statements."},"module":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set_module"},"description":"An entry in this list represents a module implemented by the\nserver, as per Section 5.6.5 of RFC 7950, with a particular\nset of supported features and deviations."},"name":{"description":"An arbitrary name of the module set.","type":"string","example":"Some name"}},"xml":{"name":"module-set","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library"}},"ietf-yang-library_yang-library_module-set_module":{"title":"ietf-yang-library_yang-library_module-set_module","type":"object","description":"An entry in this list represents a module implemented by the\nserver, as per Section 5.6.5 of RFC 7950, with a particular\nset of supported features and deviations.","properties":{"feature":{"type":"array","items":{"type":"string","example":"A","minLength":1,"maxLength":2147483647},"description":"List of all YANG feature names from this module that are\nsupported by the server, regardless whether they are defined\nin the module or any included submodule."},"namespace":{"description":"The XML namespace identifier for this module.","type":"string","example":"Some namespace"},"name":{"description":"The YANG module or submodule name.","type":"string","example":"A","minLength":1,"maxLength":2147483647},"submodule":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set_module_submodule"},"description":"Each entry represents one submodule within the\nparent module."},"location":{"type":"array","items":{"type":"string","example":"Some location"},"description":"Contains a URL that represents the YANG schema\nresource for this module or submodule.\n\nThis leaf will only be present if there is a URL\navailable for retrieval of the schema for this entry."},"deviation":{"type":"array","items":{"type":"string","example":"A","minLength":1,"maxLength":2147483647},"description":"List of all YANG deviation modules used by this server to\nmodify the conformance of the module associated with this\nentry.  Note that the same module can be used for deviations\nfor multiple modules, so the same entry MAY appear within\nmultiple 'module' entries.\n\nThis reference MUST NOT (directly or indirectly)\nrefer to the module being deviated.\n\nRobust clients may want to make sure that they handle a\nsituation where a module deviates itself (directly or\nindirectly) gracefully."},"revision":{"description":"The YANG module or submodule revision date.  If no revision\nstatement is present in the YANG module or submodule, this\nleaf is not instantiated.","type":"string","example":"0000-00-00","minLength":0,"maxLength":2147483647}},"required":["namespace","name"],"xml":{"name":"module","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library"}},"ietf-yang-library_yang-library_module-set_module_submodule":{"title":"ietf-yang-library_yang-library_module-set_module_submodule","type":"object","description":"Each entry represents one submodule within the\nparent module.","properties":{"name":{"description":"The YANG module or submodule name.","type":"string","example":"A","minLength":1,"maxLength":2147483647},"location":{"type":"array","items":{"type":"string","example":"Some location"},"description":"Contains a URL that represents the YANG schema\nresource for this module or submodule.\n\nThis leaf will only be present if there is a URL\navailable for retrieval of the schema for this entry."},"revision":{"description":"The YANG module or submodule revision date.  If no revision\nstatement is present in the YANG module or submodule, this\nleaf is not instantiated.","type":"string","example":"0000-00-00","minLength":0,"maxLength":2147483647}},"required":["name"],"xml":{"name":"submodule","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library"}},"ietf-yang-library_yang-library_module-set_import-only-module":{"title":"ietf-yang-library_yang-library_module-set_import-only-module","type":"object","description":"An entry in this list indicates that the server imports\nreusable definitions from the specified revision of the\nmodule but does not implement any protocol-accessible\nobjects from this revision.\n\nMultiple entries for the same module name MAY exist.  This\ncan occur if multiple modules import the same module but\nspecify different revision dates in the import statements.","properties":{"name":{"description":"The YANG module name.","type":"string","example":"A","minLength":1,"maxLength":2147483647},"namespace":{"description":"The XML namespace identifier for this module.","type":"string","example":"Some namespace"},"submodule":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_yang-library_module-set_import-only-module_submodule"},"description":"Each entry represents one submodule within the\nparent module."},"location":{"type":"array","items":{"type":"string","example":"Some location"},"description":"Contains a URL that represents the YANG schema\nresource for this module or submodule.\n\nThis leaf will only be present if there is a URL\navailable for retrieval of the schema for this entry."},"revision":{"description":"The YANG module revision date.\nA zero-length string is used if no revision statement\nis present in the YANG module.","type":"string","example":"0000-00-00","minLength":0,"maxLength":2147483647}},"required":["namespace"],"xml":{"name":"import-only-module","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library"}},"ietf-yang-library_yang-library_module-set_import-only-module_submodule":{"title":"ietf-yang-library_yang-library_module-set_import-only-module_submodule","type":"object","description":"Each entry represents one submodule within the\nparent module.","properties":{"name":{"description":"The YANG module or submodule name.","type":"string","example":"A","minLength":1,"maxLength":2147483647},"location":{"type":"array","items":{"type":"string","example":"Some location"},"description":"Contains a URL that represents the YANG schema\nresource for this module or submodule.\n\nThis leaf will only be present if there is a URL\navailable for retrieval of the schema for this entry."},"revision":{"description":"The YANG module or submodule revision date.  If no revision\nstatement is present in the YANG module or submodule, this\nleaf is not instantiated.","type":"string","example":"0000-00-00","minLength":0,"maxLength":2147483647}},"required":["name"],"xml":{"name":"submodule","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library"}},"ietf-yang-library_yang-library_schema":{"title":"ietf-yang-library_yang-library_schema","type":"object","description":"A datastore schema that may be used by one or more\ndatastores.\n\nThe schema must be valid and referentially complete, i.e.,\nit must contain modules to satisfy all used import\nstatements for all modules specified in the schema.","properties":{"module-set":{"type":"array","items":{"type":"string","example":"Some module-set"},"description":"A set of module-sets that are included in this schema.\nIf a non-import-only module appears in multiple module\nsets, then the module revision and the associated features\nand deviations must be identical."},"name":{"description":"An arbitrary name of the schema.","type":"string","example":"Some name"}},"xml":{"name":"schema","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library"}},"ietf-yang-library_yang-library_datastore":{"title":"ietf-yang-library_yang-library_datastore","type":"object","description":"A datastore supported by this server.\n\nEach datastore indicates which schema it supports.\n\nThe server MUST instantiate one entry in this list per\nspecific datastore it supports.\nEach datastore entry with the same datastore schema SHOULD\nreference the same schema.","properties":{"schema":{"description":"A reference to the schema supported by this datastore.\nAll non-import-only modules of the schema are implemented\nwith their associated features and deviations.","type":"string","example":"Some schema"},"name":{"description":"The identity of the datastore.","type":"string","enum":["datastore","conventional","intended","startup","running","candidate","dynamic","operational"],"example":"datastore"}},"required":["schema"],"xml":{"name":"datastore","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library"}},"ietf-yang-library_modules-state":{"title":"ietf-yang-library_modules-state","type":"object","description":"Contains YANG module monitoring information.","properties":{"module-set-id":{"description":"Contains a server-specific identifier representing\nthe current set of modules and submodules.  The\nserver MUST change the value of this leaf if the\ninformation represented by the 'module' list instances\nhas changed.","type":"string","example":"Some module-set-id"},"module":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_modules-state_module"},"description":"Each entry represents one revision of one module\ncurrently supported by the server."}},"required":["module-set-id"],"xml":{"name":"modules-state","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library"}},"ietf-yang-library_modules-state_module":{"title":"ietf-yang-library_modules-state_module","type":"object","description":"Each entry represents one revision of one module\ncurrently supported by the server.","properties":{"conformance-type":{"description":"Indicates the type of conformance the server is claiming\nfor the YANG module identified by this entry.","type":"string","enum":["implement","import"],"example":"implement"},"schema":{"description":"Contains a URL that represents the YANG schema\nresource for this module or submodule.\n\nThis leaf will only be present if there is a URL\navailable for retrieval of the schema for this entry.","type":"string","example":"Some schema"},"feature":{"type":"array","items":{"type":"string","example":"A","minLength":1,"maxLength":2147483647},"description":"List of YANG feature names from this module that are\nsupported by the server, regardless of whether they are\ndefined in the module or any included submodule."},"namespace":{"description":"The XML namespace identifier for this module.","type":"string","example":"Some namespace"},"name":{"description":"The YANG module or submodule name.","type":"string","example":"A","minLength":1,"maxLength":2147483647},"submodule":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_modules-state_module_submodule"},"description":"Each entry represents one submodule within the\nparent module."},"deviation":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-library_modules-state_module_deviation"},"description":"List of YANG deviation module names and revisions\nused by this server to modify the conformance of\nthe module associated with this entry.  Note that\nthe same module can be used for deviations for\nmultiple modules, so the same entry MAY appear\nwithin multiple 'module' entries.\n\nThe deviation module MUST be present in the 'module'\nlist, with the same name and revision values.\nThe 'conformance-type' value will be 'implement' for\nthe deviation module."},"revision":{"description":"The YANG module or submodule revision date.\nA zero-length string is used if no revision statement\nis present in the YANG module or submodule.","type":"string","example":"0000-00-00","minLength":0,"maxLength":2147483647}},"required":["conformance-type","namespace"],"xml":{"name":"module","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library"}},"ietf-yang-library_modules-state_module_deviation":{"title":"ietf-yang-library_modules-state_module_deviation","type":"object","description":"List of YANG deviation module names and revisions\nused by this server to modify the conformance of\nthe module associated with this entry.  Note that\nthe same module can be used for deviations for\nmultiple modules, so the same entry MAY appear\nwithin multiple 'module' entries.\n\nThe deviation module MUST be present in the 'module'\nlist, with the same name and revision values.\nThe 'conformance-type' value will be 'implement' for\nthe deviation module.","properties":{"name":{"description":"The YANG module or submodule name.","type":"string","example":"A","minLength":1,"maxLength":2147483647},"revision":{"description":"The YANG module or submodule revision date.\nA zero-length string is used if no revision statement\nis present in the YANG module or submodule.","type":"string","example":"0000-00-00","minLength":0,"maxLength":2147483647}},"xml":{"name":"deviation","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library"}},"ietf-yang-library_modules-state_module_submodule":{"title":"ietf-yang-library_modules-state_module_submodule","type":"object","description":"Each entry represents one submodule within the\nparent module.","properties":{"schema":{"description":"Contains a URL that represents the YANG schema\nresource for this module or submodule.\n\nThis leaf will only be present if there is a URL\navailable for retrieval of the schema for this entry.","type":"string","example":"Some schema"},"name":{"description":"The YANG module or submodule name.","type":"string","example":"A","minLength":1,"maxLength":2147483647},"revision":{"description":"The YANG module or submodule revision date.\nA zero-length string is used if no revision statement\nis present in the YANG module or submodule.","type":"string","example":"0000-00-00","minLength":0,"maxLength":2147483647}},"xml":{"name":"submodule","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library"}},"ietf-yang-schema-mount_schema-mounts":{"title":"ietf-yang-schema-mount_schema-mounts","type":"object","description":"Contains information about the structure of the overall\nmounted data model implemented in the server.","properties":{"mount-point":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-schema-mount_schema-mounts_mount-point"},"description":"Each entry of this list specifies a schema for a particular\nmount point.\n\nEach mount point MUST be defined using the 'mount-point'\nextension in one of the modules listed in the server's\nYANG library instance with conformance type 'implement'."},"namespace":{"type":"array","items":{"$ref":"#/components/schemas/ietf-yang-schema-mount_schema-mounts_namespace"},"description":"This list provides a mapping of namespace prefixes that are\nused in XPath expressions of 'parent-reference' leafs to the\ncorresponding namespace URI references."}},"xml":{"name":"schema-mounts","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount"}},"ietf-yang-schema-mount_schema-mounts_namespace":{"title":"ietf-yang-schema-mount_schema-mounts_namespace","type":"object","description":"This list provides a mapping of namespace prefixes that are\nused in XPath expressions of 'parent-reference' leafs to the\ncorresponding namespace URI references.","properties":{"prefix":{"description":"Namespace prefix.","type":"string","example":"A","minLength":1,"maxLength":2147483647},"uri":{"description":"Namespace URI reference.","type":"string","example":"Some uri"}},"xml":{"name":"namespace","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount"}},"ietf-yang-schema-mount_schema-mounts_mount-point":{"title":"ietf-yang-schema-mount_schema-mounts_mount-point","type":"object","description":"Each entry of this list specifies a schema for a particular\nmount point.\n\nEach mount point MUST be defined using the 'mount-point'\nextension in one of the modules listed in the server's\nYANG library instance with conformance type 'implement'.","properties":{"inline":{"$ref":"#/components/schemas/ietf-yang-schema-mount_schema-mounts_mount-point_inline"},"module":{"description":"Name of a module containing the mount point.","type":"string","example":"A","minLength":1,"maxLength":2147483647},"label":{"description":"Label of the mount point defined using the 'mount-point'\nextension.","type":"string","example":"A","minLength":1,"maxLength":2147483647},"config":{"description":"If this leaf is set to 'false', then all data nodes in the\nmounted schema are read-only ('config false'), regardless\nof their 'config' property.","type":"boolean","default":true,"example":true}},"xml":{"name":"mount-point","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount"}},"ietf-yang-schema-mount_schema-mounts_mount-point_inline":{"title":"ietf-yang-schema-mount_schema-mounts_mount-point_inline","type":"object","description":"This node indicates that the server has mounted at least\nthe module 'ietf-yang-library' at the mount point, and\nits instantiation provides the information about the\nmounted schema.\n\nDifferent instances of the mount point may have\ndifferent schemas mounted.","properties":{},"xml":{"name":"inline","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount"}},"jsonrpc_force-refresh_output":{"title":"jsonrpc_force-refresh_output","type":"object","properties":{"result":{"description":"Refresh operation result - true if successful, false otherwise.","type":"boolean","example":true}},"xml":{"name":"output","namespace":"urn:opendaylight:jsonrpc"}},"jsonrpc_force-reload_output":{"title":"jsonrpc_force-reload_output","type":"object","properties":{"result":{"description":"Reload operation result - true if successful, false otherwise.","type":"boolean","example":true}},"xml":{"name":"output","namespace":"urn:opendaylight:jsonrpc"}},"jsonrpc_config":{"title":"jsonrpc_config","type":"object","properties":{"who-am-i":{"description":"The URI of this controller's JSON-RPC endpoint at which remote peers can access\nthe controller's data stores. The JSON-RPC methods supported at this endpoint\nare documented in the 'opendaylight-jsonrpc-data' YANG module.\n\n*** Note that this endpoint gives full read/write access to both the controller's\nconfig data store and operational data store, without restriction. ***","type":"string","example":"Some who-am-i"},"configured-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints"},"description":"For each named entity, the JSON-RPC peer endpoints that comprise all, or part,\nof its remote implementation. For parts of a named entity's remote\nimplementation that are not covered by an entry in this list, the peer endpoint\nfor that path (module subtree) will be learned from 'governance-root'.\n\nAdding a new element to this list introduces a new named entity which this\nextension will mount in the controller. Deleting a whole element will cause\nthis extension to unmount the named entity in the controller. Modifying an\nexisting named entity does not result in the named entity being remounted:\ndelete and add back to achieve this effect."},"governance-root":{"description":"The URI of a remote peer which implements the JSON-RPC methods documented in\nthe 'opendaylight-jsonrpc-service' and 'opendaylight-jsonrpc-module' YANG modules.\n\nWhen configured, the YANG modules required to mount a named entity are fetched\nfrom the remote peer by making a 'source' call to it. In this manner the remote\npeer acts as a single source of YANG modules for both the controller and the\nremote peer implementations. Otherwise, when this leaf is not configured, the\nYANG modules required to mount a named entity must be available in the controller.\n\nWhen configured and a data store access or RPC operation is made for a named\nentity, if there is no corresponding peer endpoint in this module's\n'actual-endpoints' for that operation, then a 'governance' call is made to\n'governance-root' to identify the peer endpoint. Any relationships\nidentified are added to 'actual-endpoints'. Otherwise, when this leaf is not\nconfigured, then the absence of a required peer endpoint in 'actual-endpoints'\nfor the operation is an error.","type":"string","example":"Some governance-root"}},"xml":{"name":"config","namespace":"urn:opendaylight:jsonrpc"}},"jsonrpc_config_configured-endpoints":{"title":"jsonrpc_config_configured-endpoints","type":"object","description":"For each named entity, the JSON-RPC peer endpoints that comprise all, or part,\nof its remote implementation. For parts of a named entity's remote\nimplementation that are not covered by an entry in this list, the peer endpoint\nfor that path (module subtree) will be learned from 'governance-root'.\n\nAdding a new element to this list introduces a new named entity which this\nextension will mount in the controller. Deleting a whole element will cause\nthis extension to unmount the named entity in the controller. Modifying an\nexisting named entity does not result in the named entity being remounted:\ndelete and add back to achieve this effect.","properties":{"rpc-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_rpc-endpoints"},"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module rpc) for\na named entity. A YANG rpc statement with name 'method' in 'module' corresponds\nto 'path':\n\n{\"module:method\":{}}\n\nThe endpoint selection algorithm specified for 'data-config-endpoints' also\napplies here.\n\nThe remote peer which implements the module rpc for 'path' must implement\nthat rpc as a named JSON-RPC method. The controller may make a JSON-RPC request\nusing either a method of \"module:method\" or \"method\"."},"name":{"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints.","type":"string","example":"Some name"},"data-config-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_data-config-endpoints"},"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's config data store.\n\nThis extension selects the remote peer to handle a request using a longest\n'path' first match (similar to route prefix matching in IP routing). As such\nthe shortest path, an empty JSON object, {}, may be used to specify a default\npeer, which handles the request in the absence of a more specific 'path' match.\nThe shortest path for a specific module identifies the tree for one root node:\n\n{\"module:root\":{}}\n\nEach listed remote peer must implement the JSON-RPC methods documented in the\n'opendaylight-jsonrpc-data' YANG module."},"notification-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_notification-endpoints"},"description":"The JSON-RPC peer endpoint remotely generating notifications for the 'path'\nmodule notification. A YANG notification statement with name 'notification'\nin 'module' corresponds to 'path'.\n\n{\"module:notification\":{}}\n\nThe remote peer which implements the notification for 'path' must implement\nthat as a JSON-RPC 2.0 notification\n\nTransport specific options (f.e. pub/sub topic) are supplied in the query part\nof the uri."},"data-operational-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_configured-endpoints_data-operational-endpoints"},"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's operational data store.\n\nThe endpoint selection algorithm and JSON-RPC methods specified for\n'data-config-endpoints' also apply here."},"modules":{"type":"array","minItems":1,"items":{"type":"string","example":"A","minLength":1,"maxLength":2147483647},"description":"A list of all YANG modules supported by this entity. The list must include all\nmodules and submodules that are dependencies (imported or included) of other\nmodules or submodules in the list. The order of modules and submodules in the\nlist is not important.","example":["A"]}},"required":["name","modules"],"xml":{"name":"configured-endpoints","namespace":"urn:opendaylight:jsonrpc"}},"jsonrpc_config_configured-endpoints_data-config-endpoints":{"title":"jsonrpc_config_configured-endpoints_data-config-endpoints","type":"object","description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's config data store.\n\nThis extension selects the remote peer to handle a request using a longest\n'path' first match (similar to route prefix matching in IP routing). As such\nthe shortest path, an empty JSON object, {}, may be used to specify a default\npeer, which handles the request in the absence of a more specific 'path' match.\nThe shortest path for a specific module identifies the tree for one root node:\n\n{\"module:root\":{}}\n\nEach listed remote peer must implement the JSON-RPC methods documented in the\n'opendaylight-jsonrpc-data' YANG module.","properties":{"path":{"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC.","type":"string","example":"Some path"},"endpoint-uri":{"description":"The URI of the JSON-RPC peer endpoint remotely implementing 'path'.","type":"string","example":"Some endpoint-uri"}},"required":["path","endpoint-uri"],"xml":{"name":"data-config-endpoints","namespace":"urn:opendaylight:jsonrpc"}},"jsonrpc_config_configured-endpoints_data-operational-endpoints":{"title":"jsonrpc_config_configured-endpoints_data-operational-endpoints","type":"object","description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's operational data store.\n\nThe endpoint selection algorithm and JSON-RPC methods specified for\n'data-config-endpoints' also apply here.","properties":{"path":{"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC.","type":"string","example":"Some path"},"endpoint-uri":{"description":"The URI of the JSON-RPC peer endpoint remotely implementing 'path'.","type":"string","example":"Some endpoint-uri"}},"required":["path","endpoint-uri"],"xml":{"name":"data-operational-endpoints","namespace":"urn:opendaylight:jsonrpc"}},"jsonrpc_config_configured-endpoints_rpc-endpoints":{"title":"jsonrpc_config_configured-endpoints_rpc-endpoints","type":"object","description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module rpc) for\na named entity. A YANG rpc statement with name 'method' in 'module' corresponds\nto 'path':\n\n{\"module:method\":{}}\n\nThe endpoint selection algorithm specified for 'data-config-endpoints' also\napplies here.\n\nThe remote peer which implements the module rpc for 'path' must implement\nthat rpc as a named JSON-RPC method. The controller may make a JSON-RPC request\nusing either a method of \"module:method\" or \"method\".","properties":{"path":{"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC.","type":"string","example":"Some path"},"endpoint-uri":{"description":"The URI of the JSON-RPC peer endpoint remotely implementing 'path'.","type":"string","example":"Some endpoint-uri"}},"required":["path","endpoint-uri"],"xml":{"name":"rpc-endpoints","namespace":"urn:opendaylight:jsonrpc"}},"jsonrpc_config_configured-endpoints_notification-endpoints":{"title":"jsonrpc_config_configured-endpoints_notification-endpoints","type":"object","description":"The JSON-RPC peer endpoint remotely generating notifications for the 'path'\nmodule notification. A YANG notification statement with name 'notification'\nin 'module' corresponds to 'path'.\n\n{\"module:notification\":{}}\n\nThe remote peer which implements the notification for 'path' must implement\nthat as a JSON-RPC 2.0 notification\n\nTransport specific options (f.e. pub/sub topic) are supplied in the query part\nof the uri.","properties":{"path":{"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC.","type":"string","example":"Some path"},"endpoint-uri":{"description":"The URI of the JSON-RPC peer endpoint remotely implementing 'path'.","type":"string","example":"Some endpoint-uri"}},"required":["path","endpoint-uri"],"xml":{"name":"notification-endpoints","namespace":"urn:opendaylight:jsonrpc"}},"jsonrpc_config_actual-endpoints":{"title":"jsonrpc_config_actual-endpoints","type":"object","description":"For each named entity, the JSON-RPC peer endpoints that comprise all, or part,\nof its remote implementation. This list contains entries for each named entity\nin 'configured-endpoints' that was successfully mounted, complemented by\nentries learned from 'governance-root'.","properties":{"rpc-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_actual-endpoints_rpc-endpoints"},"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module rpc) for\na named entity. A YANG rpc statement with name 'method' in 'module' corresponds\nto 'path':\n\n{\"module:method\":{}}\n\nThe endpoint selection algorithm specified for 'data-config-endpoints' also\napplies here.\n\nThe remote peer which implements the module rpc for 'path' must implement\nthat rpc as a named JSON-RPC method. The controller may make a JSON-RPC request\nusing either a method of \"module:method\" or \"method\"."},"managed-by":{"description":"Name of node maintaining connection to peer in clustered environment","type":"string","example":"Some managed-by"},"mount-status":{"description":"Status of mount operation","type":"string","enum":["initial","processing","mounted","failed"],"default":"initial","example":"initial"},"name":{"description":"Entity unique name. An entity's data and RPC model (defined by 'modules') is\nimplemented remotely at one or more JSON-RPC peer endpoints. This name is a\nbinding value for identifying this set of endpoints.","type":"string","example":"Some name"},"data-config-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_actual-endpoints_data-config-endpoints"},"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's config data store.\n\nThis extension selects the remote peer to handle a request using a longest\n'path' first match (similar to route prefix matching in IP routing). As such\nthe shortest path, an empty JSON object, {}, may be used to specify a default\npeer, which handles the request in the absence of a more specific 'path' match.\nThe shortest path for a specific module identifies the tree for one root node:\n\n{\"module:root\":{}}\n\nEach listed remote peer must implement the JSON-RPC methods documented in the\n'opendaylight-jsonrpc-data' YANG module."},"notification-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_actual-endpoints_notification-endpoints"},"description":"The JSON-RPC peer endpoint remotely generating notifications for the 'path'\nmodule notification. A YANG notification statement with name 'notification'\nin 'module' corresponds to 'path'.\n\n{\"module:notification\":{}}\n\nThe remote peer which implements the notification for 'path' must implement\nthat as a JSON-RPC 2.0 notification\n\nTransport specific options (f.e. pub/sub topic) are supplied in the query part\nof the uri."},"failure-reason":{"description":"","type":"string","example":"Some failure-reason"},"data-operational-endpoints":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc_config_actual-endpoints_data-operational-endpoints"},"description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's operational data store.\n\nThe endpoint selection algorithm and JSON-RPC methods specified for\n'data-config-endpoints' also apply here."},"modules":{"type":"array","minItems":1,"items":{"type":"string","example":"A","minLength":1,"maxLength":2147483647},"description":"A list of all YANG modules supported by this entity. The list must include all\nmodules and submodules that are dependencies (imported or included) of other\nmodules or submodules in the list. The order of modules and submodules in the\nlist is not important.","example":["A"]}},"required":["mount-status","name","modules"],"xml":{"name":"actual-endpoints","namespace":"urn:opendaylight:jsonrpc"}},"jsonrpc_config_actual-endpoints_data-config-endpoints":{"title":"jsonrpc_config_actual-endpoints_data-config-endpoints","type":"object","description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's config data store.\n\nThis extension selects the remote peer to handle a request using a longest\n'path' first match (similar to route prefix matching in IP routing). As such\nthe shortest path, an empty JSON object, {}, may be used to specify a default\npeer, which handles the request in the absence of a more specific 'path' match.\nThe shortest path for a specific module identifies the tree for one root node:\n\n{\"module:root\":{}}\n\nEach listed remote peer must implement the JSON-RPC methods documented in the\n'opendaylight-jsonrpc-data' YANG module.","properties":{"path":{"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC.","type":"string","example":"Some path"},"endpoint-uri":{"description":"The URI of the JSON-RPC peer endpoint remotely implementing 'path'.","type":"string","example":"Some endpoint-uri"}},"required":["path","endpoint-uri"],"xml":{"name":"data-config-endpoints","namespace":"urn:opendaylight:jsonrpc"}},"jsonrpc_config_actual-endpoints_data-operational-endpoints":{"title":"jsonrpc_config_actual-endpoints_data-operational-endpoints","type":"object","description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module subtree)\nfor a named entity's operational data store.\n\nThe endpoint selection algorithm and JSON-RPC methods specified for\n'data-config-endpoints' also apply here.","properties":{"path":{"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC.","type":"string","example":"Some path"},"endpoint-uri":{"description":"The URI of the JSON-RPC peer endpoint remotely implementing 'path'.","type":"string","example":"Some endpoint-uri"}},"required":["path","endpoint-uri"],"xml":{"name":"data-operational-endpoints","namespace":"urn:opendaylight:jsonrpc"}},"jsonrpc_config_actual-endpoints_rpc-endpoints":{"title":"jsonrpc_config_actual-endpoints_rpc-endpoints","type":"object","description":"The JSON-RPC peer endpoint remotely implementing each 'path' (module rpc) for\na named entity. A YANG rpc statement with name 'method' in 'module' corresponds\nto 'path':\n\n{\"module:method\":{}}\n\nThe endpoint selection algorithm specified for 'data-config-endpoints' also\napplies here.\n\nThe remote peer which implements the module rpc for 'path' must implement\nthat rpc as a named JSON-RPC method. The controller may make a JSON-RPC request\nusing either a method of \"module:method\" or \"method\".","properties":{"path":{"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC.","type":"string","example":"Some path"},"endpoint-uri":{"description":"The URI of the JSON-RPC peer endpoint remotely implementing 'path'.","type":"string","example":"Some endpoint-uri"}},"required":["path","endpoint-uri"],"xml":{"name":"rpc-endpoints","namespace":"urn:opendaylight:jsonrpc"}},"jsonrpc_config_actual-endpoints_notification-endpoints":{"title":"jsonrpc_config_actual-endpoints_notification-endpoints","type":"object","description":"The JSON-RPC peer endpoint remotely generating notifications for the 'path'\nmodule notification. A YANG notification statement with name 'notification'\nin 'module' corresponds to 'path'.\n\n{\"module:notification\":{}}\n\nThe remote peer which implements the notification for 'path' must implement\nthat as a JSON-RPC 2.0 notification\n\nTransport specific options (f.e. pub/sub topic) are supplied in the query part\nof the uri.","properties":{"path":{"description":"A YANG instance-identifier ('iid') encoded as a JSON object.\n\n*** Note that the convention for encoding a YANG instance-identifier as a JSON\nobject described here may differ from that in draft-ietf-netmod-yang-json. ***\n\nTo address a whole data value (the value corresponding to a schema container,\nleaf, leaf-list or list node) encode the iid as nested JSON objects with the\npath terminating at an empty object. Each object that nests another must have\nexactly one property and the property name must be set to the corresponding schema\nnode identifier. The outermost object must also prefix the node identifier with\nthe module name and a colon ':' (and no whitespace).\n\nFor example, the following path addresses this module's 'who-am-i' leaf node,\nwhich is under the 'config' container:\n\n{\"jsonrpc:config\":{\"who-am-i\":{}}}\n\nTo address a whole element in a list node the path is encoded as above except\nthat the path terminator is specified as a single JSON object in a JSON array.\nThe JSON object shall specify values at properties for each list key in the\nschema.\n\nFor example, the following path addresses the element with (fictional) entity\nname 'DEVICE-1A2B' in this module's 'configured-endpoints' list:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-1A2B\"}]}}\n\nTo address a single node within a list element the path is encoded using a\ncombination of the schemes above. The path terminator for a whole list element\nis employed as a list element selector and its properties are complemented\nwith a single extra property which has the name of the list element node to\naddress.\n\nFor example, the following path addresses the 'rpc-endpoints' of the element\nwith (fictional) entity name 'DEVICE-3C4D' in this module's 'configured-endpoints'\nlist:\n\n{\"jsonrpc:config\":{\"configured-endpoints\":[{\"name\":\"DEVICE-3C4D\",\"rpc-endpoints\":{}}]}}\n\nThis notation will be described in detail in a draft dedicated to YANG modeling\nof JSON-RPC.","type":"string","example":"Some path"},"endpoint-uri":{"description":"The URI of the JSON-RPC peer endpoint remotely implementing 'path'.","type":"string","example":"Some endpoint-uri"}},"required":["path","endpoint-uri"],"xml":{"name":"notification-endpoints","namespace":"urn:opendaylight:jsonrpc"}},"jsonrpc-inband-models_get-modules_output":{"title":"jsonrpc-inband-models_get-modules_output","type":"object","properties":{"modules":{"type":"array","items":{"$ref":"#/components/schemas/jsonrpc-inband-models_modules"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:jsonrpc:ibm"}},"jsonrpc-inband-models_modules":{"title":"jsonrpc-inband-models_modules","type":"object","properties":{"name":{"description":"Module identifier","type":"string","example":"A","minLength":1,"maxLength":2147483647},"content":{"description":"YANG module source","type":"string","example":"Some content"}},"xml":{"name":"modules","namespace":"urn:opendaylight:jsonrpc:ibm"}},"lldp-speaker_change-operational-status_input":{"title":"lldp-speaker_change-operational-status_input","type":"object","properties":{"operational-status":{"description":"Change operational status of LLDP speaker.","type":"string","enum":["STANDBY","RUN"],"example":"STANDBY"}},"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker"}},"lldp-speaker_get-operational-status_output":{"title":"lldp-speaker_get-operational-status_output","type":"object","properties":{"operational-status":{"description":"Change operational status of LLDP speaker.","type":"string","enum":["STANDBY","RUN"],"example":"STANDBY"}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker"}},"lldp-speaker_set-lldp-flood-interval_input":{"title":"lldp-speaker_set-lldp-flood-interval_input","type":"object","properties":{"interval":{"description":"Set LLDP_FLOOD_PERIOD","type":"integer","format":"int64","example":-9223372036854775808}},"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker"}},"lldp-speaker_get-lldp-flood-interval_output":{"title":"lldp-speaker_get-lldp-flood-interval_output","type":"object","properties":{"interval":{"description":"Get LLDP_FLOOD_PERIOD","type":"integer","format":"int64","example":-9223372036854775808}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker"}},"lldp-speaker-config_lldp-speaker-config":{"title":"lldp-speaker-config_lldp-speaker-config","type":"object","properties":{"address-destination":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address-destination"],"xml":{"name":"lldp-speaker-config","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config"}},"nc-notifications_netconf":{"title":"nc-notifications_netconf","type":"object","description":"Top-level element in the notification namespace","properties":{"streams":{"$ref":"#/components/schemas/nc-notifications_netconf_streams"}},"xml":{"name":"netconf","namespace":"urn:ietf:params:xml:ns:netmod:notification"}},"nc-notifications_netconf_streams":{"title":"nc-notifications_netconf_streams","type":"object","description":"The list of event streams supported by the system. When\na query is issued, the returned set of streams is\ndetermined based on user privileges.","properties":{"stream":{"type":"array","items":{"$ref":"#/components/schemas/nc-notifications_netconf_streams_stream"},"description":"Stream name, description and other information.","example":[{"name":"Some name","replaySupport":true,"description":"Some description","replayLogCreationTime":"0000-00-00T00:00:00Z"}],"minItems":1}},"required":["stream"],"xml":{"name":"streams","namespace":"urn:ietf:params:xml:ns:netmod:notification"}},"nc-notifications_netconf_streams_stream":{"title":"nc-notifications_netconf_streams_stream","type":"object","description":"Stream name, description and other information.","properties":{"name":{"description":"The name of the event stream. If this is the default\nNETCONF stream, this must have the value 'NETCONF'.","type":"string","example":"Some name"},"replaySupport":{"description":"A description of the event stream, including such\ninformation as the type of events that are sent over\nthis stream.","type":"boolean","example":true},"description":{"description":"A description of the event stream, including such\ninformation as the type of events that are sent over\nthis stream.","type":"string","example":"Some description"},"replayLogCreationTime":{"description":"The timestamp of the creation of the log used to support\nthe replay function on this stream. Note that this might\nbe earlier then the earliest available notification in\nthe log. This object is updated if the log resets for\nsome reason.  This object MUST be present if replay is\nsupported.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647}},"required":["replaySupport","description"],"xml":{"name":"stream","namespace":"urn:ietf:params:xml:ns:netmod:notification"}},"netconf-keystore_add-keystore-entry_input":{"title":"netconf-keystore_add-keystore-entry_input","type":"object","properties":{"key-credential":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_key-credential"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:netconf:keystore"}},"netconf-keystore_key-credential":{"title":"netconf-keystore_key-credential","type":"object","properties":{"key-id":{"description":"","type":"string","example":"Some key-id"},"private-key":{"description":"Base64 encoded private key that should be used for authentication with a netconf device.\nDo not include a public key as that is calculated from the private key.\nUsed for RPCs only. Will encrypt the key before the entry is written into the data store.","type":"string","example":"Some private-key"},"passphrase":{"description":"If the provided key is encrypted by a passphrase this needs to be included. Leave empty\nif the key does not have a passphrase.\nUsed for RPCs only. Will encrypt the passphrase before the entry is written into the data\nstore.","type":"string","example":"Some passphrase"}},"xml":{"name":"key-credential","namespace":"urn:opendaylight:netconf:keystore"}},"netconf-keystore_remove-keystore-entry_input":{"title":"netconf-keystore_remove-keystore-entry_input","type":"object","properties":{"key-id":{"type":"array","items":{"type":"string","example":"Some key-id"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:netconf:keystore"}},"netconf-keystore_add-private-key_input":{"title":"netconf-keystore_add-private-key_input","type":"object","properties":{"private-key":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_private-key"},"description":"A private key."}},"xml":{"name":"input","namespace":"urn:opendaylight:netconf:keystore"}},"netconf-keystore_private-key":{"title":"netconf-keystore_private-key","type":"object","description":"A private key.","properties":{"data":{"description":"Base64 encoded private key.","type":"string","example":"Some data"},"name":{"description":"","type":"string","example":"Some name"},"certificate-chain":{"type":"array","items":{"type":"string","example":"Some certificate-chain"},"description":"A certificate chain for this public key. Each certificate is an X.509 v3 certificate\nstructure as specified by RFC5280, encoded using the Base64 format."}},"xml":{"name":"private-key","namespace":"urn:opendaylight:netconf:keystore"}},"netconf-keystore_remove-private-key_input":{"title":"netconf-keystore_remove-private-key_input","type":"object","properties":{"name":{"type":"array","items":{"type":"string","example":"Some name"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:netconf:keystore"}},"netconf-keystore_add-trusted-certificate_input":{"title":"netconf-keystore_add-trusted-certificate_input","type":"object","properties":{"trusted-certificate":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_trusted-certificate"},"description":"A list of trusted certificate. These certificates can be used by a server to authenticate\nclients, or by clients to authenticate servers."}},"xml":{"name":"input","namespace":"urn:opendaylight:netconf:keystore"}},"netconf-keystore_trusted-certificate":{"title":"netconf-keystore_trusted-certificate","type":"object","description":"A list of trusted certificate. These certificates can be used by a server to authenticate\nclients, or by clients to authenticate servers.","properties":{"name":{"description":"","type":"string","example":"Some name"},"certificate":{"description":"An X.509 v3 certificate structure as specified by RFC5280, encoded using\nthe Base64 format.","type":"string","example":"Some certificate"}},"xml":{"name":"trusted-certificate","namespace":"urn:opendaylight:netconf:keystore"}},"netconf-keystore_remove-trusted-certificate_input":{"title":"netconf-keystore_remove-trusted-certificate_input","type":"object","properties":{"name":{"type":"array","items":{"type":"string","example":"Some name"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:netconf:keystore"}},"netconf-keystore_keystore":{"title":"netconf-keystore_keystore","type":"object","properties":{"key-credential":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_keystore_key-credential"},"description":""},"private-key":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_keystore_private-key"},"description":"A private key."},"trusted-certificate":{"type":"array","items":{"$ref":"#/components/schemas/netconf-keystore_keystore_trusted-certificate"},"description":"A list of trusted certificate. These certificates can be used by a server to authenticate\nclients, or by clients to authenticate servers."}},"xml":{"name":"keystore","namespace":"urn:opendaylight:netconf:keystore"}},"netconf-keystore_keystore_key-credential":{"title":"netconf-keystore_keystore_key-credential","type":"object","properties":{"key-id":{"description":"","type":"string","example":"Some key-id"},"private-key":{"description":"Binary array of Base64 encoded private key that should be used for authentication with a\nnetconf device. Do not include a public key as that is calculated from the private key.\nUsed for writing directly into the data store, encrypted key expected.","type":"string","format":"byte"},"public-key":{"description":"Binary array of Base64 encoded public key that should be used for authentication with a\nnetconf device. Calculated from the private key. Used for writing directly into the data\nstore, encrypted key expected.","type":"string","format":"byte"},"passphrase":{"description":"If the provided key is encrypted by a passphrase this needs to be included. Leave empty\nif the key does not have a passphrase.\nUsed for writing directly into the data store, encrypted passphrase expected.","type":"string","format":"byte"},"algorithm":{"description":"The algorithm used to generate the key pair.","type":"string","example":"Some algorithm"}},"xml":{"name":"key-credential","namespace":"urn:opendaylight:netconf:keystore"}},"netconf-keystore_keystore_private-key":{"title":"netconf-keystore_keystore_private-key","type":"object","description":"A private key.","properties":{"data":{"description":"Binary array of Base64 encoded private key.","type":"string","format":"byte"},"name":{"description":"","type":"string","example":"Some name"},"certificate-chain":{"type":"array","items":{"type":"string","format":"byte"},"description":"A certificate chain for this public key. Each certificate is an X.509 v3 certificate\nstructure as specified by RFC5280, binary data encoded using the Base64 format."},"algorithm":{"description":"The algorithm used to generate the key pair.","type":"string","example":"Some algorithm"}},"xml":{"name":"private-key","namespace":"urn:opendaylight:netconf:keystore"}},"netconf-keystore_keystore_trusted-certificate":{"title":"netconf-keystore_keystore_trusted-certificate","type":"object","description":"A list of trusted certificate. These certificates can be used by a server to authenticate\nclients, or by clients to authenticate servers.","properties":{"name":{"description":"","type":"string","example":"Some name"},"certificate":{"description":"An X.509 v3 certificate structure as specified by RFC5280, binary data encoded using\nthe Base64 format.","type":"string","format":"byte"}},"xml":{"name":"trusted-certificate","namespace":"urn:opendaylight:netconf:keystore"}},"netconf-node-topology_create-device_input":{"title":"netconf-node-topology_create-device_input","type":"object","properties":{"login-password":{"$ref":"#/components/schemas/netconf-node-topology_login-password"},"lock-datastore":{"description":"The operation allows the client to lock the entire configuration datastore\nsystem of a device.\nWARNING - With blocking the lock/unlock operations, the user is coming to operate\nin a manner which is not supported. Concurrent access to the data store may interfere\nwith data consistency.","type":"boolean","default":true,"example":true},"schema-cache-directory":{"description":"The destination schema repository for yang files relative to the cache directory.\nThis may be specified per netconf mount so that the loaded yang files are stored\nto a distinct directory to avoid potential conflict.","type":"string","default":"schema","example":"Some schema-cache-directory"},"yang-library":{"$ref":"#/components/schemas/netconf-node-topology_yang-library"},"host":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"port":{"description":"","type":"integer","format":"int32","example":0},"tcp-only":{"description":"","type":"boolean","default":false,"example":true},"protocol":{"$ref":"#/components/schemas/netconf-node-topology_protocol"},"schemaless":{"description":"","type":"boolean","default":false,"example":true},"yang-module-capabilities":{"$ref":"#/components/schemas/netconf-node-topology_yang-module-capabilities"},"non-module-capabilities":{"$ref":"#/components/schemas/netconf-node-topology_non-module-capabilities"},"reconnect-on-changed-schema":{"description":"If true, the connector would auto disconnect/reconnect when schemas are changed in the\nremote device. The connector subscribes (right after connect) to base netconf notifications\nand listens for netconf-capability-change notification","type":"boolean","default":false,"example":true},"connection-timeout-millis":{"description":"Specifies timeout in milliseconds after which connection must be established.","type":"integer","format":"int64","default":20000,"example":0},"default-request-timeout-millis":{"description":"Timeout for blocking operations within transactions.","type":"integer","format":"int64","default":60000,"example":0},"max-connection-attempts":{"description":"Maximum number of connection retries. Non positive value or null is interpreted as infinity.","type":"string","default":"0"},"min-backoff-millis":{"description":"Initial minimum timeout in milliseconds randomized with backoff-jitter to wait between connection\nattempts. Will be multiplied by backoff-multiplier with every additional attempt","type":"integer","format":"int32","default":2000,"example":0},"max-backoff-millis":{"description":"Maximum timeout in milliseconds randomized with backoff-jitter to wait between connection attempts.","type":"integer","format":"int64","default":1800000,"example":0},"backoff-multiplier":{"description":"Multiplier for backoff timeout. The backoff will be multiplied by this value with every\nadditional attempt. Backoff-multiplier must be in the range (1, max).","type":"number","default":1.5,"example":1.0},"backoff-jitter":{"description":"Range of backoff randomization. The backoff will be multiplied by a random number in the range\n(1 - backoff-jitter, 1 + backoff-jitter). Backoff-jitter must be in the range (0, 0.5).","type":"string","default":0.1},"keepalive-delay":{"description":"Netconf connector sends keepalive RPCs while the session is idle, this delay specifies\nthe delay between keepalive RPC in seconds.\nIf a value &lt;1 is provided, no keepalives will be sent","type":"integer","format":"int64","default":120,"example":0},"concurrent-rpc-limit":{"description":"Limit of concurrent messages that can be send before reply messages are received.\nIf value &lt;1 is provided, no limit will be enforced","type":"string","default":"0"},"actor-response-wait-time":{"description":"Time that slave actor will wait for response from master.","type":"integer","format":"int32","default":5,"example":1},"odl-hello-message-capabilities":{"$ref":"#/components/schemas/netconf-node-topology_odl-hello-message-capabilities"},"ignore-missing-schema-sources":{"$ref":"#/components/schemas/netconf-node-topology_ignore-missing-schema-sources"},"node-id":{"description":"","type":"string","example":"Some node-id"}},"xml":{"name":"input","namespace":"urn:opendaylight:netconf-node-topology"}},"netconf-node-topology_login-password":{"title":"netconf-node-topology_login-password","type":"object","properties":{"password":{"description":"","type":"string","example":"Some password"},"username":{"description":"","type":"string","example":"Some username"}},"xml":{"name":"login-password","namespace":"urn:opendaylight:netconf-node-topology"}},"netconf-node-topology_yang-library":{"title":"netconf-node-topology_yang-library","type":"object","properties":{"password":{"description":"","type":"string","example":"Some password"},"yang-library-url":{"description":"Yang library to be plugged as additional source provider into the shared schema repository","type":"string","example":"Some yang-library-url"},"username":{"description":"","type":"string","example":"Some username"}},"xml":{"name":"yang-library","namespace":"urn:opendaylight:netconf-node-topology"}},"netconf-node-topology_protocol":{"title":"netconf-node-topology_protocol","type":"object","properties":{"key-id":{"type":"array","items":{"type":"string","example":"Some key-id"},"description":"Identifiers of private keys within the keystore to be used for to establish TLS connection."},"name":{"description":"","type":"string","enum":["SSH","TLS"],"default":"SSH","example":"SSH"},"tls":{"$ref":"#/components/schemas/netconf-node-topology_protocol_tls"}},"xml":{"name":"protocol","namespace":"urn:opendaylight:netconf-node-topology"}},"netconf-node-topology_protocol_tls":{"title":"netconf-node-topology_protocol_tls","type":"object","properties":{"excluded-versions":{"type":"array","items":{"type":"string","example":"Some excluded-versions"},"description":"A list of TLS version names provided in JDK that are not supported by the\ntarget netconf device, eg, the netopeer2 simulator does not support the\nSSLv2Hello. Most of the time, this list need not be set"}},"xml":{"name":"tls","namespace":"urn:opendaylight:netconf-node-topology"}},"netconf-node-topology_yang-module-capabilities":{"title":"netconf-node-topology_yang-module-capabilities","type":"object","properties":{"capability":{"type":"array","items":{"type":"string","example":"Some capability"},"description":"Set a list of capabilities to override capabilities provided in device's hello message.\nCan be used for devices that do not report any yang modules in their hello message"},"override":{"description":"Whether to override or merge this list of capabilities with capabilities from device","type":"boolean","default":false,"example":true}},"xml":{"name":"yang-module-capabilities","namespace":"urn:opendaylight:netconf-node-topology"}},"netconf-node-topology_non-module-capabilities":{"title":"netconf-node-topology_non-module-capabilities","type":"object","properties":{"capability":{"type":"array","items":{"type":"string","example":"Some capability"},"description":"Set a list of non-module based capabilities to override or merge non-module capabilities\nprovided in device's hello message. Can be used for devices that do not report or\nincorrectly report non-module based capabilities in their hello message"},"override":{"description":"Whether to override or merge this list of non-module based capabilities with non-module\nbased capabilities from device","type":"boolean","default":false,"example":true}},"xml":{"name":"non-module-capabilities","namespace":"urn:opendaylight:netconf-node-topology"}},"netconf-node-topology_odl-hello-message-capabilities":{"title":"netconf-node-topology_odl-hello-message-capabilities","type":"object","properties":{"capability":{"type":"array","items":{"type":"string","example":"Some capability"},"description":"Certain devices are non-accepting of ODL's hello message.  This allows specification of\na custom ODL hello message based on a list of supported capabilities."}},"xml":{"name":"odl-hello-message-capabilities","namespace":"urn:opendaylight:netconf-node-topology"}},"netconf-node-topology_ignore-missing-schema-sources":{"title":"netconf-node-topology_ignore-missing-schema-sources","type":"object","description":"Allows mount point to reconnect on the 'missing schema sources' error.\nWARNING - enabling the reconnection on the 'missing schema sources' error can lead\nto unexpected errors at runtime.","properties":{"allowed":{"description":"Allows reconnection of the mount point. Default false.","type":"boolean","default":false,"example":true},"reconnect-time":{"description":"Time for reconnection - in units milliseconds. Default 5000 ms.","type":"integer","format":"int64","default":5000,"example":0}},"xml":{"name":"ignore-missing-schema-sources","namespace":"urn:opendaylight:netconf-node-topology"}},"netconf-node-topology_delete-device_input":{"title":"netconf-node-topology_delete-device_input","type":"object","properties":{"node-id":{"description":"","type":"string","example":"Some node-id"}},"xml":{"name":"input","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology":{"title":"network-topology_network-topology","type":"object","properties":{"topology":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology"},"description":"\nThis is the model of an abstract topology.\nA topology contains nodes and links.\nEach topology MUST be identified by\nunique topology-id for reason that a network could contain many\ntopologies.\n"}},"xml":{"name":"network-topology","namespace":"urn:TBD:params:xml:ns:yang:network-topology"}},"network-topology_network-topology_topology":{"title":"network-topology_network-topology_topology","type":"object","description":"\nThis is the model of an abstract topology.\nA topology contains nodes and links.\nEach topology MUST be identified by\nunique topology-id for reason that a network could contain many\ntopologies.\n","properties":{"odl-bgp-topology-config:rib-id":{"description":"","type":"string","example":"Some rib-id","xml":{"name":"rib-id","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config"}},"node":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node"},"description":"The list of network nodes defined for the topology."},"topology-types":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types"},"overlay:topology-type":{"description":"","type":"string","enum":["topology-type-base","topology-type-overlay"],"example":"topology-type-base","xml":{"name":"topology-type","namespace":"urn:opendaylight:params:xml:ns:yang:overlay"}},"topology-id":{"description":"\nIt is presumed that a datastore will contain many topologies. To\ndistinguish between topologies it is vital to have UNIQUE\ntopology identifiers.\n","type":"string","example":"Some topology-id"},"link":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link"},"description":"\nA Network Link connects a by Local (Source) node and\na Remote (Destination) Network Nodes via a set of the\nnodes' termination points.\nAs it is possible to have several links between the same\nsource and destination nodes, and as a link could potentially\nbe re-homed between termination points, to ensure that we\nwould always know to distinguish between links, every link\nis identified by a dedicated link identifier.\nNote that a link models a point-to-point link, not a multipoint\nlink.\nLayering dependencies on links in underlay topologies are\nnot represented as the layering information of nodes and of\ntermination points is sufficient.\n"},"topology-tunnel-pcep-config:pcep-topology-reference":{"description":"An absolute reference to a topology instance.","type":"string","example":"Some pcep-topology-reference","xml":{"name":"pcep-topology-reference","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config"}},"l3-unicast-igp-topology:igp-topology-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes"},"underlay-topology":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_underlay-topology"},"description":"Identifies the topology, or topologies, that this topology\nis dependent on."}},"xml":{"name":"topology","namespace":"urn:TBD:params:xml:ns:yang:network-topology"}},"network-topology_network-topology_topology_topology-types":{"title":"network-topology_network-topology_topology_topology-types","type":"object","description":"This container is used to identify the type, or types\n(as a topology can support several types simultaneously),\nof the topology.\nTopology types are the subject of several integrity constraints\nthat an implementing server can validate in order to\nmaintain integrity of the datastore.\nTopology types are indicated through separate data nodes;\nthe set of topology types is expected to increase over time.\nTo add support for a new topology, an augmenting module\nneeds to augment this container with a new empty optional\ncontainer to indicate the new topology type.\nThe use of a container allows to indicate a subcategorization\nof topology types.\nThe container SHALL NOT be augmented with any data nodes\nthat serve a purpose other than identifying a particular\ntopology type.\n","properties":{"odl-bgp-topology-types:bgp-ipv6-reachability-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-ipv6-reachability-topology"},"odl-bgp-topology-types:bgp-ipv4-reachability-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-ipv4-reachability-topology"},"netconf-node-topology:topology-netconf":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf"},"odl-bgp-topology-types:bgp-linkstate-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_bgp-linkstate-topology"},"l3-unicast-igp-topology:l3-unicast-igp-topology":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology"},"network-topology-sr:topology-sr":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-sr"},"network-topology-pcep:topology-pcep":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep"},"topology-tunnel:topology-tunnel":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-tunnel"},"topology-tunnel-pcep:topology-tunnel-pcep":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-tunnel-pcep"}},"xml":{"name":"topology-types","namespace":"urn:TBD:params:xml:ns:yang:network-topology"}},"network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology":{"title":"network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology","type":"object","properties":{"isis-topology:isis":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_isis"},"ospf-topology:ospf":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_ospf"}},"xml":{"name":"l3-unicast-igp-topology","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology"}},"network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_ospf":{"title":"network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_ospf","type":"object","properties":{},"xml":{"name":"ospf","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_isis":{"title":"network-topology_network-topology_topology_topology-types_l3-unicast-igp-topology_isis","type":"object","properties":{},"xml":{"name":"isis","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_topology-types_topology-sr":{"title":"network-topology_network-topology_topology_topology-types_topology-sr","type":"object","properties":{},"xml":{"name":"topology-sr","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr"}},"network-topology_network-topology_topology_topology-types_topology-tunnel":{"title":"network-topology_network-topology_topology_topology-types_topology-tunnel","type":"object","properties":{},"xml":{"name":"topology-tunnel","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel"}},"network-topology_network-topology_topology_topology-types_bgp-ipv4-reachability-topology":{"title":"network-topology_network-topology_topology_topology-types_bgp-ipv4-reachability-topology","type":"object","properties":{},"xml":{"name":"bgp-ipv4-reachability-topology","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types"}},"network-topology_network-topology_topology_topology-types_bgp-ipv6-reachability-topology":{"title":"network-topology_network-topology_topology_topology-types_bgp-ipv6-reachability-topology","type":"object","properties":{},"xml":{"name":"bgp-ipv6-reachability-topology","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types"}},"network-topology_network-topology_topology_topology-types_bgp-linkstate-topology":{"title":"network-topology_network-topology_topology_topology-types_bgp-linkstate-topology","type":"object","properties":{},"xml":{"name":"bgp-linkstate-topology","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types"}},"network-topology_network-topology_topology_topology-types_topology-tunnel-pcep":{"title":"network-topology_network-topology_topology_topology-types_topology-tunnel-pcep","type":"object","properties":{},"xml":{"name":"topology-tunnel-pcep","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"network-topology_network-topology_topology_topology-types_topology-netconf":{"title":"network-topology_network-topology_topology_topology-types_topology-netconf","type":"object","properties":{"ssh-transport-topology-parameters":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters"}},"xml":{"name":"topology-netconf","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters":{"title":"network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters","type":"object","description":"Default topology wide configurable parameters of the SSH transport layer.","properties":{"key-exchange":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_key-exchange"},"encryption":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_encryption"},"host-key":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_host-key"},"mac":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_mac"}},"xml":{"name":"ssh-transport-topology-parameters","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_host-key":{"title":"network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_host-key","type":"object","description":"Parameters regarding host key.","properties":{"host-key-alg":{"type":"array","items":{"type":"string","enum":["ssh-dss","ssh-rsa","rsa-sha2-256","rsa-sha2-512","spki-sign-rsa","spki-sign-dss","pgp-sign-rsa","pgp-sign-dss","null","ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ecdsa-sha2-1.3.132.0.1","ecdsa-sha2-1.2.840.10045.3.1.1","ecdsa-sha2-1.3.132.0.33","ecdsa-sha2-1.3.132.0.26","ecdsa-sha2-1.3.132.0.27","ecdsa-sha2-1.3.132.0.16","ecdsa-sha2-1.3.132.0.36","ecdsa-sha2-1.3.132.0.37","ecdsa-sha2-1.3.132.0.38","x509v3-ssh-dss","x509v3-ssh-rsa","x509v3-rsa2048-sha256","x509v3-ecdsa-sha2-nistp256","x509v3-ecdsa-sha2-nistp384","x509v3-ecdsa-sha2-nistp521","x509v3-ecdsa-sha2-1.3.132.0.1","x509v3-ecdsa-sha2-1.2.840.10045.3.1.1","x509v3-ecdsa-sha2-1.3.132.0.33","x509v3-ecdsa-sha2-1.3.132.0.26","x509v3-ecdsa-sha2-1.3.132.0.27","x509v3-ecdsa-sha2-1.3.132.0.16","x509v3-ecdsa-sha2-1.3.132.0.36","x509v3-ecdsa-sha2-1.3.132.0.37","x509v3-ecdsa-sha2-1.3.132.0.38","ssh-ed25519","ssh-ed448"],"example":"ssh-dss"},"description":"Acceptable host key algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable host key algorithms are\nimplementation-defined."}},"xml":{"name":"host-key","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_key-exchange":{"title":"network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_key-exchange","type":"object","description":"Parameters regarding key exchange.","properties":{"key-exchange-alg":{"type":"array","items":{"type":"string","enum":["diffie-hellman-group-exchange-sha1","diffie-hellman-group-exchange-sha256","diffie-hellman-group1-sha1","diffie-hellman-group14-sha1","diffie-hellman-group14-sha256","diffie-hellman-group15-sha512","diffie-hellman-group16-sha512","diffie-hellman-group17-sha512","diffie-hellman-group18-sha512","ecdh-sha2-nistp256","ecdh-sha2-nistp384","ecdh-sha2-nistp521","ecdh-sha2-1.3.132.0.1","ecdh-sha2-1.2.840.10045.3.1.1","ecdh-sha2-1.3.132.0.33","ecdh-sha2-1.3.132.0.26","ecdh-sha2-1.3.132.0.27","ecdh-sha2-1.3.132.0.16","ecdh-sha2-1.3.132.0.36","ecdh-sha2-1.3.132.0.37","ecdh-sha2-1.3.132.0.38","ecmqv-sha2","gss-group1-sha1-nistp256","gss-group1-sha1-nistp384","gss-group1-sha1-nistp521","gss-group1-sha1-1.3.132.0.1","gss-group1-sha1-1.2.840.10045.3.1.1","gss-group1-sha1-1.3.132.0.33","gss-group1-sha1-1.3.132.0.26","gss-group1-sha1-1.3.132.0.27","gss-group1-sha1-1.3.132.0.16","gss-group1-sha1-1.3.132.0.36","gss-group1-sha1-1.3.132.0.37","gss-group1-sha1-1.3.132.0.38","gss-group14-sha1-nistp256","gss-group14-sha1-nistp384","gss-group14-sha1-nistp521","gss-group14-sha1-1.3.132.0.1","gss-group14-sha1-1.2.840.10045.3.1.1","gss-group14-sha1-1.3.132.0.33","gss-group14-sha1-1.3.132.0.26","gss-group14-sha1-1.3.132.0.27","gss-group14-sha1-1.3.132.0.16","gss-group14-sha1-1.3.132.0.36","gss-group14-sha1-1.3.132.0.37","gss-group14-sha1-1.3.132.0.38","gss-gex-sha1-nistp256","gss-gex-sha1-nistp384","gss-gex-sha1-nistp521","gss-gex-sha1-1.3.132.0.1","gss-gex-sha1-1.2.840.10045.3.1.1","gss-gex-sha1-1.3.132.0.33","gss-gex-sha1-1.3.132.0.26","gss-gex-sha1-1.3.132.0.27","gss-gex-sha1-1.3.132.0.16","gss-gex-sha1-1.3.132.0.36","gss-gex-sha1-1.3.132.0.37","gss-gex-sha1-1.3.132.0.38","gss-","rsa1024-sha1","rsa2048-sha256","ext-info-s","ext-info-c","gss-group14-sha256-nistp256","gss-group14-sha256-nistp384","gss-group14-sha256-nistp521","gss-group14-sha256-1.3.132.0.1","gss-group14-sha256-1.2.840.10045.3.1.1","gss-group14-sha256-1.3.132.0.33","gss-group14-sha256-1.3.132.0.26","gss-group14-sha256-1.3.132.0.27","gss-group14-sha256-1.3.132.0.16","gss-group14-sha256-1.3.132.0.36","gss-group14-sha256-1.3.132.0.37","gss-group14-sha256-1.3.132.0.38","gss-group15-sha512-nistp256","gss-group15-sha512-nistp384","gss-group15-sha512-nistp521","gss-group15-sha512-1.3.132.0.1","gss-group15-sha512-1.2.840.10045.3.1.1","gss-group15-sha512-1.3.132.0.33","gss-group15-sha512-1.3.132.0.26","gss-group15-sha512-1.3.132.0.27","gss-group15-sha512-1.3.132.0.16","gss-group15-sha512-1.3.132.0.36","gss-group15-sha512-1.3.132.0.37","gss-group15-sha512-1.3.132.0.38","gss-group16-sha512-nistp256","gss-group16-sha512-nistp384","gss-group16-sha512-nistp521","gss-group16-sha512-1.3.132.0.1","gss-group16-sha512-1.2.840.10045.3.1.1","gss-group16-sha512-1.3.132.0.33","gss-group16-sha512-1.3.132.0.26","gss-group16-sha512-1.3.132.0.27","gss-group16-sha512-1.3.132.0.16","gss-group16-sha512-1.3.132.0.36","gss-group16-sha512-1.3.132.0.37","gss-group16-sha512-1.3.132.0.38","gss-group17-sha512-nistp256","gss-group17-sha512-nistp384","gss-group17-sha512-nistp521","gss-group17-sha512-1.3.132.0.1","gss-group17-sha512-1.2.840.10045.3.1.1","gss-group17-sha512-1.3.132.0.33","gss-group17-sha512-1.3.132.0.26","gss-group17-sha512-1.3.132.0.27","gss-group17-sha512-1.3.132.0.16","gss-group17-sha512-1.3.132.0.36","gss-group17-sha512-1.3.132.0.37","gss-group17-sha512-1.3.132.0.38","gss-group18-sha512-nistp256","gss-group18-sha512-nistp384","gss-group18-sha512-nistp521","gss-group18-sha512-1.3.132.0.1","gss-group18-sha512-1.2.840.10045.3.1.1","gss-group18-sha512-1.3.132.0.33","gss-group18-sha512-1.3.132.0.26","gss-group18-sha512-1.3.132.0.27","gss-group18-sha512-1.3.132.0.16","gss-group18-sha512-1.3.132.0.36","gss-group18-sha512-1.3.132.0.37","gss-group18-sha512-1.3.132.0.38","gss-nistp256-sha256-nistp256","gss-nistp256-sha256-nistp384","gss-nistp256-sha256-nistp521","gss-nistp256-sha256-1.3.132.0.1","gss-nistp256-sha256-1.2.840.10045.3.1.1","gss-nistp256-sha256-1.3.132.0.33","gss-nistp256-sha256-1.3.132.0.26","gss-nistp256-sha256-1.3.132.0.27","gss-nistp256-sha256-1.3.132.0.16","gss-nistp256-sha256-1.3.132.0.36","gss-nistp256-sha256-1.3.132.0.37","gss-nistp256-sha256-1.3.132.0.38","gss-nistp384-sha384-nistp256","gss-nistp384-sha384-nistp384","gss-nistp384-sha384-nistp521","gss-nistp384-sha384-1.3.132.0.1","gss-nistp384-sha384-1.2.840.10045.3.1.1","gss-nistp384-sha384-1.3.132.0.33","gss-nistp384-sha384-1.3.132.0.26","gss-nistp384-sha384-1.3.132.0.27","gss-nistp384-sha384-1.3.132.0.16","gss-nistp384-sha384-1.3.132.0.36","gss-nistp384-sha384-1.3.132.0.37","gss-nistp384-sha384-1.3.132.0.38","gss-nistp521-sha512-nistp256","gss-nistp521-sha512-nistp384","gss-nistp521-sha512-nistp521","gss-nistp521-sha512-1.3.132.0.1","gss-nistp521-sha512-1.2.840.10045.3.1.1","gss-nistp521-sha512-1.3.132.0.33","gss-nistp521-sha512-1.3.132.0.26","gss-nistp521-sha512-1.3.132.0.27","gss-nistp521-sha512-1.3.132.0.16","gss-nistp521-sha512-1.3.132.0.36","gss-nistp521-sha512-1.3.132.0.37","gss-nistp521-sha512-1.3.132.0.38","gss-curve25519-sha256-nistp256","gss-curve25519-sha256-nistp384","gss-curve25519-sha256-nistp521","gss-curve25519-sha256-1.3.132.0.1","gss-curve25519-sha256-1.2.840.10045.3.1.1","gss-curve25519-sha256-1.3.132.0.33","gss-curve25519-sha256-1.3.132.0.26","gss-curve25519-sha256-1.3.132.0.27","gss-curve25519-sha256-1.3.132.0.16","gss-curve25519-sha256-1.3.132.0.36","gss-curve25519-sha256-1.3.132.0.37","gss-curve25519-sha256-1.3.132.0.38","gss-curve448-sha512-nistp256","gss-curve448-sha512-nistp384","gss-curve448-sha512-nistp521","gss-curve448-sha512-1.3.132.0.1","gss-curve448-sha512-1.2.840.10045.3.1.1","gss-curve448-sha512-1.3.132.0.33","gss-curve448-sha512-1.3.132.0.26","gss-curve448-sha512-1.3.132.0.27","gss-curve448-sha512-1.3.132.0.16","gss-curve448-sha512-1.3.132.0.36","gss-curve448-sha512-1.3.132.0.37","gss-curve448-sha512-1.3.132.0.38","curve25519-sha256","curve448-sha512","sntrup761x25519-sha512","mlkem768nistp256-sha256","mlkem1024nistp384-sha384","mlkem768x25519-sha256"],"example":"diffie-hellman-group-exchange-sha1"},"description":"Acceptable key exchange algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable key exchange algorithms are\nimplementation-defined."}},"xml":{"name":"key-exchange","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_encryption":{"title":"network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_encryption","type":"object","description":"Parameters regarding encryption.","properties":{"encryption-alg":{"type":"array","items":{"type":"string","enum":["3des-cbc","blowfish-cbc","twofish256-cbc","twofish-cbc","twofish192-cbc","twofish128-cbc","aes256-cbc","aes192-cbc","aes128-cbc","serpent256-cbc","serpent192-cbc","serpent128-cbc","arcfour","idea-cbc","cast128-cbc","none","des-cbc","arcfour128","arcfour256","aes128-ctr","aes192-ctr","aes256-ctr","3des-ctr","blowfish-ctr","twofish128-ctr","twofish192-ctr","twofish256-ctr","serpent128-ctr","serpent192-ctr","serpent256-ctr","idea-ctr","cast128-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","chacha20-poly1305"],"example":"3des-cbc"},"description":"Acceptable encryption algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable encryption algorithms are\nimplementation-defined."}},"xml":{"name":"encryption","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_mac":{"title":"network-topology_network-topology_topology_topology-types_topology-netconf_ssh-transport-topology-parameters_mac","type":"object","description":"Parameters regarding message authentication code (MAC).","properties":{"mac-alg":{"type":"array","items":{"type":"string","enum":["hmac-sha1","hmac-sha1-96","hmac-md5","hmac-md5-96","none","AEAD_AES_128_GCM","AEAD_AES_256_GCM","hmac-sha2-256","hmac-sha2-512"],"example":"hmac-sha1"},"description":"Acceptable MAC algorithms in order of decreasing\npreference.\n\nIf this leaf-list is not configured (has zero\nelements), the acceptable MAC algorithms are\nimplementation-defined."}},"xml":{"name":"mac","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_topology-types_topology-pcep":{"title":"network-topology_network-topology_topology_topology-types_topology-pcep","type":"object","properties":{"odl-pcep-stats-provider:timer":{"description":"","type":"integer","format":"int32","default":5,"example":1,"xml":{"name":"timer","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config"}},"odl-pcep-topology-provider:capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities"},"session-config":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config"},"ted-name":{"description":"","type":"string","example":"Some ted-name"}},"xml":{"name":"topology-pcep","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_topology-types_topology-pcep_session-config":{"title":"network-topology_network-topology_topology_topology-types_topology-pcep_session-config","type":"object","description":"PCEP topology config","properties":{"max-unknown-messages":{"description":"","type":"integer","format":"int32","default":5,"example":1},"listen-address":{"description":"","type":"string","default":"0.0.0.0","example":"","minLength":0,"maxLength":2147483647},"dead-timer-value":{"description":"","type":"integer","format":"int32","default":120,"example":0},"tls":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_session-config_tls"},"keep-alive-timer-value":{"description":"","type":"integer","format":"int32","default":30,"example":0},"rpc-timeout":{"description":"","type":"integer","format":"int32","default":30,"example":-32768},"listen-port":{"description":"","type":"integer","format":"int32","default":4189,"example":0}},"xml":{"name":"session-config","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_topology-types_topology-pcep_session-config_tls":{"title":"network-topology_network-topology_topology_topology-types_topology-pcep_session-config_tls","type":"object","properties":{"keystore-type":{"description":"keystore type (JKS or PKCS12)","type":"string","enum":["JKS","PKCS12"],"example":"JKS"},"truststore-password":{"description":"password protecting truststore","type":"string","example":"Some truststore-password"},"keystore":{"description":"keystore location","type":"string","example":"Some keystore"},"keystore-path-type":{"description":"keystore path type (CLASSPATH or PATH)","type":"string","enum":["PATH","CLASSPATH"],"example":"PATH"},"truststore":{"description":"truststore location","type":"string","example":"Some truststore"},"truststore-path-type":{"description":"truststore path type (CLASSPATH or PATH)","type":"string","enum":["PATH","CLASSPATH"],"example":"PATH"},"keystore-password":{"description":"password protecting keystore","type":"string","example":"Some keystore-password"},"certificate-password":{"description":"password protecting certificate","type":"string","example":"Some certificate-password"},"truststore-type":{"description":"truststore type (JKS or PKCS12)","type":"string","enum":["JKS","PKCS12"],"example":"JKS"}},"required":["keystore-type","truststore-password","keystore","keystore-path-type","truststore","truststore-path-type","keystore-password","certificate-password","truststore-type"],"xml":{"name":"tls","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_topology-types_topology-pcep_capabilities":{"title":"network-topology_network-topology_topology_topology-types_topology-pcep_capabilities","type":"object","properties":{"association-group":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_association-group"},"path-setup-type":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_path-setup-type"},"p2mp":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_p2mp"},"stateful":{"$ref":"#/components/schemas/network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_stateful"}},"xml":{"name":"capabilities","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider"}},"network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_association-group":{"title":"network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_association-group","type":"object","properties":{"disjoint-path":{"description":"","type":"boolean","default":true,"example":true},"double-side-lsp":{"description":"","type":"boolean","default":true,"example":true},"single-side-lsp":{"description":"","type":"boolean","default":true,"example":true},"path-protection":{"description":"","type":"boolean","default":true,"example":true},"sr-policy":{"description":"","type":"boolean","default":true,"example":true},"enabled":{"description":"","type":"boolean","default":true,"example":true},"policy":{"description":"","type":"boolean","default":true,"example":true}},"xml":{"name":"association-group","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider"}},"network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_stateful":{"title":"network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_stateful","type":"object","properties":{"include-db-version":{"description":"","type":"boolean","default":true,"example":true},"initiated":{"description":"","type":"boolean","default":true,"example":true},"triggered-resync":{"description":"","type":"boolean","default":true,"example":true},"triggered-initial-sync":{"description":"","type":"boolean","default":true,"example":true},"delta-lsp-sync-capability":{"description":"","type":"boolean","default":true,"example":true},"active":{"description":"","type":"boolean","default":true,"example":true},"enabled":{"description":"","type":"boolean","default":true,"example":true}},"xml":{"name":"stateful","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider"}},"network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_path-setup-type":{"title":"network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_path-setup-type","type":"object","properties":{"rsvp-te":{"description":"","type":"boolean","default":true,"example":true},"srv6":{"description":"","type":"boolean","default":true,"example":true},"sr-mpls":{"description":"","type":"boolean","default":true,"example":true},"enabled":{"description":"","type":"boolean","default":true,"example":true}},"xml":{"name":"path-setup-type","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider"}},"network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_p2mp":{"title":"network-topology_network-topology_topology_topology-types_topology-pcep_capabilities_p2mp","type":"object","properties":{"enabled":{"description":"","type":"boolean","default":true,"example":true}},"xml":{"name":"p2mp","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider"}},"network-topology_network-topology_topology_underlay-topology":{"title":"network-topology_network-topology_topology_underlay-topology","type":"object","description":"Identifies the topology, or topologies, that this topology\nis dependent on.","properties":{"topology-ref":{"description":"","type":"string","example":"Some topology-ref"}},"xml":{"name":"underlay-topology","namespace":"urn:TBD:params:xml:ns:yang:network-topology"}},"network-topology_network-topology_topology_node":{"title":"network-topology_network-topology_topology_node","type":"object","description":"The list of network nodes defined for the topology.","properties":{"ovsdb:datapath-type-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_datapath-type-entry"},"description":""},"overlay:supported-tunnel-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supported-tunnel-entry"},"description":""},"ovsdb:bridge-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_bridge-external-ids"},"description":"Key-value pairs for use by external frameworks that integrate\nwith Open vSwitch.\n\nexternal_ids : bridge-id: optional string\n\nA unique identifier of the bridge. On Citrix XenServer this\nwill commonly be the same as external_ids:xs-network-uuids.\n\nexternal_ids : xs-network-uuids: optional string\n\nSemicolon-delimited set of universally unique identifier(s)\nfor the network with which this bridge is associated on a\nCitrix XenServer host. The network identifiers are RFC 4122\nUUIDs as displayed by, e.g., xe network-list."},"hwvtep:acls":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls"},"description":""},"hwvtep:switches":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_switches"},"description":"List of physical switches managed by this node"},"ovsdb:datapath-id":{"description":"Datapath-id of the bridge","type":"string","example":"00:00:00:00:00:00:00:00","minLength":0,"maxLength":2147483647,"xml":{"name":"datapath-id","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"hwvtep:hwvtep-node-name":{"description":"The name of the node","type":"string","example":"Some hwvtep-node-name","xml":{"name":"hwvtep-node-name","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"ovsdb:bridge-uuid":{"description":"The unique identifier of the bridge","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647,"xml":{"name":"bridge-uuid","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"ovsdb:fail-mode":{"description":"Failmode of the bridge","type":"string","enum":["ovsdb-fail-mode-base","ovsdb-fail-mode-standalone","ovsdb-fail-mode-secure"],"example":"ovsdb-fail-mode-base","xml":{"name":"fail-mode","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"ovsdb:openvswitch-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_openvswitch-other-configs"},"description":"Key-value pairs for configuring rarely used features.\n\nother_config : stats-update-interval: optional string\nThis option will affect the update of the statistics column\nin the following tables: Port, Interface , Mirror.\n\nother_config : flow-restore-wait: optional string\neither true or false When ovs-vswitchd starts up, it has an empty flow\ntable and therefore it handles all arriving packets in its\ndefault fashion according to its configuration, by\ndropping them or sending them to an OpenFlow controller or\nswitching them as a standalone switch.\n\nother_config : flow-limit: optional string\ncontaining an integer, at least 0. The maximum number of flows allowed in\nthe datapath flow table.\n\nother_config : n-dpdk-rxqs: optional string\ncontaining an integer, at least 1 Specifies the number of rx queues to be\ncreated for each dpdk interface. If not specified or\nspecified to 0, one rx queue will be created for each dpdk\ninterface by default.\n\nother_config : pmd-cpu-mask: optional string\nSpecifies CPU mask for setting the cpu affinity of\nPMD (Poll Mode Driver) threads. Value should be in the form\nof hex string, similar to the dpdk EAL '-c COREMASK' option\ninput or the 'taskset' mask input.\n\nother_config : n-handler-threads: optional string\ncontaining an integer, at least 1 Specifies the number of threads for\nsoftware datapaths to use for handling new flows. The default\nthe number of online CPU cores minus the number of\nrevalidators.\n\nother_config : n-revalidator-threads: optional string,\ncontaining an integer, at least 1 Specifies the number of\nthreads for software datapaths to use for revalidating flows\nin the datapath.\n\nother_config : enable-statistics: optional string\neither ture or false. Set this value to true to enable populating the\nstatistics column or to false to explicitly disable it."},"hwvtep:physical-switch-uuid":{"description":"The unique identifier of the physical-switch","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647,"xml":{"name":"physical-switch-uuid","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"netconf-node-optional:ignore-missing-schema-sources":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_ignore-missing-schema-sources"},"ovsdb:flow-node":{"description":"Flow node corresponding to this bridge","type":"string","xml":{"name":"flow-node","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"netconf-node-topology:netconf-node":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node"},"ovsdb:qos-entries":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries"},"description":""},"hwvtep:logical-routers":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers"},"description":""},"ovsdb:stp_enable":{"description":"Enable spanning tree on the bridge. By default, STP is\ndisabled on bridges","type":"boolean","example":true,"xml":{"name":"stp_enable","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"ovsdb:openvswitch-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_openvswitch-external-ids"},"description":"Key-value pairs for use by external frameworks that integrate\nwith Open vSwitch.\n\nexternal_ids : system-id: optional string\nA unique identifier for the Open vSwitch's physical host.\nThe form of the identifier depends on the type of the host.\nOn a Citrix XenServer, this will likely be the same as\nexternal_ids:xs-system-uuid.\n\nexternal_ids : xs-system-uuid: optional string\nThe Citrix XenServer universally unique identifier for the\nphysical host as displayed by xe-host-list."},"ovsdb:autoattach":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach"},"description":""},"hwvtep:management-ips":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_management-ips"},"description":""},"ovsdb:interface-type-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_interface-type-entry"},"description":""},"pcep-server:configured-lsp":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp"},"description":"List of Configured LSP per PCC"},"hwvtep:tunnels":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels"},"description":""},"hwvtep:remote-ucast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-ucast-macs"},"description":""},"ovsdb:managed-node-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managed-node-entry"},"description":""},"ovsdb:ovs-version":{"description":"The Open_vSwitch version number","type":"string","example":"Some ovs-version","xml":{"name":"ovs-version","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"hwvtep:managers":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managers"},"description":""},"hwvtep:local-ucast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-ucast-macs"},"description":""},"ovsdb:bridge-name":{"description":"The name of the bridge","type":"string","example":"Some bridge-name","xml":{"name":"bridge-name","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"ovsdb:controller-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_controller-entry"},"description":"Bridge controller info"},"node-id":{"description":"The identifier of a node in the topology.\nA node is specific to a topology to which it belongs.","type":"string","example":"Some node-id"},"ovsdb:bridge-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_bridge-other-configs"},"description":"Key-value pairs for configuring rarely used features.\n\nother_config : hwaddr: optional string\nAn Ethernet address in the form xx:xx:xx:xx:xx:xx to set the\nhardware address of the local port and influence the datapath\nID.\n\nother_config : forward-bpdu: optional string\neither true or false. Option to allow forwarding of BPDU frames when NORMAL\naction is invoked. Frames with reserved Ethernet\naddresses (e.g. STP BPDU) will be forwarded when this option\nis enabled and the switch is not providing that functionality.\n\nother_config : mac-aging-time: optional string\ncontaining an integer, at least 1 The maximum number of seconds to retain a\nMAC learning entry for which no packets have been seen. The\ndefault is currently 300 seconds (5 minutes). The value, if\nspecified, is forced into a reasonable range, currently 15\n  to 3600 seconds.\n\nother_config : mac-table-size: optional string\ncontaining an integer, at least 1 The maximum number of MAC addresses to\nlearn. The default is currently 2048. The value, if\nspecified, is forced into a reasonable range, currently 10\nto 1,000,000.\n\nother_config : datapath-id: optional string\nExactly 16 hex digits to set the OpenFlow datapath ID to a\nspecific value. May not be all-zero.\n\nother_config : dp-desc: optional string\nHuman readable description of datapath. It it a maximum\n256 byte-long free-form string to describe the datapath for\ndebugging purposes.\n\nother_config : disable-in-band: optional string\neither true or false\nIf set to true, disable in-band control on the bridge\nregardless of controller and manager settings.\n\nother_config : in-band-queue: optional string\ncontaining an integer, in range 0 to 4,294,967,295 A queue ID as a\nnonnegative integer.\n\nother_config : stp-system-id: optional string\nThe bridge's STP identifier (the lower 48 bits of the\nbridge-id) in the form xx:xx:xx:xx:xx:xx. By default, the\nidentifier is the MAC address of the bridge.\n\nother_config : stp-priority: optional string\ncontaining an integer, in range 0 to 65,535 The bridge's relative priority\nvalue for determining the root bridge (the upper 16 bits of\nthe bridgeid).  A bridge with the lowest bridge-id is elected\nthe root. By default, the priority is 0x8000.\n\nother_config : stp-hello-time: optional string\ncontaining an integer, in range 1 to 10 The interval between transmissions\nof hello messages by designated ports, in seconds. By default\nthe hello interval is 2 seconds.\n\nother_config : stp-max-age: optional string\ncontaining an integer, in range 6 to 40 The maximum age of the information\ntransmitted by the bridge when it is the root bridge, in\nseconds.  By default, the maximum age is 20 seconds.\n\nother_config : stp-forward-delay: optional string\ncontaining an integer, in range 4 to 30 The delay to wait between\ntransitioning root and designated ports to forwarding, in\nseconds. By default, the forwarding delay is 15 seconds.\n\nother_config : mcast-snooping-aging-time: optional string,\ncontaining an integer, at least 1 The maximum number of\nseconds to retain a multicast snooping entry for which no\npackets have been seen. The default is currently 300\nseconds (5 minutes). The value, if specified, is forced into\na reasonable range, currently 15 to 3600 seconds.\n\nother_config : mcast-snooping-table-size: optional string,\ncontaining an integer, at least 1 The maximum number of\nmulticast snooping addresses to learn. The default is\ncurrently 2048.  The value, if specified, is forced into a\nreasonable range, currently 10 to 1,000,000.\n\nother_config : mcast-snooping-disable-flood-unregistered:\noptional string, either true or false If set to false,\nunregistered multicast packets are forwarded to all ports.\nIf set to true, unregistered multicast packets are forwarded\nto ports connected to multicast routers."},"hwvtep:remote-arp-sources":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-arp-sources"},"description":""},"hwvtep:local-arp-sources":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-arp-sources"},"description":""},"hwvtep:hwvtep-node-description":{"description":"The description of the node","type":"string","example":"Some hwvtep-node-description","xml":{"name":"hwvtep-node-description","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-pcep-topology-stats:pcep-session-state":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state"},"ovsdb:datapath-type":{"description":"The datapath type of the bridge","type":"string","enum":["datapath-type-base","datapath-type-system","datapath-type-netdev"],"example":"datapath-type-base","xml":{"name":"datapath-type","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"hwvtep:logical-switches":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-switches"},"description":""},"ovsdb:bridge-openflow-node-ref":{"description":"A reference to the openflow node","type":"string","xml":{"name":"bridge-openflow-node-ref","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"supporting-node":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supporting-node"},"description":"This list defines vertical layering information for nodes.\nIt allows to capture for any given node, which node (or nodes)\nin the corresponding underlay topology it maps onto.\nA node can map to zero, one, or more nodes below it;\naccordingly there can be zero, one, or more elements in the list.\nIf there are specific layering requirements, for example\nspecific to a particular type of topology that only allows\nfor certain layering relationships, the choice\nbelow can be augmented with additional cases.\nA list has been chosen rather than a leaf-list in order\nto provide room for augmentations, e.g. for\nstatistics or priorization information associated with\nsupporting nodes."},"network-topology-sr:segments":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_segments"},"description":""},"ovsdb:protocol-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_protocol-entry"},"description":""},"ovsdb:auto-attach":{"description":"The unique identifier of the auto_attach entry for this bridge.","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647,"xml":{"name":"auto-attach","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"hwvtep:tunnel-ips":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnel-ips"},"description":""},"opendaylight-topology-inventory:inventory-node-ref":{"description":"","type":"string","xml":{"name":"inventory-node-ref","namespace":"urn:opendaylight:model:topology:inventory"}},"hwvtep:connection-info":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_connection-info1"},"hwvtep:db-version":{"description":"The database schema version","type":"string","example":"Some db-version","xml":{"name":"db-version","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"l3-unicast-igp-topology:igp-node-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes"},"hwvtep:remote-mcast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-mcast-macs"},"description":""},"hwvtep:local-mcast-macs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-mcast-macs"},"description":""},"termination-point":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point"},"description":"A termination point can terminate a link.\nDepending on the type of topology, a termination point could,\nfor example, refer to a port or an interface."},"hwvtep:managed-by":{"description":"The hwvtep global node to which this physical switch belongs to","type":"string","xml":{"name":"managed-by","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"ovsdb:queues":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues"},"description":""},"network-topology-pcep:session-config":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_session-config"}},"xml":{"name":"node","namespace":"urn:TBD:params:xml:ns:yang:network-topology"}},"network-topology_network-topology_topology_node_supporting-node":{"title":"network-topology_network-topology_topology_node_supporting-node","type":"object","description":"This list defines vertical layering information for nodes.\nIt allows to capture for any given node, which node (or nodes)\nin the corresponding underlay topology it maps onto.\nA node can map to zero, one, or more nodes below it;\naccordingly there can be zero, one, or more elements in the list.\nIf there are specific layering requirements, for example\nspecific to a particular type of topology that only allows\nfor certain layering relationships, the choice\nbelow can be augmented with additional cases.\nA list has been chosen rather than a leaf-list in order\nto provide room for augmentations, e.g. for\nstatistics or priorization information associated with\nsupporting nodes.","properties":{"node-ref":{"description":"","type":"string","example":"Some node-ref"},"topology-tunnel-pcep:path-computation-client":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supporting-node_path-computation-client"},"topology-ref":{"description":"","type":"string","example":"Some topology-ref"}},"xml":{"name":"supporting-node","namespace":"urn:TBD:params:xml:ns:yang:network-topology"}},"network-topology_network-topology_topology_node_supporting-node_path-computation-client":{"title":"network-topology_network-topology_topology_node_supporting-node_path-computation-client","type":"object","properties":{"controlling":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"path-computation-client","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"network-topology_network-topology_topology_node_termination-point":{"title":"network-topology_network-topology_topology_node_termination-point","type":"object","description":"A termination point can terminate a link.\nDepending on the type of topology, a termination point could,\nfor example, refer to a port or an interface.","properties":{"hwvtep:dst-ip":{"description":"IP address of the locator","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647,"xml":{"name":"dst-ip","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"hwvtep:hwvtep-node-description":{"description":"The description of the node","type":"string","example":"Some hwvtep-node-description","xml":{"name":"hwvtep-node-description","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"hwvtep:hwvtep-node-name":{"description":"The name of the node","type":"string","example":"Some hwvtep-node-name","xml":{"name":"hwvtep-node-name","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"ovsdb:interface-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-external-ids"},"description":"Interface external ids\n\nexternal_ids : attached-mac: optional string.\nThe MAC address programmed into the ''virtual hardware'' for this interface, in\nthe form xx:xx:xx:xx:xx:xx. For Citrix XenServer, this is the\nvalue of the MAC field in the VIF record for this interface.\n\nexternal_ids : iface-id: optional string.\nA system-unique identifier for the interface. On XenServer, this will commonly\nbe the same as external_ids:xs-vif-uuid.\n\nexternal_ids : iface-status: optional string\neither active or inactive Hypervisors may sometimes have more than one interface\nassociated with a given external_ids:iface-id, only one of\nwhich is actually in use at a given time.\n\nexternal_ids : xs-vif-uuid: optional string.\nThe virtual interface associated with this interface.\n\nexternal_ids : xs-network-uuid: optional string.\nThe virtual network to which this interface is attached.\n\nexternal_ids : vm-id: optional string.\nThe VM to which this interface belongs. On XenServer, this will be the same as\nexternal_ids:xsvm-uuid.\n\nexternal_ids : xs-vm-uuid: optional string.\nThe VM to which this interface belongs"},"ovsdb:mac":{"description":"Ethernet address to use for this interface. If unset, the default is used","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647,"xml":{"name":"mac","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"ovsdb:trunks":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_trunks"},"description":"Represents the trunks of a termination point."},"ovsdb:interface-uuid":{"description":"The unique identifier of the OVSDB interface","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647,"xml":{"name":"interface-uuid","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"opendaylight-topology-inventory:inventory-node-connector-ref":{"description":"","type":"string","xml":{"name":"inventory-node-connector-ref","namespace":"urn:opendaylight:model:topology:inventory"}},"ovsdb:interface-type":{"description":"The type of the OVSDB interface","type":"string","enum":["interface-type-base","interface-type-patch","interface-type-dpdkvhostuserclient","interface-type-tap","interface-type-gre64","interface-type-dpdkr","interface-type-stt","interface-type-dpdk","interface-type-internal","interface-type-ipsec-gre64","interface-type-ipsec-gre","interface-type-system","interface-type-vxlan-gpe","interface-type-dpdkvhost","interface-type-geneve","interface-type-dpdkvhostuser","interface-type-lisp","interface-type-vxlan","interface-type-gre"],"example":"interface-type-base","xml":{"name":"interface-type","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"ovsdb:options":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_options"},"description":"Port/Interface related optional input values"},"ovsdb:interface-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-other-configs"},"description":"Other config attributes for Interfaces\n\nother_config : enable-vlan-splinters: optional string\neither true or false. Set to true to enable VLAN splinters on this\ninterface. Defaults to false."},"tp-id":{"description":"","type":"string","example":"Some tp-id"},"hwvtep:physical-locator-uuid":{"description":"The unique identifier of the physical-locator","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647,"xml":{"name":"physical-locator-uuid","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"ovsdb:ingress-policing-burst":{"description":"Maximum burst size for data received on this interface in kb.\nThe default burst size if set to 0 is 1000 kb.  This value has no\neffect if ingress-policing-rate is 0.","type":"integer","format":"int64","example":0,"xml":{"name":"ingress-policing-burst","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"ovsdb:port-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-external-ids"},"description":"Port external ids\n\nexternal_ids : fake-bridge-id-*: optional string\nExternal IDs for a fake bridge (see the fake_bridge column) are defined by\nprefixing a Bridge external_ids key with\nfake-bridge-, e.g. fake-bridge-xs-network-uuids."},"l3-unicast-igp-topology:igp-termination-point-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_igp-termination-point-attributes"},"ovsdb:interface-bfd-status":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-bfd-status"},"description":"BFD status for a particular interface.\nThe switch sets key-value pairs in the bfd_status column to\nreport the status of BFD on this interface.  When BFD is not\nenabled, with bfd:enable, the switch clears all key-value\npairs from bfd_status.\n\nbfd_status : state: optional string, one of [admin_down, down, init, up]\nReports the state of the BFD session.  The BFD session is fully\nhealthy and negotiated if UP.\n\nbfd_status : forwarding: optional string, true or false\nReports whether the BFD session believes this Interface\nmay be used to forward traffic.  Typically this means\nthe local session is signaling UP, and the remote\nsystem isn't signaling a problem such as concatenated path down.\n\nbfd_status : diagnostic: optional string\nA diagnostic code specifying the local system's reason for the\nlast change in session state. The error messages are defined in\nsection 4.1 of [RFC 5880].\n\nbfd_status : remote_state: optional string, one of [admin_down, down, init, up]\nReports the state of the remote endpoint's BFD session.\n\nbfd_status : remote_diagnostic: optional string\nA diagnostic code specifying the remote system's reason for the\nlast change in session state. The error messages are defined in\nsection 4.1 of [RFC 5880].\n\nbfd_status : flap_count: optional string,\ncontaining an integer, minimum 0\nCounts the number of bfd_status:forwarding flaps since start.\nA flap is considered as a change of the bfd_status:forwarding value."},"hwvtep:encapsulation-type":{"description":"Encapsulation type used by this locator","type":"string","enum":["encapsulation-type-base","encapsulation-type-vxlan-over-ipv4"],"example":"encapsulation-type-base","xml":{"name":"encapsulation-type","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"ovsdb:ofport":{"description":"Port/Interface related optional ofport","type":"integer","format":"int64","example":0,"xml":{"name":"ofport","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"hwvtep:vlan-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_vlan-bindings"},"description":"A map of vlan ID to logical switch pairs"},"ovsdb:vlan-mode":{"description":"The VLAN mode of the termination point.","type":"string","enum":["access","native-tagged","native-untagged","trunk"],"example":"access","xml":{"name":"vlan-mode","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"ovsdb:vlan-tag":{"description":"The VLAN tag of the termination point.","type":"integer","format":"int32","example":0,"xml":{"name":"vlan-tag","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"ovsdb:qos-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_qos-entry"},"description":"","maxItems":1},"ovsdb:port-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_port-other-configs"},"description":"Other config attributes for Ports\n\nother_config : priority-tags: optional string\neither true or false An 802.1Q header contains two important pieces of\ninformation: a VLAN ID and a priority.\n\nother_config : bond-hash-basis: optional string\ncontaining an integer An integer hashed along with flows when choosing output\nslaves in load balanced bonds. When changed, all flows will be\nassigned different hash values possibly causing slave selection\ndecisions to change.\n\nother_config : bond-detect-mode: optional string\neither miimon or carrier The means used to detect link failures. Defaults to\ncarrier which uses each interface's carrier to detect failures.\nWhen set to miimon, will check for failures by polling each\ninterface's MII.\n\nother_config : bond-miimon-interval: optional string\ncontaining an integer The interval, in milliseconds, between successive\nattempts to poll each interface's MII. Relevant only when\nother_config:bond-detect-mode is miimon\n\nother_config : lacp-system-id: optional string\nThe LACP system ID of this Port. The system ID of a LACP bond\nis used to identify itself to its partners. Must be a nonzero\nMAC address. Defaults to the bridge Ethernet address if unset.\n\nother_config : lacp-system-priority: optional string\ncontaining an integer, in range 1 to 65,535 The LACP system priority of this\nPort. In LACP negotiations, link status decisions are made by\nthe system with the numerically lower priority.\n\nother_config : lacp-time: optional string\neither slow or fast. The LACP timing which should be used on this Port. By default\nslow is used. When configured to be fast LACP heartbeats are\nrequested at a rate of once per second causing connectivity\nproblems to be detected more quickly. In slow mode, heartbeats\nare requested at a rate of once every 30 seconds.\n\nother_config : lacp-fallback-ab: optional string\neither true or false Determines the behavior of openvswitch bond in LACP mode.\nIf the partner switch does not support LACP, setting this\noption to true allows openvswitch to fallback to active-backup.\nIf the option is set to false, the bond will be disabled.\nIn both the cases, once the partner switch is configured\nto LACP mode, the bond will use LACP.\n\nother_config : bond-rebalance-interval: optional string,\ncontaining an integer, in range 0 to 10,000 For a load\nbalanced bonded port, the number of milliseconds between\nsuccessive attempts to rebalance the bond, that is, to move\nflows from one interface on the bond to another in an attempt\nto keep usage of each interface roughly equal. If zero, load\nbalancing is disabled on the bond (link failure still cause\nflows to move). If less than 1000ms, the rebalance interval\nwill be 1000ms.\n\nother_config : stp-enable: optional string\neither true or false. If spanning tree is enabled on the bridge, member ports are\nenabled by default (with the exception of bond, internal, and\nmirror ports which do not work with STP). If this column's\nvalue is false spanning tree is disabled on the port.\n\nother_config : stp-port-num: optional string\ncontaining an integer, in range 1 to 255 The port number used for the lower 8\nbits of the port-id. By default, the numbers will be assigned\nautomatically. If any port's number is manually configured on\na bridge, then they must all be.\n\nother_config : stp-port-priority: optional string\ncontaining an integer, in range 0 to 255 The port's relative priority value\nfor determining the root port (the upper 8 bits of the port-id).\n\nother_config : stp-path-cost: optional string\ncontaining an integer, in range 0 to 65,535 Spanning tree path cost for the\nport. A lower number indicates a faster link. By default, the\ncost is based on the maximum speed of the link.\n\nother_config : rstp-enable: optional string\neither true or false\nIf rapid spanning tree is enabled on the bridge, member ports\nare enabled by default (with the exception of bond, internal,\nand mirror ports which do not work with RSTP). If this\ncolumn's value is false rapid spanning tree is disabled on\nthe port.\n\nother_config : rstp-port-priority: optional string\ncontaining an integer, in range 0 to 240 The port's relative priority value\nfor determining the root port, in multiples of 16. By default,\nthe port priority is 0x80 (128).\n\nother_config : rstp-port-num: optional string\ncontaining an integer, in range 1 to 4,095 The local RSTP port number, used\nas the lower 12 bits of the port-id.\n\nother_config : rstp-port-path-cost: optional string\ncontaining an integer The port path cost. The Port's contribution, when it\nis the Root Port, to the Root Path Cost for the Bridge.\n\nother_config : rstp-port-admin-edge: optional string\neither true or false\n\nother_config : rstp-port-auto-edge: optional string\neither true or false The auto edge port parameter for the Port. Default\nis true.\n\nother_config : rstp-port-mcheck: optional string\neither true or false The mcheck port parameter for the Port. Default is false.\n\nother_config : mcast-snooping-flood: optional string\neither true or false If set to true, multicast packets are\nunconditionally forwarded to the specific port"},"ovsdb:ingress-policing-rate":{"description":"Maximum rate for data received on this interface in kbps.\nData received faster than this rate is dropped.  Set to 0 (default)\nto disable policing","type":"integer","format":"int64","example":0,"xml":{"name":"ingress-policing-rate","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"ovsdb:interface-lldp":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-lldp"},"description":"Auto Attach configuration for a particular interface.\nIf LLDP is enabled on an interface, the interface processes received\nLLDP packets and never passes them to OpenFlow or forwards them.\n\nlldp : enable: optional string, either true or false\nTrue to enable LLDP on this Interface. If not specified, LLDP\nwill be disabled by default."},"hwvtep:vlan-stats":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_vlan-stats"},"description":""},"ovsdb:name":{"description":"The name of the OVSDB port/interface","type":"string","example":"Some name","xml":{"name":"name","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"hwvtep:physical-port-uuid":{"description":"The unique identifier of the physical-port","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647,"xml":{"name":"physical-port-uuid","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"ovsdb:port-uuid":{"description":"The unique identifier of the OVSDB port","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647,"xml":{"name":"port-uuid","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"hwvtep:acl-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_acl-bindings"},"description":""},"ovsdb:interface-bfd":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_termination-point_interface-bfd"},"description":"BFD configuration for a particular interface.\nBFD, defined in RFC 5880 and RFC 5881, allows point-to-point\ndetection of connectivity failures by occasional transmission of\nBFD control messages.\n\nbfd : enable: optional string, either true or false\nTrue to enable BFD on this Interface. If not specified, BFD\nwill be disabled by default.\n\nbfd : min_rx: optional string\ncontaining an integer, at least 1.\nThe shortest interval, in milliseconds, at which this BFD session\noffers to receive BFD control messages.  The remote endpoint may\nchoose to send messages at a slower rate.  Defaults to 1000.\n\nbfd : min_tx: optional string\ncontaining an integer, at least 1.\nThe shortest interval, in milliseconds, at which this BFD session is\nwilling to transmit BFD control messages.  Messages will actually be\ntransmitted at a slower rate if the remote endpoint is not willing to\nreceive as quickly as specified.  Defaults to 100.\n\nbfd : decay_min_rx: optional string\ncontaining an integer\nAn alternate receive interval, in milliseconds, that must be greater\nthan or equal to bfd:min_rx.  The implementation switches from\nbfd:min_rx to bfd:decay_min_rx when there is no obvious incoming\ndata traffic at the interface, to reduce the CPU and bandwidth cost\nof monitoring an idle interface.  This feature may be disabled by\nsetting a value of 0. This feature is reset whenever bfd:decay_min_rx\nbfd:min_rx changes.\n\nbfd : forwarding_if_rx: optional string, either true or false\nWhen true, traffic received on the Interface is used to\nindicate the capability of packet I/O. BFD control packets are\nstill transmitted and received.  At least one BFD control\npacket must be received every 100 * bfd:min_rx amount of time.\nOtherwise, even if traffic are received, the bfd-status:forwarding\nwill be false.\n\nbfd : cpath_down: optional string, either true or false\nSet to true to notify the remote endpoint that traffic should not be\nforwarded to this system for some reason other than a connectivity\nfailure on the interface being monitored.  The typical underlying\nreason is concatenated path down, that is, that connectivity\nbeyond the local system is down.  Defaults to false.\n\nbfd : cpath_down: optional string, either true or false\nSet to true to notify the remote endpoint that traffic should not be\nforwarded to this system for some reason other than a connectivity\nfailure on the interface being monitored.  The typical underlying\nreason is concatenated path down, that is, that connectivity\nbeyond the local system is down.  Defaults to false.\n\nbfd : check_tnl_key: optional string, either true or false\nSet to true to make BFD accept only control messages with a tunnel\nkey of zero.  By default, BFD accepts control messages with any\ntunnel key.\n\nbfd : bfd_local_dst_mac: optional string, mac address\nSet to an Ethernet address in the form xx:xx:xx:xx:xx:xx\nto set the MAC used as destination for transmitted BFD packets. The\ndefault is 00:23:20:00:00:01\n\nbfd : bfd_remote_dst_mac: optional string, mac address\nSet to an Ethernet address in the form xx:xx:xx:xx:xx:xx\nto set the MAC used for checking the destination of received BFD packets.\nPackets with different destination MAC will not be considered as BFD packets.\nIf not specified the destination MAC address of received BFD packets\nare not checked.\n\nbfd : bfd_src_ip: optional string, ip address\nSet to an IPv4 address to set the IP address used as source\nfor transmitted BFD packets.  The default is 169.254.1.1\n\nbfd : bfd_dst_ip: optional string, ip address\nSet to an IPv4 address to set the IP address used as destination\nfor transmitted BFD packets.  The default is 169.254.1.0"},"ovsdb:ofport_request":{"description":"Port/Interface related optional ofport_request, in range 1 to 65279","type":"integer","format":"int32","example":1,"xml":{"name":"ofport_request","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}}},"xml":{"name":"termination-point","namespace":"urn:TBD:params:xml:ns:yang:network-topology"}},"network-topology_network-topology_topology_node_termination-point_vlan-bindings":{"title":"network-topology_network-topology_topology_node_termination-point_vlan-bindings","type":"object","description":"A map of vlan ID to logical switch pairs","properties":{"logical-switch-ref":{"description":"Reference to logical switch for the vlan","type":"string"},"vlan-id-key":{"description":"vlan ids in the range 0 - 4095","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-bindings","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_termination-point_acl-bindings":{"title":"network-topology_network-topology_topology_node_termination-point_acl-bindings","type":"object","properties":{"acl-ref":{"description":"reference to ACL to be applied to this port","type":"string"},"acl-binding-vlan-id":{"description":"vlan ids in the range 0 - 4095","type":"integer","format":"int32","example":0}},"xml":{"name":"acl-bindings","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_termination-point_vlan-stats":{"title":"network-topology_network-topology_topology_node_termination-point_vlan-stats","type":"object","properties":{"vlan-stats-ref":{"description":"reference to logical binding stats for this port","type":"string"},"vlan-stats-key":{"description":"vlan ids in the range 0 - 4095","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-stats","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_termination-point_port-fault-status":{"title":"network-topology_network-topology_topology_node_termination-point_port-fault-status","type":"object","properties":{"port-fault-status-key":{"description":"port-fault-status name/key","type":"string","example":"Some port-fault-status-key"},"port-fault-status-value":{"description":"port-fault-status value","type":"string","example":"Some port-fault-status-value"}},"xml":{"name":"port-fault-status","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_termination-point_options":{"title":"network-topology_network-topology_topology_node_termination-point_options","type":"object","description":"Port/Interface related optional input values","properties":{"value":{"description":"Option value","type":"string","example":"Some value"},"option":{"description":"Option name","type":"string","example":"Some option"}},"xml":{"name":"options","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_termination-point_trunks":{"title":"network-topology_network-topology_topology_node_termination-point_trunks","type":"object","description":"Represents the trunks of a termination point.","properties":{"trunk":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"trunks","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_termination-point_port-other-configs":{"title":"network-topology_network-topology_topology_node_termination-point_port-other-configs","type":"object","description":"Other config attributes for Ports\n\nother_config : priority-tags: optional string\neither true or false An 802.1Q header contains two important pieces of\ninformation: a VLAN ID and a priority.\n\nother_config : bond-hash-basis: optional string\ncontaining an integer An integer hashed along with flows when choosing output\nslaves in load balanced bonds. When changed, all flows will be\nassigned different hash values possibly causing slave selection\ndecisions to change.\n\nother_config : bond-detect-mode: optional string\neither miimon or carrier The means used to detect link failures. Defaults to\ncarrier which uses each interface's carrier to detect failures.\nWhen set to miimon, will check for failures by polling each\ninterface's MII.\n\nother_config : bond-miimon-interval: optional string\ncontaining an integer The interval, in milliseconds, between successive\nattempts to poll each interface's MII. Relevant only when\nother_config:bond-detect-mode is miimon\n\nother_config : lacp-system-id: optional string\nThe LACP system ID of this Port. The system ID of a LACP bond\nis used to identify itself to its partners. Must be a nonzero\nMAC address. Defaults to the bridge Ethernet address if unset.\n\nother_config : lacp-system-priority: optional string\ncontaining an integer, in range 1 to 65,535 The LACP system priority of this\nPort. In LACP negotiations, link status decisions are made by\nthe system with the numerically lower priority.\n\nother_config : lacp-time: optional string\neither slow or fast. The LACP timing which should be used on this Port. By default\nslow is used. When configured to be fast LACP heartbeats are\nrequested at a rate of once per second causing connectivity\nproblems to be detected more quickly. In slow mode, heartbeats\nare requested at a rate of once every 30 seconds.\n\nother_config : lacp-fallback-ab: optional string\neither true or false Determines the behavior of openvswitch bond in LACP mode.\nIf the partner switch does not support LACP, setting this\noption to true allows openvswitch to fallback to active-backup.\nIf the option is set to false, the bond will be disabled.\nIn both the cases, once the partner switch is configured\nto LACP mode, the bond will use LACP.\n\nother_config : bond-rebalance-interval: optional string,\ncontaining an integer, in range 0 to 10,000 For a load\nbalanced bonded port, the number of milliseconds between\nsuccessive attempts to rebalance the bond, that is, to move\nflows from one interface on the bond to another in an attempt\nto keep usage of each interface roughly equal. If zero, load\nbalancing is disabled on the bond (link failure still cause\nflows to move). If less than 1000ms, the rebalance interval\nwill be 1000ms.\n\nother_config : stp-enable: optional string\neither true or false. If spanning tree is enabled on the bridge, member ports are\nenabled by default (with the exception of bond, internal, and\nmirror ports which do not work with STP). If this column's\nvalue is false spanning tree is disabled on the port.\n\nother_config : stp-port-num: optional string\ncontaining an integer, in range 1 to 255 The port number used for the lower 8\nbits of the port-id. By default, the numbers will be assigned\nautomatically. If any port's number is manually configured on\na bridge, then they must all be.\n\nother_config : stp-port-priority: optional string\ncontaining an integer, in range 0 to 255 The port's relative priority value\nfor determining the root port (the upper 8 bits of the port-id).\n\nother_config : stp-path-cost: optional string\ncontaining an integer, in range 0 to 65,535 Spanning tree path cost for the\nport. A lower number indicates a faster link. By default, the\ncost is based on the maximum speed of the link.\n\nother_config : rstp-enable: optional string\neither true or false\nIf rapid spanning tree is enabled on the bridge, member ports\nare enabled by default (with the exception of bond, internal,\nand mirror ports which do not work with RSTP). If this\ncolumn's value is false rapid spanning tree is disabled on\nthe port.\n\nother_config : rstp-port-priority: optional string\ncontaining an integer, in range 0 to 240 The port's relative priority value\nfor determining the root port, in multiples of 16. By default,\nthe port priority is 0x80 (128).\n\nother_config : rstp-port-num: optional string\ncontaining an integer, in range 1 to 4,095 The local RSTP port number, used\nas the lower 12 bits of the port-id.\n\nother_config : rstp-port-path-cost: optional string\ncontaining an integer The port path cost. The Port's contribution, when it\nis the Root Port, to the Root Path Cost for the Bridge.\n\nother_config : rstp-port-admin-edge: optional string\neither true or false\n\nother_config : rstp-port-auto-edge: optional string\neither true or false The auto edge port parameter for the Port. Default\nis true.\n\nother_config : rstp-port-mcheck: optional string\neither true or false The mcheck port parameter for the Port. Default is false.\n\nother_config : mcast-snooping-flood: optional string\neither true or false If set to true, multicast packets are\nunconditionally forwarded to the specific port","properties":{"other-config-key":{"description":"port-other-config name/key","type":"string","example":"Some other-config-key"},"other-config-value":{"description":"port-other-config value","type":"string","example":"Some other-config-value"}},"xml":{"name":"port-other-configs","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_termination-point_interface-other-configs":{"title":"network-topology_network-topology_topology_node_termination-point_interface-other-configs","type":"object","description":"Other config attributes for Interfaces\n\nother_config : enable-vlan-splinters: optional string\neither true or false. Set to true to enable VLAN splinters on this\ninterface. Defaults to false.","properties":{"other-config-key":{"description":"interface-other-config name/key","type":"string","example":"Some other-config-key"},"other-config-value":{"description":"interface-other-config value","type":"string","example":"Some other-config-value"}},"xml":{"name":"interface-other-configs","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_termination-point_port-external-ids":{"title":"network-topology_network-topology_topology_node_termination-point_port-external-ids","type":"object","description":"Port external ids\n\nexternal_ids : fake-bridge-id-*: optional string\nExternal IDs for a fake bridge (see the fake_bridge column) are defined by\nprefixing a Bridge external_ids key with\nfake-bridge-, e.g. fake-bridge-xs-network-uuids.","properties":{"external-id-key":{"description":"external-id name/key","type":"string","example":"Some external-id-key"},"external-id-value":{"description":"external-id value","type":"string","example":"Some external-id-value"}},"required":["external-id-key","external-id-value"],"xml":{"name":"port-external-ids","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_termination-point_interface-external-ids":{"title":"network-topology_network-topology_topology_node_termination-point_interface-external-ids","type":"object","description":"Interface external ids\n\nexternal_ids : attached-mac: optional string.\nThe MAC address programmed into the ''virtual hardware'' for this interface, in\nthe form xx:xx:xx:xx:xx:xx. For Citrix XenServer, this is the\nvalue of the MAC field in the VIF record for this interface.\n\nexternal_ids : iface-id: optional string.\nA system-unique identifier for the interface. On XenServer, this will commonly\nbe the same as external_ids:xs-vif-uuid.\n\nexternal_ids : iface-status: optional string\neither active or inactive Hypervisors may sometimes have more than one interface\nassociated with a given external_ids:iface-id, only one of\nwhich is actually in use at a given time.\n\nexternal_ids : xs-vif-uuid: optional string.\nThe virtual interface associated with this interface.\n\nexternal_ids : xs-network-uuid: optional string.\nThe virtual network to which this interface is attached.\n\nexternal_ids : vm-id: optional string.\nThe VM to which this interface belongs. On XenServer, this will be the same as\nexternal_ids:xsvm-uuid.\n\nexternal_ids : xs-vm-uuid: optional string.\nThe VM to which this interface belongs","properties":{"external-id-key":{"description":"external-id name/key","type":"string","example":"Some external-id-key"},"external-id-value":{"description":"external-id value","type":"string","example":"Some external-id-value"}},"required":["external-id-key","external-id-value"],"xml":{"name":"interface-external-ids","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_termination-point_interface-lldp":{"title":"network-topology_network-topology_topology_node_termination-point_interface-lldp","type":"object","description":"Auto Attach configuration for a particular interface.\nIf LLDP is enabled on an interface, the interface processes received\nLLDP packets and never passes them to OpenFlow or forwards them.\n\nlldp : enable: optional string, either true or false\nTrue to enable LLDP on this Interface. If not specified, LLDP\nwill be disabled by default.","properties":{"lldp-value":{"description":"lldp value","type":"string","example":"Some lldp-value"},"lldp-key":{"description":"lldp name/key","type":"string","example":"Some lldp-key"}},"xml":{"name":"interface-lldp","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_termination-point_interface-bfd":{"title":"network-topology_network-topology_topology_node_termination-point_interface-bfd","type":"object","description":"BFD configuration for a particular interface.\nBFD, defined in RFC 5880 and RFC 5881, allows point-to-point\ndetection of connectivity failures by occasional transmission of\nBFD control messages.\n\nbfd : enable: optional string, either true or false\nTrue to enable BFD on this Interface. If not specified, BFD\nwill be disabled by default.\n\nbfd : min_rx: optional string\ncontaining an integer, at least 1.\nThe shortest interval, in milliseconds, at which this BFD session\noffers to receive BFD control messages.  The remote endpoint may\nchoose to send messages at a slower rate.  Defaults to 1000.\n\nbfd : min_tx: optional string\ncontaining an integer, at least 1.\nThe shortest interval, in milliseconds, at which this BFD session is\nwilling to transmit BFD control messages.  Messages will actually be\ntransmitted at a slower rate if the remote endpoint is not willing to\nreceive as quickly as specified.  Defaults to 100.\n\nbfd : decay_min_rx: optional string\ncontaining an integer\nAn alternate receive interval, in milliseconds, that must be greater\nthan or equal to bfd:min_rx.  The implementation switches from\nbfd:min_rx to bfd:decay_min_rx when there is no obvious incoming\ndata traffic at the interface, to reduce the CPU and bandwidth cost\nof monitoring an idle interface.  This feature may be disabled by\nsetting a value of 0. This feature is reset whenever bfd:decay_min_rx\nbfd:min_rx changes.\n\nbfd : forwarding_if_rx: optional string, either true or false\nWhen true, traffic received on the Interface is used to\nindicate the capability of packet I/O. BFD control packets are\nstill transmitted and received.  At least one BFD control\npacket must be received every 100 * bfd:min_rx amount of time.\nOtherwise, even if traffic are received, the bfd-status:forwarding\nwill be false.\n\nbfd : cpath_down: optional string, either true or false\nSet to true to notify the remote endpoint that traffic should not be\nforwarded to this system for some reason other than a connectivity\nfailure on the interface being monitored.  The typical underlying\nreason is concatenated path down, that is, that connectivity\nbeyond the local system is down.  Defaults to false.\n\nbfd : cpath_down: optional string, either true or false\nSet to true to notify the remote endpoint that traffic should not be\nforwarded to this system for some reason other than a connectivity\nfailure on the interface being monitored.  The typical underlying\nreason is concatenated path down, that is, that connectivity\nbeyond the local system is down.  Defaults to false.\n\nbfd : check_tnl_key: optional string, either true or false\nSet to true to make BFD accept only control messages with a tunnel\nkey of zero.  By default, BFD accepts control messages with any\ntunnel key.\n\nbfd : bfd_local_dst_mac: optional string, mac address\nSet to an Ethernet address in the form xx:xx:xx:xx:xx:xx\nto set the MAC used as destination for transmitted BFD packets. The\ndefault is 00:23:20:00:00:01\n\nbfd : bfd_remote_dst_mac: optional string, mac address\nSet to an Ethernet address in the form xx:xx:xx:xx:xx:xx\nto set the MAC used for checking the destination of received BFD packets.\nPackets with different destination MAC will not be considered as BFD packets.\nIf not specified the destination MAC address of received BFD packets\nare not checked.\n\nbfd : bfd_src_ip: optional string, ip address\nSet to an IPv4 address to set the IP address used as source\nfor transmitted BFD packets.  The default is 169.254.1.1\n\nbfd : bfd_dst_ip: optional string, ip address\nSet to an IPv4 address to set the IP address used as destination\nfor transmitted BFD packets.  The default is 169.254.1.0","properties":{"bfd-value":{"description":"bfd value","type":"string","example":"Some bfd-value"},"bfd-key":{"description":"bfd name/key","type":"string","example":"Some bfd-key"}},"xml":{"name":"interface-bfd","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_termination-point_interface-bfd-status":{"title":"network-topology_network-topology_topology_node_termination-point_interface-bfd-status","type":"object","description":"BFD status for a particular interface.\nThe switch sets key-value pairs in the bfd_status column to\nreport the status of BFD on this interface.  When BFD is not\nenabled, with bfd:enable, the switch clears all key-value\npairs from bfd_status.\n\nbfd_status : state: optional string, one of [admin_down, down, init, up]\nReports the state of the BFD session.  The BFD session is fully\nhealthy and negotiated if UP.\n\nbfd_status : forwarding: optional string, true or false\nReports whether the BFD session believes this Interface\nmay be used to forward traffic.  Typically this means\nthe local session is signaling UP, and the remote\nsystem isn't signaling a problem such as concatenated path down.\n\nbfd_status : diagnostic: optional string\nA diagnostic code specifying the local system's reason for the\nlast change in session state. The error messages are defined in\nsection 4.1 of [RFC 5880].\n\nbfd_status : remote_state: optional string, one of [admin_down, down, init, up]\nReports the state of the remote endpoint's BFD session.\n\nbfd_status : remote_diagnostic: optional string\nA diagnostic code specifying the remote system's reason for the\nlast change in session state. The error messages are defined in\nsection 4.1 of [RFC 5880].\n\nbfd_status : flap_count: optional string,\ncontaining an integer, minimum 0\nCounts the number of bfd_status:forwarding flaps since start.\nA flap is considered as a change of the bfd_status:forwarding value.","properties":{"bfd-status-key":{"description":"bfd-status name/key","type":"string","example":"Some bfd-status-key"},"bfd-status-value":{"description":"bfd-status value","type":"string","example":"Some bfd-status-value"}},"xml":{"name":"interface-bfd-status","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_termination-point_qos-entry":{"title":"network-topology_network-topology_topology_node_termination-point_qos-entry","type":"object","properties":{"qos-key":{"description":"Fixed key to reference the QoS entry in MD-SAL.","type":"integer","format":"int64","example":1},"qos-ref":{"description":"Instance identifier of a QoS entry in the MD-SAL.","type":"string"}},"required":["qos-key","qos-ref"],"xml":{"name":"qos-entry","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_termination-point_igp-termination-point-attributes":{"title":"network-topology_network-topology_topology_node_termination-point_igp-termination-point-attributes","type":"object","properties":{"ip-address":{"type":"array","items":{"type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"description":"IPv4 or IPv6 address"}},"xml":{"name":"igp-termination-point-attributes","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology"}},"network-topology_network-topology_topology_node_pcep-session-state":{"title":"network-topology_network-topology_topology_node_pcep-session-state","type":"object","properties":{"synchronized":{"description":"Represents synchronization status.","type":"boolean","default":false,"example":true},"local-pref":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_local-pref"},"messages":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages"},"peer-pref":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-pref"},"delegated-lsps-count":{"description":"The number of delegated LSPs (tunnels) from PCC.","type":"string","default":"0"},"session-duration":{"description":"Elapsed time (in d:H:m:s) from session-up until now.","type":"string","example":"Some session-duration"},"peer-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_peer-capabilities"}},"xml":{"name":"pcep-session-state","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats"}},"network-topology_network-topology_topology_node_pcep-session-state_peer-capabilities":{"title":"network-topology_network-topology_topology_node_pcep-session-state_peer-capabilities","type":"object","description":"Remote peer's (PCC) advertised capabilities.","properties":{"odl-pcep-stateful-stats:active":{"description":"Represents peer's LSP update capability.","type":"boolean","default":false,"example":true,"xml":{"name":"active","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}},"odl-pcep-stateful-stats:stateful":{"description":"Represents peer's stateful/stateless capability.","type":"boolean","default":false,"example":true,"xml":{"name":"stateful","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}},"odl-pcep-stateful-stats:instantiation":{"description":"Represents peer's instantiation capability.","type":"boolean","default":false,"example":true,"xml":{"name":"instantiation","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}}},"xml":{"name":"peer-capabilities","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats"}},"network-topology_network-topology_topology_node_pcep-session-state_messages":{"title":"network-topology_network-topology_topology_node_pcep-session-state_messages","type":"object","description":"The statistics of PCEP received/sent messages from the PCE point of view.","properties":{"sent-msg-count":{"description":"Total number of sent PCEP messages.","type":"string","default":"0"},"received-msg-count":{"description":"Total number of received PCEP messages.","type":"string","default":"0"},"reply-time":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_reply-time"},"odl-pcep-stateful-stats:sent-upd-msg-count":{"description":"The number of sent PCUpd messages.","type":"string","default":"0","xml":{"name":"sent-upd-msg-count","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}},"odl-pcep-stateful-stats:sent-init-msg-count":{"description":"The number of sent PCInitiate messages.","type":"string","default":"0","xml":{"name":"sent-init-msg-count","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}},"unknown-msg-received":{"description":"The number of received unknown messages.","type":"string","default":"0"},"last-sent-msg-timestamp":{"description":"The timestamp of last sent message.","type":"string","default":"0"},"odl-pcep-stateful-stats:received-rpt-msg-count":{"description":"The number of received PcRpt messages.","type":"string","default":"0","xml":{"name":"received-rpt-msg-count","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}},"error-messages":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages"},"odl-pcep-stateful-stats:last-received-rpt-msg-timestamp":{"description":"The timestamp of last received PCRpt message.","type":"string","default":"0","xml":{"name":"last-received-rpt-msg-timestamp","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}}},"xml":{"name":"messages","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats"}},"network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages":{"title":"network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages","type":"object","description":"The message statistics of received/sent PCErr messages.","properties":{"last-received-error":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-received-error"},"sent-error-msg-count":{"description":"Total number of sent PCErr messages.","type":"string","default":"0"},"last-sent-error":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-sent-error"},"received-error-msg-count":{"description":"Total number of received PCErr messages.","type":"string","default":"0"}},"xml":{"name":"error-messages","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats"}},"network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-received-error":{"title":"network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-received-error","type":"object","description":"Type/value tuple of last received error.","properties":{"error-type":{"description":"","type":"string","default":"0"},"error-value":{"description":"","type":"string","default":"0"}},"xml":{"name":"last-received-error","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats"}},"network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-sent-error":{"title":"network-topology_network-topology_topology_node_pcep-session-state_messages_error-messages_last-sent-error","type":"object","description":"Type/value tuple of last sent error.","properties":{"error-type":{"description":"","type":"string","default":"0"},"error-value":{"description":"","type":"string","default":"0"}},"xml":{"name":"last-sent-error","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats"}},"network-topology_network-topology_topology_node_pcep-session-state_messages_reply-time":{"title":"network-topology_network-topology_topology_node_pcep-session-state_messages_reply-time","type":"object","description":"Measures time elapsed from request's send to reply's received.","properties":{"max-time":{"description":"Maximal measured time value (in milliseconds).","type":"string","default":"0"},"average-time":{"description":"Average time (in milliseconds) of gauged values.","type":"string","default":"0"},"min-time":{"description":"Minimal measured time value (in milliseconds).","type":"string","default":"0"}},"xml":{"name":"reply-time","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats"}},"network-topology_network-topology_topology_node_pcep-session-state_local-pref":{"title":"network-topology_network-topology_topology_node_pcep-session-state_local-pref","type":"object","description":"The local (PCE) preferences.","properties":{"ip-address":{"description":"Peer's IP address.","type":"string","default":"","example":"Some ip-address"},"keepalive":{"description":"Advertised keep-alive value.","type":"string","default":"0"},"deadtimer":{"description":"Advertised deadtimer value.","type":"string","default":"0"},"odl-pcep-stateful-stats:speaker-entity-id-value":{"description":"","type":"string","format":"byte","xml":{"name":"speaker-entity-id-value","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}},"session-id":{"description":"Peer's session identifier.","type":"string","default":"0"}},"xml":{"name":"local-pref","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats"}},"network-topology_network-topology_topology_node_pcep-session-state_peer-pref":{"title":"network-topology_network-topology_topology_node_pcep-session-state_peer-pref","type":"object","description":"The remote peer (PCC) preferences.","properties":{"ip-address":{"description":"Peer's IP address.","type":"string","default":"","example":"Some ip-address"},"keepalive":{"description":"Advertised keep-alive value.","type":"string","default":"0"},"deadtimer":{"description":"Advertised deadtimer value.","type":"string","default":"0"},"session-id":{"description":"Peer's session identifier.","type":"string","default":"0"}},"xml":{"name":"peer-pref","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats"}},"network-topology_network-topology_topology_node_supported-tunnel-entry":{"title":"network-topology_network-topology_topology_node_supported-tunnel-entry","type":"object","properties":{"tunnel-type":{"description":"","type":"string","enum":["tunnel-type-base","tunnel-type-gre","tunnel-type-vxlan-gpe","tunnel-type-vxlan"],"example":"tunnel-type-base"},"ip-port-locator-entry":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_supported-tunnel-entry_ip-port-locator-entry"},"description":""}},"xml":{"name":"supported-tunnel-entry","namespace":"urn:opendaylight:params:xml:ns:yang:overlay"}},"network-topology_network-topology_topology_node_supported-tunnel-entry_ip-port-locator-entry":{"title":"network-topology_network-topology_topology_node_supported-tunnel-entry_ip-port-locator-entry","type":"object","properties":{"port":{"description":"Data-plane port number","type":"integer","format":"int32","example":0},"ip":{"description":"Data-plane IP address","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"ip-port-locator-entry","namespace":"urn:opendaylight:params:xml:ns:yang:overlay"}},"network-topology_network-topology_topology_node_ignore-missing-schema-sources":{"title":"network-topology_network-topology_topology_node_ignore-missing-schema-sources","type":"object","description":"Allows mount point to reconnect on the 'missing schema sources' error.\nWARNING - enabling the reconnection on the 'missing schema sources' error can lead\nto unexpected errors at runtime.","properties":{"allowed":{"description":"Allows reconnection of the mount point. Default false.","type":"boolean","default":false,"example":true},"reconnect-time":{"description":"Time for reconnection - in units milliseconds. Default 5000 ms.","type":"integer","format":"int64","default":5000,"example":0}},"xml":{"name":"ignore-missing-schema-sources","namespace":"urn:opendaylight:netconf-node-optional"}},"network-topology_network-topology_topology_node_protocol-entry":{"title":"network-topology_network-topology_topology_node_protocol-entry","type":"object","properties":{"protocol":{"description":"Protocol bridge should seek to speak to its controller","type":"string","enum":["ovsdb-bridge-protocol-base","ovsdb-bridge-protocol-openflow-10","ovsdb-bridge-protocol-openflow-14","ovsdb-bridge-protocol-openflow-12","ovsdb-bridge-protocol-openflow-13","ovsdb-bridge-protocol-openflow-11","ovsdb-bridge-protocol-openflow-15"],"example":"ovsdb-bridge-protocol-base"}},"xml":{"name":"protocol-entry","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_controller-entry":{"title":"network-topology_network-topology_topology_node_controller-entry","type":"object","description":"Bridge controller info","properties":{"controller-uuid":{"description":"The unique identifier of the controller","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"max_backoff":{"description":"Maximum  number  of  milliseconds  to  wait between\nconnection attempts","type":"integer","format":"int64","example":1000},"inactivity_probe":{"description":"Maximum number of milliseconds of idle time on connection\nto controller before sending an inactivity probe message.\nA value of 0 disables inactivity probes.","type":"integer","format":"int64","example":0},"is-connected":{"description":"","type":"boolean","example":true},"target":{"description":"Uri telling bridge how to connect to controller","type":"string","example":"Some target"}},"xml":{"name":"controller-entry","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_bridge-external-ids":{"title":"network-topology_network-topology_topology_node_bridge-external-ids","type":"object","description":"Key-value pairs for use by external frameworks that integrate\nwith Open vSwitch.\n\nexternal_ids : bridge-id: optional string\n\nA unique identifier of the bridge. On Citrix XenServer this\nwill commonly be the same as external_ids:xs-network-uuids.\n\nexternal_ids : xs-network-uuids: optional string\n\nSemicolon-delimited set of universally unique identifier(s)\nfor the network with which this bridge is associated on a\nCitrix XenServer host. The network identifiers are RFC 4122\nUUIDs as displayed by, e.g., xe network-list.","properties":{"bridge-external-id-value":{"description":"bridge-external-id value","type":"string","example":"Some bridge-external-id-value"},"bridge-external-id-key":{"description":"external-id name/key","type":"string","example":"Some bridge-external-id-key"}},"required":["bridge-external-id-value","bridge-external-id-key"],"xml":{"name":"bridge-external-ids","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_bridge-other-configs":{"title":"network-topology_network-topology_topology_node_bridge-other-configs","type":"object","description":"Key-value pairs for configuring rarely used features.\n\nother_config : hwaddr: optional string\nAn Ethernet address in the form xx:xx:xx:xx:xx:xx to set the\nhardware address of the local port and influence the datapath\nID.\n\nother_config : forward-bpdu: optional string\neither true or false. Option to allow forwarding of BPDU frames when NORMAL\naction is invoked. Frames with reserved Ethernet\naddresses (e.g. STP BPDU) will be forwarded when this option\nis enabled and the switch is not providing that functionality.\n\nother_config : mac-aging-time: optional string\ncontaining an integer, at least 1 The maximum number of seconds to retain a\nMAC learning entry for which no packets have been seen. The\ndefault is currently 300 seconds (5 minutes). The value, if\nspecified, is forced into a reasonable range, currently 15\n  to 3600 seconds.\n\nother_config : mac-table-size: optional string\ncontaining an integer, at least 1 The maximum number of MAC addresses to\nlearn. The default is currently 2048. The value, if\nspecified, is forced into a reasonable range, currently 10\nto 1,000,000.\n\nother_config : datapath-id: optional string\nExactly 16 hex digits to set the OpenFlow datapath ID to a\nspecific value. May not be all-zero.\n\nother_config : dp-desc: optional string\nHuman readable description of datapath. It it a maximum\n256 byte-long free-form string to describe the datapath for\ndebugging purposes.\n\nother_config : disable-in-band: optional string\neither true or false\nIf set to true, disable in-band control on the bridge\nregardless of controller and manager settings.\n\nother_config : in-band-queue: optional string\ncontaining an integer, in range 0 to 4,294,967,295 A queue ID as a\nnonnegative integer.\n\nother_config : stp-system-id: optional string\nThe bridge's STP identifier (the lower 48 bits of the\nbridge-id) in the form xx:xx:xx:xx:xx:xx. By default, the\nidentifier is the MAC address of the bridge.\n\nother_config : stp-priority: optional string\ncontaining an integer, in range 0 to 65,535 The bridge's relative priority\nvalue for determining the root bridge (the upper 16 bits of\nthe bridgeid).  A bridge with the lowest bridge-id is elected\nthe root. By default, the priority is 0x8000.\n\nother_config : stp-hello-time: optional string\ncontaining an integer, in range 1 to 10 The interval between transmissions\nof hello messages by designated ports, in seconds. By default\nthe hello interval is 2 seconds.\n\nother_config : stp-max-age: optional string\ncontaining an integer, in range 6 to 40 The maximum age of the information\ntransmitted by the bridge when it is the root bridge, in\nseconds.  By default, the maximum age is 20 seconds.\n\nother_config : stp-forward-delay: optional string\ncontaining an integer, in range 4 to 30 The delay to wait between\ntransitioning root and designated ports to forwarding, in\nseconds. By default, the forwarding delay is 15 seconds.\n\nother_config : mcast-snooping-aging-time: optional string,\ncontaining an integer, at least 1 The maximum number of\nseconds to retain a multicast snooping entry for which no\npackets have been seen. The default is currently 300\nseconds (5 minutes). The value, if specified, is forced into\na reasonable range, currently 15 to 3600 seconds.\n\nother_config : mcast-snooping-table-size: optional string,\ncontaining an integer, at least 1 The maximum number of\nmulticast snooping addresses to learn. The default is\ncurrently 2048.  The value, if specified, is forced into a\nreasonable range, currently 10 to 1,000,000.\n\nother_config : mcast-snooping-disable-flood-unregistered:\noptional string, either true or false If set to false,\nunregistered multicast packets are forwarded to all ports.\nIf set to true, unregistered multicast packets are forwarded\nto ports connected to multicast routers.","properties":{"bridge-other-config-value":{"description":"bridge-other-config value","type":"string","example":"Some bridge-other-config-value"},"bridge-other-config-key":{"description":"bridge-other-config name/key","type":"string","example":"Some bridge-other-config-key"}},"xml":{"name":"bridge-other-configs","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_management-ips":{"title":"network-topology_network-topology_topology_node_management-ips","type":"object","properties":{"management-ips-key":{"description":"Management IP address of the switch","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"management-ips","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_tunnel-ips":{"title":"network-topology_network-topology_topology_node_tunnel-ips","type":"object","properties":{"tunnel-ips-key":{"description":"Management IP address of the switch","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"tunnel-ips","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_tunnels":{"title":"network-topology_network-topology_topology_node_tunnels","type":"object","properties":{"bfd-remote-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-remote-configs"},"description":"Remote configuration attributes for BFD"},"local-locator-ref":{"description":"Reference to the physical locator to reach this entry","type":"string"},"bfd-params":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-params"},"description":"Parameters to configure and enable BFD"},"tunnel-uuid":{"description":"The unique identifier of the tunnel","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"bfd-local-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_tunnels_bfd-local-configs"},"description":"Local configuation attributes for BFD"},"remote-locator-ref":{"description":"Reference to the physical locator to reach this entry","type":"string"}},"xml":{"name":"tunnels","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_tunnels_bfd-local-configs":{"title":"network-topology_network-topology_topology_node_tunnels_bfd-local-configs","type":"object","description":"Local configuation attributes for BFD","properties":{"bfd-local-config-key":{"description":"bfd-local-config name/key","type":"string","example":"Some bfd-local-config-key"},"bfd-local-config-value":{"description":"bfd-local-config value","type":"string","example":"Some bfd-local-config-value"}},"xml":{"name":"bfd-local-configs","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_tunnels_bfd-remote-configs":{"title":"network-topology_network-topology_topology_node_tunnels_bfd-remote-configs","type":"object","description":"Remote configuration attributes for BFD","properties":{"bfd-remote-config-value":{"description":"bfd-remote-config value","type":"string","example":"Some bfd-remote-config-value"},"bfd-remote-config-key":{"description":"bfd-remote-config name/key","type":"string","example":"Some bfd-remote-config-key"}},"xml":{"name":"bfd-remote-configs","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_tunnels_bfd-params":{"title":"network-topology_network-topology_topology_node_tunnels_bfd-params","type":"object","description":"Parameters to configure and enable BFD","properties":{"bfd-param-value":{"description":"bfd-param value","type":"string","example":"Some bfd-param-value"},"bfd-param-key":{"description":"bfd-param name/key","type":"string","example":"Some bfd-param-key"}},"xml":{"name":"bfd-params","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_tunnels_bfd-status":{"title":"network-topology_network-topology_topology_node_tunnels_bfd-status","type":"object","description":"runtime status of BFD on this tunnel","properties":{"bfd-status-key":{"description":"bfd-status name/key","type":"string","example":"Some bfd-status-key"},"bfd-status-value":{"description":"bfd-status value","type":"string","example":"Some bfd-status-value"}},"xml":{"name":"bfd-status","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_switch-fault-status":{"title":"network-topology_network-topology_topology_node_switch-fault-status","type":"object","properties":{"switch-fault-status-value":{"description":"switch-fault-status value","type":"string","example":"Some switch-fault-status-value"},"switch-fault-status-key":{"description":"switch-fault-status name/key","type":"string","example":"Some switch-fault-status-key"}},"xml":{"name":"switch-fault-status","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_igp-node-attributes":{"title":"network-topology_network-topology_topology_node_igp-node-attributes","type":"object","properties":{"isis-topology:isis-node-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes"},"flag":{"type":"array","items":{"type":"string","enum":["flag-identity","undefined-flag"],"example":"flag-identity"},"description":"Node operational flags"},"router-id":{"type":"array","items":{"type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"description":"Router-id for the node"},"prefix":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix"},"description":""},"name":{"description":"Node name","type":"string","example":".","minLength":1,"maxLength":253},"ospf-topology:ospf-node-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes"}},"xml":{"name":"igp-node-attributes","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology"}},"network-topology_network-topology_topology_node_igp-node-attributes_prefix":{"title":"network-topology_network-topology_topology_node_igp-node-attributes_prefix","type":"object","properties":{"flag":{"type":"array","items":{"type":"string","enum":["flag-identity","undefined-flag"],"example":"flag-identity"},"description":""},"metric":{"description":"","type":"integer","format":"int64","example":0},"prefix":{"description":"","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ospf-topology:ospf-prefix-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_prefix_ospf-prefix-attributes"}},"xml":{"name":"prefix","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology"}},"network-topology_network-topology_topology_node_igp-node-attributes_prefix_ospf-prefix-attributes":{"title":"network-topology_network-topology_topology_node_igp-node-attributes_prefix_ospf-prefix-attributes","type":"object","properties":{"forwarding-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"ospf-prefix-attributes","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes":{"title":"network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes","type":"object","properties":{"ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted"},"abr":{"description":"","type":"object"},"capabilities":{"description":"OSPF capabilities as bit vector. RFC 4970","type":"string","enum":["graceful-restart-capable","graceful-restart-helper","stub-router-support","traffic-engineering-support","point-to-point-over-lan","experimental-te"],"minItems":0,"default":"graceful-restart-capable experimental-te","uniqueItems":true},"multi-topology-id":{"type":"array","maxItems":128,"items":{"type":"integer","format":"int32","example":0},"description":"List of Multi-Topology Identifier up-to 128 (0-127). RFC 4915"},"dr-interface-id":{"description":"For pseudonodes, DR interface-id","type":"string","default":"0"}},"xml":{"name":"ospf-node-attributes","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted":{"title":"network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted","type":"object","properties":{"te-router-id-ipv6":{"description":"Globally unique IPv6 Traffic Engineering Router ID","type":"string","example":":","minLength":0,"maxLength":2147483647},"ipv4-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv4-local-address"},"description":"List of IPv4 Local Address(OSPF). RFC 5786"},"ipv6-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv6-local-address"},"description":"List of IPv6 Local Address."},"te-router-id-ipv4":{"description":"Globally unique IPv4 Traffic Engineering Router ID.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"pcc-capabilities":{"description":"OSPF/ISIS PCC capabilities","type":"string","enum":["path-computation-with-gmpls-link-constraints","bidirectional-path-computation","diverse-path-computation","load-balanced-path-computation","synchronized-path-computation","support-for-multiple-objective-functions","support-for-additive-path-constraints","support-for-request-prioritization","support-for-multiple-requests-per-message"],"minItems":0,"default":"path-computation-with-gmpls-link-constraints support-for-multiple-requests-per-message","uniqueItems":true}},"xml":{"name":"ted","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv4-local-address":{"title":"network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv4-local-address","type":"object","description":"List of IPv4 Local Address(OSPF). RFC 5786","properties":{"ipv4-prefix":{"description":"Local IPv4 address for the node","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"xml":{"name":"ipv4-local-address","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv6-local-address":{"title":"network-topology_network-topology_topology_node_igp-node-attributes_ospf-node-attributes_ted_ipv6-local-address","type":"object","description":"List of IPv6 Local Address.","properties":{"prefix-option":{"description":"IPv6 prefix option.","type":"integer","format":"int32","example":0},"ipv6-prefix":{"description":"Local IPv6 address for the node","type":"string","example":":/0","minLength":0,"maxLength":2147483647}},"xml":{"name":"ipv6-local-address","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes":{"title":"network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes","type":"object","properties":{"ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted"},"level-2":{"description":"","type":"object"},"iso":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_iso"},"multi-topology-id":{"type":"array","maxItems":128,"items":{"type":"integer","format":"int32","example":0},"description":"List of Multi Topology Identifier upto 128 (0-127). RFC 4915"},"net":{"type":"array","maxItems":3,"items":{"type":"string","example":"00.0000.0000.0000.0000.0000.0000","minLength":0,"maxLength":2147483647},"description":""}},"xml":{"name":"isis-node-attributes","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_iso":{"title":"network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_iso","type":"object","properties":{"iso-pseudonode-id":{"description":"","type":"string","default":"00","example":"00","minLength":0,"maxLength":2147483647},"iso-system-id":{"description":"","type":"string","example":"0000.0000.0000","minLength":0,"maxLength":2147483647}},"xml":{"name":"iso","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted":{"title":"network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted","type":"object","properties":{"te-router-id-ipv6":{"description":"Globally unique IPv6 Traffic Engineering Router ID","type":"string","example":":","minLength":0,"maxLength":2147483647},"ipv4-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv4-local-address"},"description":"List of IPv4 Local Address(OSPF). RFC 5786"},"ipv6-local-address":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv6-local-address"},"description":"List of IPv6 Local Address."},"te-router-id-ipv4":{"description":"Globally unique IPv4 Traffic Engineering Router ID.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"pcc-capabilities":{"description":"OSPF/ISIS PCC capabilities","type":"string","enum":["path-computation-with-gmpls-link-constraints","bidirectional-path-computation","diverse-path-computation","load-balanced-path-computation","synchronized-path-computation","support-for-multiple-objective-functions","support-for-additive-path-constraints","support-for-request-prioritization","support-for-multiple-requests-per-message"],"minItems":0,"default":"path-computation-with-gmpls-link-constraints support-for-multiple-requests-per-message","uniqueItems":true}},"xml":{"name":"ted","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv4-local-address":{"title":"network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv4-local-address","type":"object","description":"List of IPv4 Local Address(OSPF). RFC 5786","properties":{"ipv4-prefix":{"description":"Local IPv4 address for the node","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"xml":{"name":"ipv4-local-address","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv6-local-address":{"title":"network-topology_network-topology_topology_node_igp-node-attributes_isis-node-attributes_ted_ipv6-local-address","type":"object","description":"List of IPv6 Local Address.","properties":{"prefix-option":{"description":"IPv6 prefix option.","type":"integer","format":"int32","example":0},"ipv6-prefix":{"description":"Local IPv6 address for the node","type":"string","example":":/0","minLength":0,"maxLength":2147483647}},"xml":{"name":"ipv6-local-address","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_node_connection-info":{"title":"network-topology_network-topology_topology_node_connection-info","type":"object","properties":{"local-port":{"description":"Ovsdb Connection Local Port Number IP","type":"integer","format":"int32","example":0},"local-ip":{"description":"Ovsdb Connection Local IP","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"remote-port":{"description":"Ovsdb Connection Remote Port Number","type":"integer","format":"int32","example":0},"remote-ip":{"description":"Ovsdb Connection Remote IP","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"connection-info","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_managed-node-entry":{"title":"network-topology_network-topology_topology_node_managed-node-entry","type":"object","properties":{"bridge-ref":{"description":"","type":"string"}},"xml":{"name":"managed-node-entry","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_datapath-type-entry":{"title":"network-topology_network-topology_topology_node_datapath-type-entry","type":"object","properties":{"datapath-type":{"description":"Datapath types supported by OVSDB node","type":"string","enum":["datapath-type-base","datapath-type-system","datapath-type-netdev"],"example":"datapath-type-base"}},"xml":{"name":"datapath-type-entry","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_interface-type-entry":{"title":"network-topology_network-topology_topology_node_interface-type-entry","type":"object","properties":{"interface-type":{"description":"Interface types supported by OVSDB node","type":"string","enum":["interface-type-base","interface-type-patch","interface-type-dpdkvhostuserclient","interface-type-tap","interface-type-gre64","interface-type-dpdkr","interface-type-stt","interface-type-dpdk","interface-type-internal","interface-type-ipsec-gre64","interface-type-ipsec-gre","interface-type-system","interface-type-vxlan-gpe","interface-type-dpdkvhost","interface-type-geneve","interface-type-dpdkvhostuser","interface-type-lisp","interface-type-vxlan","interface-type-gre"],"example":"interface-type-base"}},"xml":{"name":"interface-type-entry","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_openvswitch-external-ids":{"title":"network-topology_network-topology_topology_node_openvswitch-external-ids","type":"object","description":"Key-value pairs for use by external frameworks that integrate\nwith Open vSwitch.\n\nexternal_ids : system-id: optional string\nA unique identifier for the Open vSwitch's physical host.\nThe form of the identifier depends on the type of the host.\nOn a Citrix XenServer, this will likely be the same as\nexternal_ids:xs-system-uuid.\n\nexternal_ids : xs-system-uuid: optional string\nThe Citrix XenServer universally unique identifier for the\nphysical host as displayed by xe-host-list.","properties":{"external-id-key":{"description":"external-id name/key","type":"string","example":"Some external-id-key"},"external-id-value":{"description":"external-id value","type":"string","example":"Some external-id-value"}},"required":["external-id-key","external-id-value"],"xml":{"name":"openvswitch-external-ids","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_openvswitch-other-configs":{"title":"network-topology_network-topology_topology_node_openvswitch-other-configs","type":"object","description":"Key-value pairs for configuring rarely used features.\n\nother_config : stats-update-interval: optional string\nThis option will affect the update of the statistics column\nin the following tables: Port, Interface , Mirror.\n\nother_config : flow-restore-wait: optional string\neither true or false When ovs-vswitchd starts up, it has an empty flow\ntable and therefore it handles all arriving packets in its\ndefault fashion according to its configuration, by\ndropping them or sending them to an OpenFlow controller or\nswitching them as a standalone switch.\n\nother_config : flow-limit: optional string\ncontaining an integer, at least 0. The maximum number of flows allowed in\nthe datapath flow table.\n\nother_config : n-dpdk-rxqs: optional string\ncontaining an integer, at least 1 Specifies the number of rx queues to be\ncreated for each dpdk interface. If not specified or\nspecified to 0, one rx queue will be created for each dpdk\ninterface by default.\n\nother_config : pmd-cpu-mask: optional string\nSpecifies CPU mask for setting the cpu affinity of\nPMD (Poll Mode Driver) threads. Value should be in the form\nof hex string, similar to the dpdk EAL '-c COREMASK' option\ninput or the 'taskset' mask input.\n\nother_config : n-handler-threads: optional string\ncontaining an integer, at least 1 Specifies the number of threads for\nsoftware datapaths to use for handling new flows. The default\nthe number of online CPU cores minus the number of\nrevalidators.\n\nother_config : n-revalidator-threads: optional string,\ncontaining an integer, at least 1 Specifies the number of\nthreads for software datapaths to use for revalidating flows\nin the datapath.\n\nother_config : enable-statistics: optional string\neither ture or false. Set this value to true to enable populating the\nstatistics column or to false to explicitly disable it.","properties":{"other-config-key":{"description":"other-config name/key","type":"string","example":"Some other-config-key"},"other-config-value":{"description":"other-config value","type":"string","example":"Some other-config-value"}},"xml":{"name":"openvswitch-other-configs","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_manager-entry":{"title":"network-topology_network-topology_topology_node_manager-entry","type":"object","description":"Node managers info","properties":{"connected":{"description":"","type":"boolean","example":true},"number_of_connections":{"description":"","type":"integer","format":"int64","example":0},"target":{"description":"Uri that user set to connect to the controller","type":"string","example":"Some target"}},"xml":{"name":"manager-entry","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_qos-entries":{"title":"network-topology_network-topology_topology_node_qos-entries","type":"object","properties":{"qos-type":{"description":"","type":"string","enum":["qos-type-base","qos-type-linux-fq-codel","qos-type-linux-codel","qos-type-egress-policer","qos-type-linux-htb","qos-type-linux-hfsc","qos-type-linux-sfq"],"example":"qos-type-base"},"qos-uuid":{"description":"The unique identifier of the QoS.","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"qos-id":{"description":"An identifier used for QoS entries in the MD-SAL.","type":"string","example":"Some qos-id"},"qos-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_qos-external-ids"},"description":""},"qos-other-config":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_qos-other-config"},"description":"\nother_config : max-rate\noptional string, containing an integer."},"queue-list":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_qos-entries_queue-list"},"description":"The list of queues used by the QoS"}},"xml":{"name":"qos-entries","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_qos-entries_queue-list":{"title":"network-topology_network-topology_topology_node_qos-entries_queue-list","type":"object","description":"The list of queues used by the QoS","properties":{"queue-ref":{"description":"Instance identifier to a Queue in the MD-SAL.","type":"string"},"queue-number":{"description":"The queue number of the record in the QoS entry","type":"integer","format":"int64","example":0}},"xml":{"name":"queue-list","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_qos-entries_qos-external-ids":{"title":"network-topology_network-topology_topology_node_qos-entries_qos-external-ids","type":"object","properties":{"qos-external-id-key":{"description":"qos external-id name/key","type":"string","example":"Some qos-external-id-key"},"qos-external-id-value":{"description":"qos-external-id value","type":"string","example":"Some qos-external-id-value"}},"required":["qos-external-id-key","qos-external-id-value"],"xml":{"name":"qos-external-ids","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_qos-entries_qos-other-config":{"title":"network-topology_network-topology_topology_node_qos-entries_qos-other-config","type":"object","description":"\nother_config : max-rate\noptional string, containing an integer.","properties":{"other-config-key":{"description":"qos-other-config name/key","type":"string","example":"Some other-config-key"},"other-config-value":{"description":"qos-other-config value","type":"string","example":"Some other-config-value"}},"xml":{"name":"qos-other-config","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_queues":{"title":"network-topology_network-topology_topology_node_queues","type":"object","properties":{"queue-id":{"description":"An identifier used for Queue entries in the MD-SAL.","type":"string","example":"Some queue-id"},"dscp":{"description":"","type":"integer","format":"int32","example":0},"queue-uuid":{"description":"The unique identifier of the queue.","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"queues-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues_queues-external-ids"},"description":""},"queues-other-config":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_queues_queues-other-config"},"description":"\nConfiguration for linux-htb QoS:\n\nother_config : min-rate optional string\ncontaining an integer, at least 1.\nMinimum guaranteed bandwidth, in bit/s.\n\nother_config : max-rate optional string\ncontaining an integer, at least 1.\nMaximum allowed bandwidth, in bit/s. Optional. If specified, the queue's rate will not be allowed\nto exceed the specified value, even if excess bandwidth is available. If unspecified, defaults to no\nlimit.\n\nother_config : burst optional string\ncontaining an integer, at least 1.\nBurst size, in bits. This is the maximum amount of ''credits'' that a queue can accumulate while it\nis idle. Optional. Details of the linux-htb implementation require a minimum burst size, so a\ntoo-small burst will be silently ignored.\n\nother_config : priority optional string.\ncontaining an integer, in range 0 to 4,294,967,295.\nA queue with a smaller priority will receive all the excess bandwidth that it can use before a\nqueue with a larger value receives any. Specific priority values are unimportant; only relative\nordering matters. Defaults to 0 if unspecified.\n\nConfiguration for linux-htb QoS:\n\nother_config : min-rate optional string\ncontaining an integer, at least 1.\nMinimum guaranteed bandwidth, in bit/s.\n\nother_config : max-rate optional string\ncontaining an integer, at least 1.\nMaximum allowed bandwidth, in bit/s. Optional. If specified, the queue's rate will not be allowed\nto exceed the specified value, even if excess bandwidth is available. If unspecified, defaults to no\nlimit.."}},"xml":{"name":"queues","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_queues_queues-external-ids":{"title":"network-topology_network-topology_topology_node_queues_queues-external-ids","type":"object","properties":{"queues-external-id-key":{"description":"queues external-id name/key","type":"string","example":"Some queues-external-id-key"},"queues-external-id-value":{"description":"queues-external-id value","type":"string","example":"Some queues-external-id-value"}},"required":["queues-external-id-key","queues-external-id-value"],"xml":{"name":"queues-external-ids","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_queues_queues-other-config":{"title":"network-topology_network-topology_topology_node_queues_queues-other-config","type":"object","description":"\nConfiguration for linux-htb QoS:\n\nother_config : min-rate optional string\ncontaining an integer, at least 1.\nMinimum guaranteed bandwidth, in bit/s.\n\nother_config : max-rate optional string\ncontaining an integer, at least 1.\nMaximum allowed bandwidth, in bit/s. Optional. If specified, the queue's rate will not be allowed\nto exceed the specified value, even if excess bandwidth is available. If unspecified, defaults to no\nlimit.\n\nother_config : burst optional string\ncontaining an integer, at least 1.\nBurst size, in bits. This is the maximum amount of ''credits'' that a queue can accumulate while it\nis idle. Optional. Details of the linux-htb implementation require a minimum burst size, so a\ntoo-small burst will be silently ignored.\n\nother_config : priority optional string.\ncontaining an integer, in range 0 to 4,294,967,295.\nA queue with a smaller priority will receive all the excess bandwidth that it can use before a\nqueue with a larger value receives any. Specific priority values are unimportant; only relative\nordering matters. Defaults to 0 if unspecified.\n\nConfiguration for linux-htb QoS:\n\nother_config : min-rate optional string\ncontaining an integer, at least 1.\nMinimum guaranteed bandwidth, in bit/s.\n\nother_config : max-rate optional string\ncontaining an integer, at least 1.\nMaximum allowed bandwidth, in bit/s. Optional. If specified, the queue's rate will not be allowed\nto exceed the specified value, even if excess bandwidth is available. If unspecified, defaults to no\nlimit..","properties":{"queue-other-config-value":{"description":"","type":"string","example":"Some queue-other-config-value"},"queue-other-config-key":{"description":"","type":"string","example":"Some queue-other-config-key"}},"xml":{"name":"queues-other-config","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_autoattach":{"title":"network-topology_network-topology_topology_node_autoattach","type":"object","properties":{"system-description":{"description":"The system_description string is exported in LLDP messages.\nIt should describe the type of software and hardware.","type":"string","example":"Some system-description"},"mappings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach_mappings"},"description":"Map  of integer-integer pairs, key in range 0 to 16,777,215,\nvalue in range 0 to 4,095. A mapping from SPB network Individual Service\nIdentifier  (ISID) to VLAN id."},"autoattach-id":{"description":"An identifier used for AutoAttach table in the MD-SAL.","type":"string","example":"Some autoattach-id"},"system-name":{"description":"The  system_name string is exported in LLDP messages.\nIt should uniquely identify the bridge in the network.","type":"string","example":"Some system-name"},"autoattach-external-ids":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_autoattach_autoattach-external-ids"},"description":"Key-value pairs for use by external frameworks that integrate with\nOpen vSwitch, rather than by Open vSwitch itself."},"bridge-id":{"description":"Node-id of the Bridge table from where Autoattach table can be referenced.","type":"string","example":"Some bridge-id"},"autoattach-uuid":{"description":"The unique identifier of the autoattach table.","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647}},"xml":{"name":"autoattach","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_autoattach_mappings":{"title":"network-topology_network-topology_topology_node_autoattach_mappings","type":"object","description":"Map  of integer-integer pairs, key in range 0 to 16,777,215,\nvalue in range 0 to 4,095. A mapping from SPB network Individual Service\nIdentifier  (ISID) to VLAN id.","properties":{"mappings-key":{"description":"","type":"integer","format":"int64","example":0},"mappings-value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"mappings","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_autoattach_autoattach-external-ids":{"title":"network-topology_network-topology_topology_node_autoattach_autoattach-external-ids","type":"object","description":"Key-value pairs for use by external frameworks that integrate with\nOpen vSwitch, rather than by Open vSwitch itself.","properties":{"autoattach-external-id-key":{"description":"external-id name/key","type":"string","example":"Some autoattach-external-id-key"},"autoattach-external-id-value":{"description":"autoattach-external-id value","type":"string","example":"Some autoattach-external-id-value"}},"required":["autoattach-external-id-key","autoattach-external-id-value"],"xml":{"name":"autoattach-external-ids","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb"}},"network-topology_network-topology_topology_node_segments":{"title":"network-topology_network-topology_topology_node_segments","type":"object","properties":{"adjacency":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_segments_adjacency"},"segment-id":{"description":"","type":"integer","format":"int64","example":0}},"required":["adjacency","segment-id"],"xml":{"name":"segments","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr"}},"network-topology_network-topology_topology_node_segments_adjacency":{"title":"network-topology_network-topology_topology_node_segments_adjacency","type":"object","properties":{"adjacency":{"description":"","type":"string","example":"Some adjacency"}},"required":["adjacency"],"xml":{"name":"adjacency","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr"}},"network-topology_network-topology_topology_node_configured-lsp":{"title":"network-topology_network-topology_topology_node_configured-lsp","type":"object","description":"List of Configured LSP per PCC","properties":{"intended-path":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path"},"name":{"description":"","type":"string","example":"Some name"}},"required":["name"],"xml":{"name":"configured-lsp","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server"}},"network-topology_network-topology_topology_node_configured-lsp_intended-path":{"title":"network-topology_network-topology_topology_node_configured-lsp_intended-path","type":"object","description":"Intended Path constraints","properties":{"destination":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"source":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"constraints":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints"}},"xml":{"name":"intended-path","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server"}},"network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints":{"title":"network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints","type":"object","properties":{"loss":{"description":"Maximum loss for selected edges","type":"integer","format":"int64","example":0},"include-route":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_include-route"},"description":"Speficy routes which must be included in the computed path, i.e. IRO"},"delay":{"description":"Maximum end to end delay","type":"integer","format":"int64","example":0},"jitter":{"description":"Maximum delay variation for selected edges","type":"integer","format":"int64","example":0},"metric":{"description":"Maximum end to end IGP metric","type":"integer","format":"int64","example":0},"bandwidth":{"description":"Requested bandwidth for the computed path","type":"number","example":-92233720368547758.08},"te-metric":{"description":"Maximum end to end Traffic Engineering metric","type":"integer","format":"int64","example":0},"exclude-route":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_exclude-route"},"description":"Speficy routes which must be excluded in the computed path, i.e. XRO"},"class-type":{"description":"Class Type for bandwidth constraints","type":"integer","format":"int32","example":0},"admin-group":{"description":"Admin group to select edges","type":"integer","format":"int64","example":0},"address-family":{"description":"","type":"string","enum":["ipv4","ipv6","sr-ipv4","sr-ipv6"],"default":"ipv4","example":"ipv4"}},"xml":{"name":"constraints","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server"}},"network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_include-route":{"title":"network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_include-route","type":"object","description":"Speficy routes which must be included in the computed path, i.e. IRO","properties":{"ipv4":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv6":{"description":"","type":"string","example":":","minLength":0,"maxLength":2147483647}},"xml":{"name":"include-route","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server"}},"network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_exclude-route":{"title":"network-topology_network-topology_topology_node_configured-lsp_intended-path_constraints_exclude-route","type":"object","description":"Speficy routes which must be excluded in the computed path, i.e. XRO","properties":{"ipv4":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv6":{"description":"","type":"string","example":":","minLength":0,"maxLength":2147483647}},"xml":{"name":"exclude-route","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server"}},"network-topology_network-topology_topology_node_configured-lsp_computed-path":{"title":"network-topology_network-topology_topology_node_configured-lsp_computed-path","type":"object","properties":{"computation-status":{"description":"","type":"string","enum":["idle","in-progress","active","completed","failed","no-path","no-source","no-destination","equal-endpoints"],"example":"idle"},"computed-metric":{"description":"","type":"integer","format":"int64","example":0},"path-description":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_configured-lsp_computed-path_path-description"},"description":""}},"xml":{"name":"computed-path","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server"}},"network-topology_network-topology_topology_node_configured-lsp_computed-path_path-description":{"title":"network-topology_network-topology_topology_node_configured-lsp_computed-path_path-description","type":"object","properties":{"remote-ipv6":{"description":"Remote IPv6 address","type":"string","example":":","minLength":0,"maxLength":2147483647},"remote-ipv4":{"description":"Remote IPv4 address","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv4":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv6":{"description":"","type":"string","example":":","minLength":0,"maxLength":2147483647},"sid":{"description":"Segment Routing Identifier as an Index or MPLS label","type":"integer","format":"int64","example":0}},"xml":{"name":"path-description","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server"}},"network-topology_network-topology_topology_node_session-config":{"title":"network-topology_network-topology_topology_node_session-config","type":"object","properties":{"password":{"description":"RFC2385 shared secret","type":"string","example":"Some password","minLength":1,"maxLength":80},"odl-pcep-topology-sync-optimizations-config:speaker-entity-id-value":{"description":"","type":"string","format":"byte","xml":{"name":"speaker-entity-id-value","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"}}},"xml":{"name":"session-config","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client":{"title":"network-topology_network-topology_topology_node_path-computation-client","type":"object","description":"PCC-related run-time information. This container is only\npresent when the node is connected through PCEP in a PCC\nrole.","properties":{"ip-address":{"description":"IP address which the node used to connected to the PCE.\nThere are no guarantees as to reachability of the address,\nnor its relationship to other control, management, or\ndata plane addresses.","type":"string","example":"","minLength":0,"maxLength":2147483647},"reported-lsp":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp"},"description":""},"stateful-tlv":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_stateful-tlv"},"odl-pcep-sync-optimizations:lsp-db-version":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_lsp-db-version"},"state-sync":{"description":"","type":"string","enum":["initial-resync","incremental-sync","triggered-initial-sync","pcep-triggered-resync","synchronized"],"example":"initial-resync"},"pcep-server:configured-lsp":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp"},"description":"List of Configured LSP per PCC"}},"xml":{"name":"path-computation-client","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_stateful-tlv":{"title":"network-topology_network-topology_topology_node_path-computation-client_stateful-tlv","type":"object","properties":{"odl-pcep-ietf-stateful:stateful":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_stateful-tlv_stateful"}},"xml":{"name":"stateful-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_stateful-tlv_stateful":{"title":"network-topology_network-topology_topology_node_path-computation-client_stateful-tlv_stateful","type":"object","properties":{"odl-pcep-sync-optimizations:include-db-version":{"description":"","type":"boolean","default":false,"example":true,"xml":{"name":"include-db-version","namespace":"urn:opendaylight:params:xml:ns:yang:controller:pcep:sync:optimizations"}},"odl-pcep-ietf-initiated:initiation":{"description":"","type":"boolean","default":false,"example":true,"xml":{"name":"initiation","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:initiated"}},"odl-pcep-sync-optimizations:triggered-resync":{"description":"","type":"boolean","default":false,"example":true,"xml":{"name":"triggered-resync","namespace":"urn:opendaylight:params:xml:ns:yang:controller:pcep:sync:optimizations"}},"lsp-update-capability":{"description":"","type":"boolean","default":false,"example":true},"odl-pcep-sync-optimizations:triggered-initial-sync":{"description":"","type":"boolean","default":false,"example":true,"xml":{"name":"triggered-initial-sync","namespace":"urn:opendaylight:params:xml:ns:yang:controller:pcep:sync:optimizations"}},"odl-pcep-sync-optimizations:delta-lsp-sync-capability":{"description":"","type":"boolean","default":false,"example":true,"xml":{"name":"delta-lsp-sync-capability","namespace":"urn:opendaylight:params:xml:ns:yang:controller:pcep:sync:optimizations"}}},"xml":{"name":"stateful","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp","type":"object","properties":{"path":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path"},"description":""},"association-group":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_association-group"},"metadata":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_metadata"},"name":{"description":"","type":"string","example":"Some name"}},"xml":{"name":"reported-lsp","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path","type":"object","properties":{"odl-pcep-ietf-stateful:path-setup-type":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_path-setup-type"},"ero":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_ero"},"bandwidth":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_bandwidth"},"iro":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_iro"},"odl-pcep-ietf-stateful:lsp":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp"},"lspa":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa"},"lsp-id":{"description":"","type":"integer","format":"int64","example":0},"rro":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_rro"},"xro":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_xro"},"of":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of"},"metrics":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_metrics"},"description":""},"reoptimization-bandwidth":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_reoptimization-bandwidth"},"class-type":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_class-type"}},"required":["lsp-id","xro","of","class-type"],"xml":{"name":"path","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_ero":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_ero","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_ero_subobject"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"ero","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_ero_subobject":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_ero_subobject","type":"object","properties":{"loose":{"description":"","type":"boolean","example":true},"as-number":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_ero_subobject_as-number"}},"required":["loose","as-number"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_ero_subobject_as-number":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_ero_subobject_as-number","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0}},"required":["as-number"],"xml":{"name":"as-number","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_metrics":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_metrics","type":"object","properties":{"metric":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_metrics_metric"}},"required":["metric"],"xml":{"name":"metrics","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_metrics_metric":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_metrics_metric","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"computed":{"description":"","type":"boolean","default":false,"example":true},"metric-type":{"description":"","type":"integer","format":"int32","example":0},"bound":{"description":"","type":"boolean","default":false,"example":true},"ignore":{"description":"","type":"boolean","default":false,"example":true},"value":{"description":"","type":"string","format":"byte"}},"required":["metric-type"],"xml":{"name":"metric","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"tlvs":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa_tlvs"},"include-any":{"description":"","type":"integer","format":"int64","example":0},"label-recording-desired":{"description":"","type":"boolean","default":false,"example":true},"se-style-desired":{"description":"","type":"boolean","default":false,"example":true},"local-protection-desired":{"description":"","type":"boolean","default":false,"example":true},"session-name":{"description":"","type":"string","example":"Some session-name"},"include-all":{"description":"","type":"integer","format":"int64","example":0},"exclude-any":{"description":"","type":"integer","format":"int64","example":0},"ignore":{"description":"","type":"boolean","default":false,"example":true},"setup-priority":{"description":"","type":"string","default":"0"},"hold-priority":{"description":"","type":"string","default":"0"}},"xml":{"name":"lspa","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa_tlvs":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa_tlvs","type":"object","properties":{"vendor-information-tlv":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa_tlvs_vendor-information-tlv"},"description":"VENDOR-INFORMATION-TLV"}},"xml":{"name":"tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa_tlvs_vendor-information-tlv":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lspa_tlvs_vendor-information-tlv","type":"object","description":"VENDOR-INFORMATION-TLV","properties":{"enterprise-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"vendor-information-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"code":{"description":"","type":"integer","format":"int32","example":0},"tlvs":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of_tlvs"},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"required":["code"],"xml":{"name":"of","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of_tlvs":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of_tlvs","type":"object","properties":{"vendor-information-tlv":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of_tlvs_vendor-information-tlv"},"description":"VENDOR-INFORMATION-TLV"}},"xml":{"name":"tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of_tlvs_vendor-information-tlv":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_of_tlvs_vendor-information-tlv","type":"object","description":"VENDOR-INFORMATION-TLV","properties":{"enterprise-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"vendor-information-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_class-type":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_class-type","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"ignore":{"description":"","type":"boolean","default":false,"example":true},"class-type":{"description":"","type":"integer","format":"int32","example":1}},"required":["class-type"],"xml":{"name":"class-type","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_bandwidth":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_bandwidth","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"bandwidth":{"description":"","type":"string","format":"byte"},"ignore":{"description":"","type":"boolean","default":false,"example":true},"odl-pcep-auto-bandwidth:bw-sample":{"type":"array","items":{"type":"string","format":"byte"},"description":""}},"xml":{"name":"bandwidth","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_reoptimization-bandwidth":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_reoptimization-bandwidth","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"bandwidth":{"description":"","type":"string","format":"byte"},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"reoptimization-bandwidth","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_xro":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_xro","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_xro_subobject"},"description":""},"flags":{"description":"","type":"string","enum":["fail"],"minItems":0,"default":"fail fail","uniqueItems":true},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"required":["flags"],"xml":{"name":"xro","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_xro_subobject":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_xro_subobject","type":"object","properties":{"attribute":{"description":"","type":"string","enum":["interface","node","srlg"],"example":"interface"},"as-number":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_xro_subobject_as-number"},"mandatory":{"description":"","type":"boolean","default":false,"example":true}},"required":["attribute","as-number"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_xro_subobject_as-number":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_xro_subobject_as-number","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0}},"required":["as-number"],"xml":{"name":"as-number","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_iro":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_iro","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_iro_subobject"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"iro","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_iro_subobject":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_iro_subobject","type":"object","properties":{"loose":{"description":"","type":"boolean","example":true},"as-number":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_iro_subobject_as-number"}},"required":["loose","as-number"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_iro_subobject_as-number":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_iro_subobject_as-number","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0}},"required":["as-number"],"xml":{"name":"as-number","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_rro":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_rro","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_rro_subobject"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"rro","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_rro_subobject":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_rro_subobject","type":"object","properties":{"protection-available":{"description":"","type":"boolean","default":false,"example":true},"protection-in-use":{"description":"","type":"boolean","default":false,"example":true},"ip-prefix":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_rro_subobject_ip-prefix"}},"required":["ip-prefix"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_rro_subobject_ip-prefix":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_rro_subobject_ip-prefix","type":"object","properties":{"ip-prefix":{"description":"","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"required":["ip-prefix"],"xml":{"name":"ip-prefix","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_path-setup-type":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_path-setup-type","type":"object","properties":{"pst":{"description":"PST=0: Path is setup via RSVP-TE signaling protocol(default).","type":"string","enum":["rsvp-te","sr-mpls","pcecc","srv6","native-ip"],"default":"rsvp-te","example":"rsvp-te"}},"xml":{"name":"path-setup-type","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp","type":"object","properties":{"delegate":{"description":"","type":"boolean","default":false,"example":true},"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"plsp-id":{"description":"","type":"integer","format":"int64","example":0},"tlvs":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs"},"pce-allocation":{"description":"","type":"boolean","example":true},"administrative":{"description":"","type":"boolean","default":false,"example":true},"operational":{"description":"","type":"string","enum":["down","up","active","going-down","going-up"],"example":"down"},"ignore":{"description":"","type":"boolean","default":false,"example":true},"odl-pcep-ietf-initiated:create":{"description":"","type":"boolean","default":false,"example":true,"xml":{"name":"create","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:initiated"}},"sync":{"description":"","type":"boolean","default":false,"example":true},"remove":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"lsp","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs","type":"object","properties":{"lsp-error-code":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-error-code"},"symbolic-path-name":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_symbolic-path-name"},"sr-policy-lsp":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_sr-policy-lsp"},"odl-pcep-sync-optimizations:lsp-db-version":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-db-version"},"lsp-identifiers":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-identifiers"},"path-binding":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_path-binding"},"vendor-information-tlv":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_vendor-information-tlv"},"description":"VENDOR-INFORMATION-TLV"},"rsvp-error-spec":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_rsvp-error-spec"}},"xml":{"name":"tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_vendor-information-tlv":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_vendor-information-tlv","type":"object","description":"VENDOR-INFORMATION-TLV","properties":{"enterprise-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"vendor-information-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_sr-policy-lsp":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_sr-policy-lsp","type":"object","properties":{"computation-priority":{"description":"","type":"integer","format":"int32","example":0},"invalidation":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_sr-policy-lsp_invalidation"},"enl-policy":{"description":"","type":"string","enum":["ipv4-only","ipv6-only","both-ipv4-ipv6","no-enl"],"example":"ipv4-only"}},"xml":{"name":"sr-policy-lsp","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_sr-policy-lsp_invalidation":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_sr-policy-lsp_invalidation","type":"object","properties":{"oper-drop":{"description":"","type":"boolean","example":true},"config-drop":{"description":"","type":"boolean","example":true}},"xml":{"name":"invalidation","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_path-binding":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_path-binding","type":"object","properties":{"binding-type":{"description":"","type":"string","enum":["mpls-label","mpls-label-entry","srv6","srv6-behavior"],"example":"mpls-label"},"flags":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_path-binding_flags"},"mpls-label":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"path-binding","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_path-binding_flags":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_path-binding_flags","type":"object","properties":{"removal":{"description":"","type":"boolean","example":true},"specified":{"description":"","type":"boolean","example":true}},"xml":{"name":"flags","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-error-code":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-error-code","type":"object","properties":{"error-code":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"lsp-error-code","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_symbolic-path-name":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_symbolic-path-name","type":"object","properties":{"path-name":{"description":"","type":"string","format":"byte"}},"xml":{"name":"symbolic-path-name","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-identifiers":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-identifiers","type":"object","properties":{"lsp-id":{"description":"","type":"integer","format":"int64","example":0},"ipv4":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-identifiers_ipv4"},"tunnel-id":{"description":"","type":"integer","format":"int32","example":0}},"required":["ipv4"],"xml":{"name":"lsp-identifiers","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-identifiers_ipv4":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-identifiers_ipv4","type":"object","properties":{"ipv4-extended-tunnel-id":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647},"ipv4-tunnel-endpoint-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647},"ipv4-tunnel-sender-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"required":["ipv4-extended-tunnel-id","ipv4-tunnel-endpoint-address","ipv4-tunnel-sender-address"],"xml":{"name":"ipv4","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_rsvp-error-spec":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_rsvp-error-spec","type":"object","properties":{"rsvp-error":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_rsvp-error-spec_rsvp-error"}},"required":["rsvp-error"],"xml":{"name":"rsvp-error-spec","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_rsvp-error-spec_rsvp-error":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_rsvp-error-spec_rsvp-error","type":"object","properties":{"node":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647},"code":{"description":"","type":"integer","format":"int32","example":0},"flags":{"description":"","type":"string","enum":["not-guilty","in-place"],"minItems":0,"default":"not-guilty in-place","uniqueItems":true},"value":{"description":"","type":"integer","format":"int32","example":0}},"required":["node","code","value"],"xml":{"name":"rsvp-error","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-db-version":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_path_lsp_tlvs_lsp-db-version","type":"object","properties":{"lsp-db-version-value":{"description":"","type":"integer","example":0}},"xml":{"name":"lsp-db-version","namespace":"urn:opendaylight:params:xml:ns:yang:controller:pcep:sync:optimizations"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_metadata":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_metadata","type":"object","description":"Container for external metadata attached to the LSP. Contents of this container\nare not propagated onto the router itself, so it is persisted only while the LSP\nis present.","properties":{},"xml":{"name":"metadata","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_association-group":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_association-group","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"association-id":{"description":"","type":"integer","format":"int32","example":0},"association-tlvs":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_reported-lsp_association-group_association-tlvs"},"association-type":{"description":"","type":"string","enum":["path-protection","disjoint","policy","single-side-lsp","double-side-lsp","sr-policy","virtual-network-lsp"],"example":"path-protection"},"removal-flag":{"description":"","type":"boolean","example":true},"ignore":{"description":"","type":"boolean","default":false,"example":true},"association-source":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"association-group","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_association-group_association-tlvs":{"title":"network-topology_network-topology_topology_node_path-computation-client_reported-lsp_association-group_association-tlvs","type":"object","description":"Base Association TLVs definition","properties":{"global-association-source":{"description":"","type":"integer","format":"int64","example":0},"extended-association-id":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""},"protecting":{"description":"","type":"boolean","example":true},"secondary":{"description":"","type":"boolean","example":true},"protection-type":{"description":"","type":"string","enum":["unprotected","full-rerouting","rerouting-without-extra-traffic","protection-with-extra-traffic","unidirectional-protection","bidirectional-protection"],"example":"unprotected"}},"xml":{"name":"association-tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology_network-topology_topology_node_path-computation-client_lsp-db-version":{"title":"network-topology_network-topology_topology_node_path-computation-client_lsp-db-version","type":"object","properties":{"lsp-db-version-value":{"description":"","type":"integer","example":0}},"xml":{"name":"lsp-db-version","namespace":"urn:opendaylight:params:xml:ns:yang:controller:pcep:sync:optimizations"}},"network-topology_network-topology_topology_node_path-computation-client_configured-lsp":{"title":"network-topology_network-topology_topology_node_path-computation-client_configured-lsp","type":"object","description":"List of Configured LSP per PCC","properties":{"intended-path":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path"},"name":{"description":"","type":"string","example":"Some name"},"path-status":{"description":"Status of TE Path","type":"string","enum":["reported","configured","updated","sync","failed"],"default":"reported","example":"reported"},"computed-path":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_computed-path"}},"required":["name"],"xml":{"name":"configured-lsp","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server"}},"network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path":{"title":"network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path","type":"object","description":"Intended Path constraints","properties":{"destination":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"source":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"constraints":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints"}},"xml":{"name":"intended-path","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server"}},"network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints":{"title":"network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints","type":"object","properties":{"loss":{"description":"Maximum loss for selected edges","type":"integer","format":"int64","example":0},"include-route":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints_include-route"},"description":"Speficy routes which must be included in the computed path, i.e. IRO"},"delay":{"description":"Maximum end to end delay","type":"integer","format":"int64","example":0},"jitter":{"description":"Maximum delay variation for selected edges","type":"integer","format":"int64","example":0},"metric":{"description":"Maximum end to end IGP metric","type":"integer","format":"int64","example":0},"bandwidth":{"description":"Requested bandwidth for the computed path","type":"number","example":-92233720368547758.08},"te-metric":{"description":"Maximum end to end Traffic Engineering metric","type":"integer","format":"int64","example":0},"exclude-route":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints_exclude-route"},"description":"Speficy routes which must be excluded in the computed path, i.e. XRO"},"class-type":{"description":"Class Type for bandwidth constraints","type":"integer","format":"int32","example":0},"admin-group":{"description":"Admin group to select edges","type":"integer","format":"int64","example":0},"address-family":{"description":"","type":"string","enum":["ipv4","ipv6","sr-ipv4","sr-ipv6"],"default":"ipv4","example":"ipv4"}},"xml":{"name":"constraints","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server"}},"network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints_include-route":{"title":"network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints_include-route","type":"object","description":"Speficy routes which must be included in the computed path, i.e. IRO","properties":{"ipv4":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv6":{"description":"","type":"string","example":":","minLength":0,"maxLength":2147483647}},"xml":{"name":"include-route","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server"}},"network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints_exclude-route":{"title":"network-topology_network-topology_topology_node_path-computation-client_configured-lsp_intended-path_constraints_exclude-route","type":"object","description":"Speficy routes which must be excluded in the computed path, i.e. XRO","properties":{"ipv4":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv6":{"description":"","type":"string","example":":","minLength":0,"maxLength":2147483647}},"xml":{"name":"exclude-route","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server"}},"network-topology_network-topology_topology_node_path-computation-client_configured-lsp_computed-path":{"title":"network-topology_network-topology_topology_node_path-computation-client_configured-lsp_computed-path","type":"object","properties":{"computation-status":{"description":"","type":"string","enum":["idle","in-progress","active","completed","failed","no-path","no-source","no-destination","equal-endpoints"],"example":"idle"},"computed-metric":{"description":"","type":"integer","format":"int64","example":0},"path-description":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_path-computation-client_configured-lsp_computed-path_path-description"},"description":""}},"xml":{"name":"computed-path","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server"}},"network-topology_network-topology_topology_node_path-computation-client_configured-lsp_computed-path_path-description":{"title":"network-topology_network-topology_topology_node_path-computation-client_configured-lsp_computed-path_path-description","type":"object","properties":{"remote-ipv6":{"description":"Remote IPv6 address","type":"string","example":":","minLength":0,"maxLength":2147483647},"remote-ipv4":{"description":"Remote IPv4 address","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv4":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv6":{"description":"","type":"string","example":":","minLength":0,"maxLength":2147483647},"sid":{"description":"Segment Routing Identifier as an Index or MPLS label","type":"integer","format":"int64","example":0}},"xml":{"name":"path-description","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server"}},"network-topology_network-topology_topology_node_connection-info1":{"title":"network-topology_network-topology_topology_node_connection-info","type":"object","properties":{"local-port":{"description":"Hwvtep Connection Local Port Number IP","type":"integer","format":"int32","example":0},"local-ip":{"description":"Hwvtep Connection Local IP","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"remote-port":{"description":"Hwvtep Connection Remote Port Number","type":"integer","format":"int32","example":0},"remote-ip":{"description":"Hwvtep Connection Remote IP","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"connection-info","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_managers":{"title":"network-topology_network-topology_topology_node_managers","type":"object","description":"","properties":{"manager-other-configs":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_managers_manager-other-configs"},"description":"Key-value pairs for configuring rarely used features.\nother_config : dscp : optional string\ncontains an integer, in the range 0 - 63. DSCP value to be used when establishing a connection to the switch. Default value of 48 if none specified."},"manager-uuid":{"description":"The unique identifier of the manager","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"is-connected":{"description":"","type":"boolean","example":true},"target":{"description":"Uri indicating connection method to the Manager","type":"string","example":"Some target"}},"xml":{"name":"managers","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_managers_manager-other-configs":{"title":"network-topology_network-topology_topology_node_managers_manager-other-configs","type":"object","description":"Key-value pairs for configuring rarely used features.\nother_config : dscp : optional string\ncontains an integer, in the range 0 - 63. DSCP value to be used when establishing a connection to the switch. Default value of 48 if none specified.","properties":{"other-config-key":{"description":"other-config name/key","type":"string","example":"Some other-config-key"},"other-config-value":{"description":"other-config value","type":"string","example":"Some other-config-value"}},"xml":{"name":"manager-other-configs","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_switches":{"title":"network-topology_network-topology_topology_node_switches","type":"object","description":"List of physical switches managed by this node","properties":{"switch-ref":{"description":"","type":"string"}},"xml":{"name":"switches","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_logical-switches":{"title":"network-topology_network-topology_topology_node_logical-switches","type":"object","properties":{"tunnel-key":{"description":"Per Logical Switch tunnel key","type":"string","example":"Some tunnel-key"},"hwvtep-node-description":{"description":"The description of the node","type":"string","example":"Some hwvtep-node-description"},"hwvtep-node-name":{"description":"The name of the node","type":"string","example":"Some hwvtep-node-name"},"logical-switch-uuid":{"description":"A unique identifier of the logical switch","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"replication-mode":{"description":"Per Logical Switch replication mode","type":"string","example":"Some replication-mode"}},"xml":{"name":"logical-switches","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_local-ucast-macs":{"title":"network-topology_network-topology_topology_node_local-ucast-macs","type":"object","properties":{"mac-entry-uuid":{"description":"The unique identifier of the mac-entry","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"logical-switch-ref":{"description":"The logical switch to which this mapping applies","type":"string"},"mac-entry-key":{"description":"MAC address entry","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"locator-ref":{"description":"Reference to the physical locator to reach this entry","type":"string"},"ipaddr":{"description":"Optional IP address associated with the mac","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"local-ucast-macs","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_remote-ucast-macs":{"title":"network-topology_network-topology_topology_node_remote-ucast-macs","type":"object","properties":{"mac-entry-uuid":{"description":"The unique identifier of the mac-entry","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"logical-switch-ref":{"description":"The logical switch to which this mapping applies","type":"string"},"mac-entry-key":{"description":"MAC address entry","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"locator-ref":{"description":"Reference to the physical locator to reach this entry","type":"string"},"ipaddr":{"description":"Optional IP address associated with the mac","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"remote-ucast-macs","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_local-mcast-macs":{"title":"network-topology_network-topology_topology_node_local-mcast-macs","type":"object","properties":{"mac-entry-uuid":{"description":"The unique identifier of the mac-entry","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"logical-switch-ref":{"description":"The logical switch to which this mapping applies","type":"string"},"mac-entry-key":{"description":"MAC address entry","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"ipaddr":{"description":"Optional IP address associated with the mac","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"locator-set":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_local-mcast-macs_locator-set"},"description":""}},"xml":{"name":"local-mcast-macs","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_local-mcast-macs_locator-set":{"title":"network-topology_network-topology_topology_node_local-mcast-macs_locator-set","type":"object","properties":{"locator-ref":{"description":"","type":"string"}},"xml":{"name":"locator-set","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_remote-mcast-macs":{"title":"network-topology_network-topology_topology_node_remote-mcast-macs","type":"object","properties":{"mac-entry-uuid":{"description":"The unique identifier of the mac-entry","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"logical-switch-ref":{"description":"The logical switch to which this mapping applies","type":"string"},"mac-entry-key":{"description":"MAC address entry","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"ipaddr":{"description":"Optional IP address associated with the mac","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"locator-set":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_remote-mcast-macs_locator-set"},"description":""}},"xml":{"name":"remote-mcast-macs","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_remote-mcast-macs_locator-set":{"title":"network-topology_network-topology_topology_node_remote-mcast-macs_locator-set","type":"object","properties":{"locator-ref":{"description":"","type":"string"}},"xml":{"name":"locator-set","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_logical-routers":{"title":"network-topology_network-topology_topology_node_logical-routers","type":"object","properties":{"hwvtep-node-description":{"description":"The description of the node","type":"string","example":"Some hwvtep-node-description"},"hwvtep-node-name":{"description":"The name of the node","type":"string","example":"Some hwvtep-node-name"},"switch-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_switch-bindings"},"description":"A map of IPv4 or IPv6 address prefix in CIDR\nnotation to logical switch. Multiple prefixes\nmay map to the same switch. By writing a 32-bit\n(or 128-bit for v6) address with a /N prefix\nlength, both the router's interface address and the\nsubnet  prefix  can be configured. For example,\n192.68.1.1/24 creates a /24 subnet for the logical\nswitch  attached to the interface and assigns the\naddress 192.68.1.1 to the router interface."},"static-routes":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_static-routes"},"description":"map of string-string pairs. One or more static routes,\nmapping IP prefixes to next hop IP addresses."},"logical-router-uuid":{"description":"A unique identifier of the logical router","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"acl-bindings":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_logical-routers_acl-bindings"},"description":"map of string-ACL pairs. Maps ACLs to logical router\ninterfaces. The router interfaces are indicated\nusing IP address notation, and must be the same\ninterfaces created in the switch_binding column.\nFor example, an ACL could be associated with the\nlogical router interface with an address of\n192.68.1.1 as defined in the example above."}},"xml":{"name":"logical-routers","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_logical-routers_switch-bindings":{"title":"network-topology_network-topology_topology_node_logical-routers_switch-bindings","type":"object","description":"A map of IPv4 or IPv6 address prefix in CIDR\nnotation to logical switch. Multiple prefixes\nmay map to the same switch. By writing a 32-bit\n(or 128-bit for v6) address with a /N prefix\nlength, both the router's interface address and the\nsubnet  prefix  can be configured. For example,\n192.68.1.1/24 creates a /24 subnet for the logical\nswitch  attached to the interface and assigns the\naddress 192.68.1.1 to the router interface.","properties":{"logical-switch-ref":{"description":"reference to logical switch","type":"string"},"destination-address":{"description":"IPv4 or IPv6 address prefix in CIDR notation","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"xml":{"name":"switch-bindings","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_logical-routers_static-routes":{"title":"network-topology_network-topology_topology_node_logical-routers_static-routes","type":"object","description":"map of string-string pairs. One or more static routes,\nmapping IP prefixes to next hop IP addresses.","properties":{"nexthop-address":{"description":"IP address of next hop","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"destination-address":{"description":"IPv4 or IPv6 address prefix in CIDR notation","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"xml":{"name":"static-routes","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_logical-routers_acl-bindings":{"title":"network-topology_network-topology_topology_node_logical-routers_acl-bindings","type":"object","description":"map of string-ACL pairs. Maps ACLs to logical router\ninterfaces. The router interfaces are indicated\nusing IP address notation, and must be the same\ninterfaces created in the switch_binding column.\nFor example, an ACL could be associated with the\nlogical router interface with an address of\n192.68.1.1 as defined in the example above.","properties":{"acl-ref":{"description":"reference to ACL to be applied to this router","type":"string"},"router-interface":{"description":"IPv4 or IPv6 address prefix in CIDR notation","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"xml":{"name":"acl-bindings","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_local-arp-sources":{"title":"network-topology_network-topology_topology_node_local-arp-sources","type":"object","properties":{"encapsulation-type":{"description":"Encapsulation type used by this locator","type":"string","enum":["encapsulation-type-base","encapsulation-type-vxlan-over-ipv4"],"example":"encapsulation-type-base"},"dst-ip":{"description":"IP address of the locator","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"src-mac":{"description":"Source mac to be used by given tep","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"physical-locator-uuid":{"description":"The unique identifier of the physical-locator","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"arp-sources-uuid":{"description":"The unique identifier of the arp-source","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647}},"xml":{"name":"local-arp-sources","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_remote-arp-sources":{"title":"network-topology_network-topology_topology_node_remote-arp-sources","type":"object","properties":{"encapsulation-type":{"description":"Encapsulation type used by this locator","type":"string","enum":["encapsulation-type-base","encapsulation-type-vxlan-over-ipv4"],"example":"encapsulation-type-base"},"dst-ip":{"description":"IP address of the locator","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"src-mac":{"description":"Source mac to be used by given tep","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"physical-locator-uuid":{"description":"The unique identifier of the physical-locator","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"arp-sources-uuid":{"description":"The unique identifier of the arp-source","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647}},"xml":{"name":"remote-arp-sources","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_acls":{"title":"network-topology_network-topology_topology_node_acls","type":"object","properties":{"acl-uuid":{"description":"The unique identifier of the acl","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"acl-entries":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_acls_acl-entries"},"description":""},"acl-name":{"description":"Name of the ACL","type":"string","example":"Some acl-name"}},"xml":{"name":"acls","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_acls_acl-entries":{"title":"network-topology_network-topology_topology_node_acls_acl-entries","type":"object","properties":{"sequence":{"description":"integer. Sequence number for ACL entry","type":"integer","format":"int64","example":0},"acl-entry-uuid":{"description":"The unique identifier of the acl-entry","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647},"acl-entry-ref":{"description":"","type":"string"}},"xml":{"name":"acl-entries","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_acls_acl-entries_acle-fault-status":{"title":"network-topology_network-topology_topology_node_acls_acl-entries_acle-fault-status","type":"object","properties":{"acle-fault-status-value":{"description":"acle-fault-status value: can be empty/None","type":"string","example":"Some acle-fault-status-value"},"acle-fault-status-key":{"description":"acle-fault-status name/key","type":"string","example":"Some acle-fault-status-key"}},"xml":{"name":"acle-fault-status","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_acls_acl-fault-status":{"title":"network-topology_network-topology_topology_node_acls_acl-fault-status","type":"object","properties":{"acl-fault-status-key":{"description":"acl-fault-status name/key","type":"string","example":"Some acl-fault-status-key"},"acl-fault-status-value":{"description":"acl-fault-status value: can be empty/None","type":"string"}},"xml":{"name":"acl-fault-status","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_logical-binding-stats":{"title":"network-topology_network-topology_topology_node_logical-binding-stats","type":"object","properties":{"bytes-from-local":{"description":"integer","type":"integer","format":"int64","example":0},"bytes-to-local":{"description":"integer","type":"integer","format":"int64","example":0},"packets-from-local":{"description":"integer","type":"integer","format":"int64","example":0},"packets-to-local":{"description":"integer","type":"integer","format":"int64","example":0},"logical-binding-stats-uuid":{"description":"A unique identifier of the logical binding stats","type":"string","example":"00000000-0000-0000-0000-000000000000","minLength":0,"maxLength":2147483647}},"xml":{"name":"logical-binding-stats","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep"}},"network-topology_network-topology_topology_node_netconf-node":{"title":"network-topology_network-topology_topology_node_netconf-node","type":"object","properties":{"concurrent-rpc-limit":{"description":"Limit of concurrent messages that can be send before reply messages are received.\nIf value &lt;1 is provided, no limit will be enforced","type":"string","default":"0"},"min-backoff-millis":{"description":"Initial minimum timeout in milliseconds randomized with backoff-jitter to wait between connection\nattempts. Will be multiplied by backoff-multiplier with every additional attempt","type":"integer","format":"int32","default":2000,"example":0},"login-password":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_login-password"},"tcp-only":{"description":"","type":"boolean","default":false,"example":true},"max-connection-attempts":{"description":"Maximum number of connection retries. Non positive value or null is interpreted as infinity.","type":"string","default":"0"},"reconnect-on-changed-schema":{"description":"If true, the connector would auto disconnect/reconnect when schemas are changed in the\nremote device. The connector subscribes (right after connect) to base netconf notifications\nand listens for netconf-capability-change notification","type":"boolean","default":false,"example":true},"non-module-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_non-module-capabilities"},"yang-module-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_yang-module-capabilities"},"lock-datastore":{"description":"The operation allows the client to lock the entire configuration datastore\nsystem of a device.\nWARNING - With blocking the lock/unlock operations, the user is coming to operate\nin a manner which is not supported. Concurrent access to the data store may interfere\nwith data consistency.","type":"boolean","default":true,"example":true},"protocol":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_protocol"},"backoff-multiplier":{"description":"Multiplier for backoff timeout. The backoff will be multiplied by this value with every\nadditional attempt. Backoff-multiplier must be in the range (1, max).","type":"number","default":1.5,"example":1.0},"host":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"yang-library":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_yang-library"},"odl-hello-message-capabilities":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_odl-hello-message-capabilities"},"max-backoff-millis":{"description":"Maximum timeout in milliseconds randomized with backoff-jitter to wait between connection attempts.","type":"integer","format":"int64","default":1800000,"example":0},"keepalive-delay":{"description":"Netconf connector sends keepalive RPCs while the session is idle, this delay specifies\nthe delay between keepalive RPC in seconds.\nIf a value &lt;1 is provided, no keepalives will be sent","type":"integer","format":"int64","default":120,"example":0},"backoff-jitter":{"description":"Range of backoff randomization. The backoff will be multiplied by a random number in the range\n(1 - backoff-jitter, 1 + backoff-jitter). Backoff-jitter must be in the range (0, 0.5).","type":"string","default":0.1},"schemaless":{"description":"","type":"boolean","default":false,"example":true},"port":{"description":"","type":"integer","format":"int32","example":0},"connection-timeout-millis":{"description":"Specifies timeout in milliseconds after which connection must be established.","type":"integer","format":"int64","default":20000,"example":0},"default-request-timeout-millis":{"description":"Timeout for blocking operations within transactions.","type":"integer","format":"int64","default":60000,"example":0},"schema-cache-directory":{"description":"The destination schema repository for yang files relative to the cache directory.\nThis may be specified per netconf mount so that the loaded yang files are stored\nto a distinct directory to avoid potential conflict.","type":"string","default":"schema","example":"Some schema-cache-directory"},"actor-response-wait-time":{"description":"Time that slave actor will wait for response from master.","type":"integer","format":"int32","default":5,"example":1},"pass-through":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_pass-through"}},"xml":{"name":"netconf-node","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_login-password":{"title":"network-topology_network-topology_topology_node_netconf-node_login-password","type":"object","properties":{"password":{"description":"","type":"string","format":"byte"},"username":{"description":"","type":"string","example":"Some username"}},"xml":{"name":"login-password","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_clustered-connection-status":{"title":"network-topology_network-topology_topology_node_netconf-node_clustered-connection-status","type":"object","properties":{"node-status":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_clustered-connection-status_node-status"},"description":""},"netconf-master-node":{"description":"","type":"string","example":"Some netconf-master-node"}},"xml":{"name":"clustered-connection-status","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_clustered-connection-status_node-status":{"title":"network-topology_network-topology_topology_node_netconf-node_clustered-connection-status_node-status","type":"object","properties":{"node":{"description":"","type":"string","example":"Some node"},"status":{"description":"","type":"string","enum":["connected","unavailable","failed"],"example":"connected"}},"xml":{"name":"node-status","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_available-capabilities":{"title":"network-topology_network-topology_topology_node_netconf-node_available-capabilities","type":"object","properties":{"available-capability":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_available-capabilities_available-capability"},"description":""}},"xml":{"name":"available-capabilities","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_available-capabilities_available-capability":{"title":"network-topology_network-topology_topology_node_netconf-node_available-capabilities_available-capability","type":"object","properties":{"capability":{"description":"","type":"string","example":"Some capability"},"capability-origin":{"description":"","type":"string","enum":["user-defined","device-advertised"],"example":"user-defined"}},"xml":{"name":"available-capability","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_unavailable-capabilities":{"title":"network-topology_network-topology_topology_node_netconf-node_unavailable-capabilities","type":"object","properties":{"unavailable-capability":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_unavailable-capabilities_unavailable-capability"},"description":""}},"xml":{"name":"unavailable-capabilities","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_unavailable-capabilities_unavailable-capability":{"title":"network-topology_network-topology_topology_node_netconf-node_unavailable-capabilities_unavailable-capability","type":"object","properties":{"capability":{"description":"","type":"string","example":"Some capability"},"failure-reason":{"description":"","type":"string","enum":["missing-source","unable-to-resolve"],"example":"missing-source"}},"xml":{"name":"unavailable-capability","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_pass-through":{"title":"network-topology_network-topology_topology_node_netconf-node_pass-through","type":"object","description":"When the underlying node is connected, its NETCONF context\nis available verbatim under this container through the\nmount extension.","properties":{},"xml":{"name":"pass-through","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_negotiated-ssh-transport-parameters":{"title":"network-topology_network-topology_topology_node_netconf-node_negotiated-ssh-transport-parameters","type":"object","description":"Transport parameters negotiated during device connection process","properties":{"encryption-alg":{"description":"","type":"string","enum":["3des-cbc","blowfish-cbc","twofish256-cbc","twofish-cbc","twofish192-cbc","twofish128-cbc","aes256-cbc","aes192-cbc","aes128-cbc","serpent256-cbc","serpent192-cbc","serpent128-cbc","arcfour","idea-cbc","cast128-cbc","none","des-cbc","arcfour128","arcfour256","aes128-ctr","aes192-ctr","aes256-ctr","3des-ctr","blowfish-ctr","twofish128-ctr","twofish192-ctr","twofish256-ctr","serpent128-ctr","serpent192-ctr","serpent256-ctr","idea-ctr","cast128-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","chacha20-poly1305"],"example":"3des-cbc"},"host-key-alg":{"description":"","type":"string","enum":["ssh-dss","ssh-rsa","rsa-sha2-256","rsa-sha2-512","spki-sign-rsa","spki-sign-dss","pgp-sign-rsa","pgp-sign-dss","null","ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ecdsa-sha2-1.3.132.0.1","ecdsa-sha2-1.2.840.10045.3.1.1","ecdsa-sha2-1.3.132.0.33","ecdsa-sha2-1.3.132.0.26","ecdsa-sha2-1.3.132.0.27","ecdsa-sha2-1.3.132.0.16","ecdsa-sha2-1.3.132.0.36","ecdsa-sha2-1.3.132.0.37","ecdsa-sha2-1.3.132.0.38","x509v3-ssh-dss","x509v3-ssh-rsa","x509v3-rsa2048-sha256","x509v3-ecdsa-sha2-nistp256","x509v3-ecdsa-sha2-nistp384","x509v3-ecdsa-sha2-nistp521","x509v3-ecdsa-sha2-1.3.132.0.1","x509v3-ecdsa-sha2-1.2.840.10045.3.1.1","x509v3-ecdsa-sha2-1.3.132.0.33","x509v3-ecdsa-sha2-1.3.132.0.26","x509v3-ecdsa-sha2-1.3.132.0.27","x509v3-ecdsa-sha2-1.3.132.0.16","x509v3-ecdsa-sha2-1.3.132.0.36","x509v3-ecdsa-sha2-1.3.132.0.37","x509v3-ecdsa-sha2-1.3.132.0.38","ssh-ed25519","ssh-ed448"],"example":"ssh-dss"},"mac-alg":{"description":"","type":"string","enum":["hmac-sha1","hmac-sha1-96","hmac-md5","hmac-md5-96","none","AEAD_AES_128_GCM","AEAD_AES_256_GCM","hmac-sha2-256","hmac-sha2-512"],"example":"hmac-sha1"},"key-exchange-alg":{"description":"","type":"string","enum":["diffie-hellman-group-exchange-sha1","diffie-hellman-group-exchange-sha256","diffie-hellman-group1-sha1","diffie-hellman-group14-sha1","diffie-hellman-group14-sha256","diffie-hellman-group15-sha512","diffie-hellman-group16-sha512","diffie-hellman-group17-sha512","diffie-hellman-group18-sha512","ecdh-sha2-nistp256","ecdh-sha2-nistp384","ecdh-sha2-nistp521","ecdh-sha2-1.3.132.0.1","ecdh-sha2-1.2.840.10045.3.1.1","ecdh-sha2-1.3.132.0.33","ecdh-sha2-1.3.132.0.26","ecdh-sha2-1.3.132.0.27","ecdh-sha2-1.3.132.0.16","ecdh-sha2-1.3.132.0.36","ecdh-sha2-1.3.132.0.37","ecdh-sha2-1.3.132.0.38","ecmqv-sha2","gss-group1-sha1-nistp256","gss-group1-sha1-nistp384","gss-group1-sha1-nistp521","gss-group1-sha1-1.3.132.0.1","gss-group1-sha1-1.2.840.10045.3.1.1","gss-group1-sha1-1.3.132.0.33","gss-group1-sha1-1.3.132.0.26","gss-group1-sha1-1.3.132.0.27","gss-group1-sha1-1.3.132.0.16","gss-group1-sha1-1.3.132.0.36","gss-group1-sha1-1.3.132.0.37","gss-group1-sha1-1.3.132.0.38","gss-group14-sha1-nistp256","gss-group14-sha1-nistp384","gss-group14-sha1-nistp521","gss-group14-sha1-1.3.132.0.1","gss-group14-sha1-1.2.840.10045.3.1.1","gss-group14-sha1-1.3.132.0.33","gss-group14-sha1-1.3.132.0.26","gss-group14-sha1-1.3.132.0.27","gss-group14-sha1-1.3.132.0.16","gss-group14-sha1-1.3.132.0.36","gss-group14-sha1-1.3.132.0.37","gss-group14-sha1-1.3.132.0.38","gss-gex-sha1-nistp256","gss-gex-sha1-nistp384","gss-gex-sha1-nistp521","gss-gex-sha1-1.3.132.0.1","gss-gex-sha1-1.2.840.10045.3.1.1","gss-gex-sha1-1.3.132.0.33","gss-gex-sha1-1.3.132.0.26","gss-gex-sha1-1.3.132.0.27","gss-gex-sha1-1.3.132.0.16","gss-gex-sha1-1.3.132.0.36","gss-gex-sha1-1.3.132.0.37","gss-gex-sha1-1.3.132.0.38","gss-","rsa1024-sha1","rsa2048-sha256","ext-info-s","ext-info-c","gss-group14-sha256-nistp256","gss-group14-sha256-nistp384","gss-group14-sha256-nistp521","gss-group14-sha256-1.3.132.0.1","gss-group14-sha256-1.2.840.10045.3.1.1","gss-group14-sha256-1.3.132.0.33","gss-group14-sha256-1.3.132.0.26","gss-group14-sha256-1.3.132.0.27","gss-group14-sha256-1.3.132.0.16","gss-group14-sha256-1.3.132.0.36","gss-group14-sha256-1.3.132.0.37","gss-group14-sha256-1.3.132.0.38","gss-group15-sha512-nistp256","gss-group15-sha512-nistp384","gss-group15-sha512-nistp521","gss-group15-sha512-1.3.132.0.1","gss-group15-sha512-1.2.840.10045.3.1.1","gss-group15-sha512-1.3.132.0.33","gss-group15-sha512-1.3.132.0.26","gss-group15-sha512-1.3.132.0.27","gss-group15-sha512-1.3.132.0.16","gss-group15-sha512-1.3.132.0.36","gss-group15-sha512-1.3.132.0.37","gss-group15-sha512-1.3.132.0.38","gss-group16-sha512-nistp256","gss-group16-sha512-nistp384","gss-group16-sha512-nistp521","gss-group16-sha512-1.3.132.0.1","gss-group16-sha512-1.2.840.10045.3.1.1","gss-group16-sha512-1.3.132.0.33","gss-group16-sha512-1.3.132.0.26","gss-group16-sha512-1.3.132.0.27","gss-group16-sha512-1.3.132.0.16","gss-group16-sha512-1.3.132.0.36","gss-group16-sha512-1.3.132.0.37","gss-group16-sha512-1.3.132.0.38","gss-group17-sha512-nistp256","gss-group17-sha512-nistp384","gss-group17-sha512-nistp521","gss-group17-sha512-1.3.132.0.1","gss-group17-sha512-1.2.840.10045.3.1.1","gss-group17-sha512-1.3.132.0.33","gss-group17-sha512-1.3.132.0.26","gss-group17-sha512-1.3.132.0.27","gss-group17-sha512-1.3.132.0.16","gss-group17-sha512-1.3.132.0.36","gss-group17-sha512-1.3.132.0.37","gss-group17-sha512-1.3.132.0.38","gss-group18-sha512-nistp256","gss-group18-sha512-nistp384","gss-group18-sha512-nistp521","gss-group18-sha512-1.3.132.0.1","gss-group18-sha512-1.2.840.10045.3.1.1","gss-group18-sha512-1.3.132.0.33","gss-group18-sha512-1.3.132.0.26","gss-group18-sha512-1.3.132.0.27","gss-group18-sha512-1.3.132.0.16","gss-group18-sha512-1.3.132.0.36","gss-group18-sha512-1.3.132.0.37","gss-group18-sha512-1.3.132.0.38","gss-nistp256-sha256-nistp256","gss-nistp256-sha256-nistp384","gss-nistp256-sha256-nistp521","gss-nistp256-sha256-1.3.132.0.1","gss-nistp256-sha256-1.2.840.10045.3.1.1","gss-nistp256-sha256-1.3.132.0.33","gss-nistp256-sha256-1.3.132.0.26","gss-nistp256-sha256-1.3.132.0.27","gss-nistp256-sha256-1.3.132.0.16","gss-nistp256-sha256-1.3.132.0.36","gss-nistp256-sha256-1.3.132.0.37","gss-nistp256-sha256-1.3.132.0.38","gss-nistp384-sha384-nistp256","gss-nistp384-sha384-nistp384","gss-nistp384-sha384-nistp521","gss-nistp384-sha384-1.3.132.0.1","gss-nistp384-sha384-1.2.840.10045.3.1.1","gss-nistp384-sha384-1.3.132.0.33","gss-nistp384-sha384-1.3.132.0.26","gss-nistp384-sha384-1.3.132.0.27","gss-nistp384-sha384-1.3.132.0.16","gss-nistp384-sha384-1.3.132.0.36","gss-nistp384-sha384-1.3.132.0.37","gss-nistp384-sha384-1.3.132.0.38","gss-nistp521-sha512-nistp256","gss-nistp521-sha512-nistp384","gss-nistp521-sha512-nistp521","gss-nistp521-sha512-1.3.132.0.1","gss-nistp521-sha512-1.2.840.10045.3.1.1","gss-nistp521-sha512-1.3.132.0.33","gss-nistp521-sha512-1.3.132.0.26","gss-nistp521-sha512-1.3.132.0.27","gss-nistp521-sha512-1.3.132.0.16","gss-nistp521-sha512-1.3.132.0.36","gss-nistp521-sha512-1.3.132.0.37","gss-nistp521-sha512-1.3.132.0.38","gss-curve25519-sha256-nistp256","gss-curve25519-sha256-nistp384","gss-curve25519-sha256-nistp521","gss-curve25519-sha256-1.3.132.0.1","gss-curve25519-sha256-1.2.840.10045.3.1.1","gss-curve25519-sha256-1.3.132.0.33","gss-curve25519-sha256-1.3.132.0.26","gss-curve25519-sha256-1.3.132.0.27","gss-curve25519-sha256-1.3.132.0.16","gss-curve25519-sha256-1.3.132.0.36","gss-curve25519-sha256-1.3.132.0.37","gss-curve25519-sha256-1.3.132.0.38","gss-curve448-sha512-nistp256","gss-curve448-sha512-nistp384","gss-curve448-sha512-nistp521","gss-curve448-sha512-1.3.132.0.1","gss-curve448-sha512-1.2.840.10045.3.1.1","gss-curve448-sha512-1.3.132.0.33","gss-curve448-sha512-1.3.132.0.26","gss-curve448-sha512-1.3.132.0.27","gss-curve448-sha512-1.3.132.0.16","gss-curve448-sha512-1.3.132.0.36","gss-curve448-sha512-1.3.132.0.37","gss-curve448-sha512-1.3.132.0.38","curve25519-sha256","curve448-sha512","sntrup761x25519-sha512","mlkem768nistp256-sha256","mlkem1024nistp384-sha384","mlkem768x25519-sha256"],"example":"diffie-hellman-group-exchange-sha1"}},"xml":{"name":"negotiated-ssh-transport-parameters","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_yang-library":{"title":"network-topology_network-topology_topology_node_netconf-node_yang-library","type":"object","properties":{"password":{"description":"","type":"string","example":"Some password"},"yang-library-url":{"description":"Yang library to be plugged as additional source provider into the shared schema repository","type":"string","example":"Some yang-library-url"},"username":{"description":"","type":"string","example":"Some username"}},"xml":{"name":"yang-library","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_protocol":{"title":"network-topology_network-topology_topology_node_netconf-node_protocol","type":"object","properties":{"key-id":{"type":"array","items":{"type":"string","example":"Some key-id"},"description":"Identifiers of private keys within the keystore to be used for to establish TLS connection."},"name":{"description":"","type":"string","enum":["SSH","TLS"],"default":"SSH","example":"SSH"},"tls":{"$ref":"#/components/schemas/network-topology_network-topology_topology_node_netconf-node_protocol_tls"}},"xml":{"name":"protocol","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_protocol_tls":{"title":"network-topology_network-topology_topology_node_netconf-node_protocol_tls","type":"object","properties":{"excluded-versions":{"type":"array","items":{"type":"string","example":"Some excluded-versions"},"description":"A list of TLS version names provided in JDK that are not supported by the\ntarget netconf device, eg, the netopeer2 simulator does not support the\nSSLv2Hello. Most of the time, this list need not be set"}},"xml":{"name":"tls","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_yang-module-capabilities":{"title":"network-topology_network-topology_topology_node_netconf-node_yang-module-capabilities","type":"object","properties":{"capability":{"type":"array","items":{"type":"string","example":"Some capability"},"description":"Set a list of capabilities to override capabilities provided in device's hello message.\nCan be used for devices that do not report any yang modules in their hello message"},"override":{"description":"Whether to override or merge this list of capabilities with capabilities from device","type":"boolean","default":false,"example":true}},"xml":{"name":"yang-module-capabilities","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_non-module-capabilities":{"title":"network-topology_network-topology_topology_node_netconf-node_non-module-capabilities","type":"object","properties":{"capability":{"type":"array","items":{"type":"string","example":"Some capability"},"description":"Set a list of non-module based capabilities to override or merge non-module capabilities\nprovided in device's hello message. Can be used for devices that do not report or\nincorrectly report non-module based capabilities in their hello message"},"override":{"description":"Whether to override or merge this list of non-module based capabilities with non-module\nbased capabilities from device","type":"boolean","default":false,"example":true}},"xml":{"name":"non-module-capabilities","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_node_netconf-node_odl-hello-message-capabilities":{"title":"network-topology_network-topology_topology_node_netconf-node_odl-hello-message-capabilities","type":"object","properties":{"capability":{"type":"array","items":{"type":"string","example":"Some capability"},"description":"Certain devices are non-accepting of ODL's hello message.  This allows specification of\na custom ODL hello message based on a list of supported capabilities."}},"xml":{"name":"odl-hello-message-capabilities","namespace":"urn:opendaylight:netconf-node-topology"}},"network-topology_network-topology_topology_link":{"title":"network-topology_network-topology_topology_link","type":"object","description":"\nA Network Link connects a by Local (Source) node and\na Remote (Destination) Network Nodes via a set of the\nnodes' termination points.\nAs it is possible to have several links between the same\nsource and destination nodes, and as a link could potentially\nbe re-homed between termination points, to ensure that we\nwould always know to distinguish between links, every link\nis identified by a dedicated link identifier.\nNote that a link models a point-to-point link, not a multipoint\nlink.\nLayering dependencies on links in underlay topologies are\nnot represented as the layering information of nodes and of\ntermination points is sufficient.\n","properties":{"link-id":{"description":"The identifier of a link in the topology.\nA link is specific to a topology to which it belongs.","type":"string","example":"Some link-id"},"topology-tunnel-pcep:label-recording-desired":{"description":"","type":"boolean","default":false,"example":true,"xml":{"name":"label-recording-desired","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"topology-tunnel-pcep:bandwidth":{"description":"","type":"string","format":"byte","xml":{"name":"bandwidth","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"topology-tunnel-pcep:se-style-desired":{"description":"","type":"boolean","default":false,"example":true,"xml":{"name":"se-style-desired","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"supporting-link":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_supporting-link"},"description":""},"topology-tunnel-pcep:local-protection-desired":{"description":"","type":"boolean","default":false,"example":true,"xml":{"name":"local-protection-desired","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"destination":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_destination"},"topology-tunnel-pcep:include-all":{"description":"","type":"integer","format":"int64","example":0,"xml":{"name":"include-all","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"source":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_source"},"topology-tunnel-pcep:hold-priority":{"description":"","type":"string","default":"0","xml":{"name":"hold-priority","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"l3-unicast-igp-topology:igp-link-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes"},"odl-pcep-ietf-stateful:administrative-status":{"description":"","type":"string","enum":["active","inactive"],"example":"active","xml":{"name":"administrative-status","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"overlay:tunnel-type":{"description":"","type":"string","enum":["tunnel-type-base","tunnel-type-gre","tunnel-type-vxlan-gpe","tunnel-type-vxlan"],"example":"tunnel-type-base","xml":{"name":"tunnel-type","namespace":"urn:opendaylight:params:xml:ns:yang:overlay"}},"topology-tunnel-pcep:include-any":{"description":"","type":"integer","format":"int64","example":0,"xml":{"name":"include-any","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"network-topology-sr:segment":{"description":"","type":"integer","format":"int64","example":0,"xml":{"name":"segment","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr"}},"topology-tunnel-pcep:symbolic-path-name":{"description":"","type":"string","example":"Some symbolic-path-name","xml":{"name":"symbolic-path-name","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"topology-tunnel-pcep:session-name":{"description":"","type":"string","example":"Some session-name","xml":{"name":"session-name","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"topology-tunnel-pcep:exclude-any":{"description":"","type":"integer","format":"int64","example":0,"xml":{"name":"exclude-any","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"topology-tunnel-pcep:class-type":{"description":"","type":"integer","format":"int32","example":1,"xml":{"name":"class-type","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"topology-tunnel-pcep:setup-priority":{"description":"","type":"string","default":"0","xml":{"name":"setup-priority","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}}},"required":["destination","source"],"xml":{"name":"link","namespace":"urn:TBD:params:xml:ns:yang:network-topology"}},"network-topology_network-topology_topology_link_source":{"title":"network-topology_network-topology_topology_link_source","type":"object","properties":{"source-node":{"description":"Source node identifier, must be in same topology.","type":"string","example":"Some source-node"},"overlay:port":{"description":"Data-plane port number","type":"integer","format":"int32","example":0,"xml":{"name":"port","namespace":"urn:opendaylight:params:xml:ns:yang:overlay"}},"overlay:ip":{"description":"Data-plane IP address","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647,"xml":{"name":"ip","namespace":"urn:opendaylight:params:xml:ns:yang:overlay"}},"source-tp":{"description":"Termination point within source node that terminates the link.","type":"string","example":"Some source-tp"}},"required":["source-node"],"xml":{"name":"source","namespace":"urn:TBD:params:xml:ns:yang:network-topology"}},"network-topology_network-topology_topology_link_destination":{"title":"network-topology_network-topology_topology_link_destination","type":"object","properties":{"dest-node":{"description":"Destination node identifier, must be in same topology.","type":"string","example":"Some dest-node"},"dest-tp":{"description":"Termination point within destination node that terminates the link.","type":"string","example":"Some dest-tp"},"overlay:port":{"description":"Data-plane port number","type":"integer","format":"int32","example":0,"xml":{"name":"port","namespace":"urn:opendaylight:params:xml:ns:yang:overlay"}},"overlay:ip":{"description":"Data-plane IP address","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647,"xml":{"name":"ip","namespace":"urn:opendaylight:params:xml:ns:yang:overlay"}}},"required":["dest-node"],"xml":{"name":"destination","namespace":"urn:TBD:params:xml:ns:yang:network-topology"}},"network-topology_network-topology_topology_link_supporting-link":{"title":"network-topology_network-topology_topology_link_supporting-link","type":"object","properties":{"link-ref":{"description":"","type":"string","example":"Some link-ref"}},"xml":{"name":"supporting-link","namespace":"urn:TBD:params:xml:ns:yang:network-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes":{"title":"network-topology_network-topology_topology_link_igp-link-attributes","type":"object","properties":{"flag":{"type":"array","items":{"type":"string","enum":["flag-identity","undefined-flag"],"example":"flag-identity"},"description":"Link flags"},"metric":{"description":"Link Metric","type":"integer","format":"int64","example":0},"ospf-topology:ospf-link-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes"},"name":{"description":"Link Name","type":"string","example":"Some name"},"isis-topology:isis-link-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes"}},"xml":{"name":"igp-link-attributes","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes","type":"object","properties":{"ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted"},"multi-topology-id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"isis-link-attributes","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted","type":"object","properties":{"max-link-bandwidth":{"description":"Maximum bandwidth that can be see on this link in this direction. Units in bytes per second","type":"number","example":-92233720368547758.08},"color":{"description":"Administrative group or color of the link","type":"integer","format":"int64","example":0},"unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_unreserved-bandwidth"},"description":"Unreserved bandwidth for 0-7 priority levels. Units in bytes per second","maxItems":8},"te-default-metric":{"description":"Traffic Engineering Metric","type":"integer","format":"int64","example":0},"srlg":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg"},"max-resv-link-bandwidth":{"description":"Maximum amount of bandwidth that can be reserved in this direction in this link. Units in bytes per second","type":"number","example":-92233720368547758.08}},"xml":{"name":"ted","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_unreserved-bandwidth":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_unreserved-bandwidth","type":"object","description":"Unreserved bandwidth for 0-7 priority levels. Units in bytes per second","properties":{"bandwidth":{"description":"Unreserved bandwidth for this level","type":"number","example":-92233720368547758.08},"priority":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"unreserved-bandwidth","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg","type":"object","description":"Shared Risk Link Group Attributes","properties":{"srlg-values":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_srlg-values"},"description":"List of Shared Risk Link Group this interface belongs to."},"interface-switching-capabilities":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities"},"description":"List of interface capabilities for this interface"},"link-protection-type":{"description":"Link Protection Type desired for this link","type":"integer","format":"int32","example":0}},"xml":{"name":"srlg","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities","type":"object","description":"List of interface capabilities for this interface","properties":{"packet-switch-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable"},"max-lsp-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth"},"description":"Maximum LSP Bandwidth at priorities 0-7","maxItems":8},"switching-capability":{"description":"Switching Capability for this interface","type":"string","enum":["PSC-1","PSC-2","PSC-3","PSC-4","L2SC","TDM","LSC","FSC"],"example":"PSC-1"},"time-division-multiplex-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable"},"encoding":{"description":"Encoding supported by this interface","type":"integer","format":"int32","example":0}},"xml":{"name":"interface-switching-capabilities","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth","type":"object","description":"Maximum LSP Bandwidth at priorities 0-7","properties":{"bandwidth":{"description":"Max LSP Bandwidth for this level","type":"number","example":-92233720368547758.08},"priority":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"max-lsp-bandwidth","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable","type":"object","description":"Interface has packet-switching capabilities","properties":{"interface-mtu":{"description":"Interface MTU","type":"integer","format":"int32","example":0},"minimum-lsp-bandwidth":{"description":"Minimum LSP Bandwidth. Units in bytes per second","type":"number","example":-92233720368547758.08}},"xml":{"name":"packet-switch-capable","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable","type":"object","description":"Interface has time-division multiplex capabilities","properties":{"indication":{"description":"Indication whether the interface supports Standard or Arbitrary SONET/SDH","type":"integer","format":"int32","example":0},"minimum-lsp-bandwidth":{"description":"Minimum LSP Bandwidth. Units in bytes per second","type":"number","example":-92233720368547758.08}},"xml":{"name":"time-division-multiplex-capable","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_srlg-values":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_isis-link-attributes_ted_srlg_srlg-values","type":"object","description":"List of Shared Risk Link Group this interface belongs to.","properties":{"srlg-value":{"description":"Shared Risk Link Group value","type":"integer","format":"int64","example":0}},"xml":{"name":"srlg-values","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes","type":"object","properties":{"ted":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted"},"multi-topology-id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"ospf-link-attributes","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted","type":"object","properties":{"max-link-bandwidth":{"description":"Maximum bandwidth that can be see on this link in this direction. Units in bytes per second","type":"number","example":-92233720368547758.08},"color":{"description":"Administrative group or color of the link","type":"integer","format":"int64","example":0},"unreserved-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_unreserved-bandwidth"},"description":"Unreserved bandwidth for 0-7 priority levels. Units in bytes per second","maxItems":8},"te-default-metric":{"description":"Traffic Engineering Metric","type":"integer","format":"int64","example":0},"srlg":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg"},"max-resv-link-bandwidth":{"description":"Maximum amount of bandwidth that can be reserved in this direction in this link. Units in bytes per second","type":"number","example":-92233720368547758.08}},"xml":{"name":"ted","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_unreserved-bandwidth":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_unreserved-bandwidth","type":"object","description":"Unreserved bandwidth for 0-7 priority levels. Units in bytes per second","properties":{"bandwidth":{"description":"Unreserved bandwidth for this level","type":"number","example":-92233720368547758.08},"priority":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"unreserved-bandwidth","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg","type":"object","description":"Shared Risk Link Group Attributes","properties":{"srlg-values":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_srlg-values"},"description":"List of Shared Risk Link Group this interface belongs to."},"interface-switching-capabilities":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities"},"description":"List of interface capabilities for this interface"},"link-protection-type":{"description":"Link Protection Type desired for this link","type":"integer","format":"int32","example":0}},"xml":{"name":"srlg","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities","type":"object","description":"List of interface capabilities for this interface","properties":{"packet-switch-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable"},"max-lsp-bandwidth":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth"},"description":"Maximum LSP Bandwidth at priorities 0-7","maxItems":8},"switching-capability":{"description":"Switching Capability for this interface","type":"string","enum":["PSC-1","PSC-2","PSC-3","PSC-4","L2SC","TDM","LSC","FSC"],"example":"PSC-1"},"time-division-multiplex-capable":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable"},"encoding":{"description":"Encoding supported by this interface","type":"integer","format":"int32","example":0}},"xml":{"name":"interface-switching-capabilities","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_max-lsp-bandwidth","type":"object","description":"Maximum LSP Bandwidth at priorities 0-7","properties":{"bandwidth":{"description":"Max LSP Bandwidth for this level","type":"number","example":-92233720368547758.08},"priority":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"max-lsp-bandwidth","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_packet-switch-capable","type":"object","description":"Interface has packet-switching capabilities","properties":{"interface-mtu":{"description":"Interface MTU","type":"integer","format":"int32","example":0},"minimum-lsp-bandwidth":{"description":"Minimum LSP Bandwidth. Units in bytes per second","type":"number","example":-92233720368547758.08}},"xml":{"name":"packet-switch-capable","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_interface-switching-capabilities_time-division-multiplex-capable","type":"object","description":"Interface has time-division multiplex capabilities","properties":{"indication":{"description":"Indication whether the interface supports Standard or Arbitrary SONET/SDH","type":"integer","format":"int32","example":0},"minimum-lsp-bandwidth":{"description":"Minimum LSP Bandwidth. Units in bytes per second","type":"number","example":-92233720368547758.08}},"xml":{"name":"time-division-multiplex-capable","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_srlg-values":{"title":"network-topology_network-topology_topology_link_igp-link-attributes_ospf-link-attributes_ted_srlg_srlg-values","type":"object","description":"List of Shared Risk Link Group this interface belongs to.","properties":{"srlg-value":{"description":"Shared Risk Link Group value","type":"integer","format":"int64","example":0}},"xml":{"name":"srlg-values","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_link_tunnel-types":{"title":"network-topology_network-topology_topology_link_tunnel-types","type":"object","description":"A tunnel can have multiple traits, each of\nwhich is indicated by a presence container\nunder this one. Such containers should not\ncarry any data.","properties":{"topology-tunnel-pcep:pcep-tunnel":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_tunnel-types_pcep-tunnel"},"topology-tunnel-p2p:p2p-tunnel":{"$ref":"#/components/schemas/network-topology_network-topology_topology_link_tunnel-types_p2p-tunnel"}},"xml":{"name":"tunnel-types","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel"}},"network-topology_network-topology_topology_link_tunnel-types_p2p-tunnel":{"title":"network-topology_network-topology_topology_link_tunnel-types_p2p-tunnel","type":"object","properties":{},"xml":{"name":"p2p-tunnel","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p"}},"network-topology_network-topology_topology_link_tunnel-types_pcep-tunnel":{"title":"network-topology_network-topology_topology_link_tunnel-types_pcep-tunnel","type":"object","properties":{},"xml":{"name":"pcep-tunnel","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"network-topology_network-topology_topology_igp-topology-attributes":{"title":"network-topology_network-topology_topology_igp-topology-attributes","type":"object","properties":{"isis-topology:isis-topology-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_isis-topology-attributes"},"flag":{"type":"array","items":{"type":"string","enum":["flag-identity","undefined-flag"],"example":"flag-identity"},"description":"Topology flags"},"name":{"description":"Name of the topology","type":"string","example":"Some name"},"ospf-topology:ospf-topology-attributes":{"$ref":"#/components/schemas/network-topology_network-topology_topology_igp-topology-attributes_ospf-topology-attributes"}},"xml":{"name":"igp-topology-attributes","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology"}},"network-topology_network-topology_topology_igp-topology-attributes_ospf-topology-attributes":{"title":"network-topology_network-topology_topology_igp-topology-attributes_ospf-topology-attributes","type":"object","properties":{"area-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"ospf-topology-attributes","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology"}},"network-topology_network-topology_topology_igp-topology-attributes_isis-topology-attributes":{"title":"network-topology_network-topology_topology_igp-topology-attributes_isis-topology-attributes","type":"object","properties":{"net":{"description":"","type":"string","example":"00.0000.0000.0000.0000.0000.0000","minLength":0,"maxLength":2147483647}},"xml":{"name":"isis-topology-attributes","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology"}},"network-topology_network-topology_topology_paths":{"title":"network-topology_network-topology_topology_paths","type":"object","properties":{"path-id":{"description":"","type":"string","example":"Some path-id"},"topology-tunnel-p2p:explicit-hops":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths_explicit-hops"},"description":""},"odl-pcep-ietf-stateful:administrative-status":{"description":"","type":"string","enum":["active","inactive"],"example":"active","xml":{"name":"administrative-status","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"path-types":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths_path-types"},"topology-tunnel-p2p:reported-hops":{"type":"array","items":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths_reported-hops"},"description":""},"odl-pcep-ietf-stateful:operational-status":{"description":"","type":"string","enum":["down","up","active","going-down","going-up"],"example":"down","xml":{"name":"operational-status","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}}},"xml":{"name":"paths","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel"}},"network-topology_network-topology_topology_paths_path-types":{"title":"network-topology_network-topology_topology_paths_path-types","type":"object","description":"A path can have multiple traits, each\nof which is indicated by a presence\ncontainer under this one. Such\ncontainers should not carry any data.","properties":{"topology-tunnel-sr:sr-tunnel":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths_path-types_sr-tunnel"}},"xml":{"name":"path-types","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel"}},"network-topology_network-topology_topology_paths_path-types_sr-tunnel":{"title":"network-topology_network-topology_topology_paths_path-types_sr-tunnel","type":"object","properties":{},"xml":{"name":"sr-tunnel","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr"}},"network-topology_network-topology_topology_paths_explicit-hops":{"title":"network-topology_network-topology_topology_paths_explicit-hops","type":"object","properties":{"loose":{"description":"","type":"boolean","example":true},"as-number":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths_explicit-hops_as-number"},"order":{"description":"","type":"integer","format":"int64","example":0},"topology-tunnel-sr:segment-id":{"description":"","type":"integer","format":"int64","example":0,"xml":{"name":"segment-id","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr"}}},"required":["loose","as-number","order"],"xml":{"name":"explicit-hops","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p"}},"network-topology_network-topology_topology_paths_explicit-hops_as-number":{"title":"network-topology_network-topology_topology_paths_explicit-hops_as-number","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0}},"required":["as-number"],"xml":{"name":"as-number","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"network-topology_network-topology_topology_paths_reported-hops":{"title":"network-topology_network-topology_topology_paths_reported-hops","type":"object","properties":{"topology-tunnel-pcep:protection-available":{"description":"","type":"boolean","default":false,"example":true,"xml":{"name":"protection-available","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"topology-tunnel-pcep:protection-in-use":{"description":"","type":"boolean","default":false,"example":true,"xml":{"name":"protection-in-use","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"ip-prefix":{"$ref":"#/components/schemas/network-topology_network-topology_topology_paths_reported-hops_ip-prefix"},"order":{"description":"","type":"integer","format":"int64","example":0},"topology-tunnel-sr:segment-id":{"description":"","type":"integer","format":"int64","example":0,"xml":{"name":"segment-id","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr"}}},"required":["ip-prefix","order"],"xml":{"name":"reported-hops","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p"}},"network-topology_network-topology_topology_paths_reported-hops_ip-prefix":{"title":"network-topology_network-topology_topology_paths_reported-hops_ip-prefix","type":"object","properties":{"ip-prefix":{"description":"","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"required":["ip-prefix"],"xml":{"name":"ip-prefix","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep"}},"network-topology-pcep_add-lsp_input":{"title":"network-topology-pcep_add-lsp_input","type":"object","properties":{"network-topology-ref":{"description":"","type":"string"},"arguments":{"$ref":"#/components/schemas/network-topology-pcep_arguments"},"name":{"description":"","type":"string","example":"Some name"},"node":{"description":"","type":"string","example":"Some node"}},"required":["network-topology-ref","name","node"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments":{"title":"network-topology-pcep_arguments","type":"object","properties":{"odl-pcep-ietf-stateful:path-setup-type":{"$ref":"#/components/schemas/network-topology-pcep_arguments_path-setup-type"},"metadata":{"$ref":"#/components/schemas/network-topology-pcep_arguments_metadata"},"ero":{"$ref":"#/components/schemas/network-topology-pcep_arguments_ero"},"bandwidth":{"$ref":"#/components/schemas/network-topology-pcep_arguments_bandwidth"},"endpoints-obj":{"$ref":"#/components/schemas/network-topology-pcep_arguments_endpoints-obj"},"iro":{"$ref":"#/components/schemas/network-topology-pcep_arguments_iro"},"odl-pcep-ietf-stateful:lsp":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp"},"lspa":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lspa"},"rro":{"$ref":"#/components/schemas/network-topology-pcep_arguments_rro"},"association-group":{"$ref":"#/components/schemas/network-topology-pcep_arguments_association-group"},"xro":{"$ref":"#/components/schemas/network-topology-pcep_arguments_xro"},"of":{"$ref":"#/components/schemas/network-topology-pcep_arguments_of"},"metrics":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_arguments_metrics"},"description":""},"reoptimization-bandwidth":{"$ref":"#/components/schemas/network-topology-pcep_arguments_reoptimization-bandwidth"},"class-type":{"$ref":"#/components/schemas/network-topology-pcep_arguments_class-type"}},"required":["endpoints-obj","xro","of","class-type"],"xml":{"name":"arguments","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_metadata":{"title":"network-topology-pcep_arguments_metadata","type":"object","description":"Container for external metadata attached to the LSP. Contents of this container\nare not propagated onto the router itself, so it is persisted only while the LSP\nis present.","properties":{},"xml":{"name":"metadata","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_endpoints-obj":{"title":"network-topology-pcep_arguments_endpoints-obj","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"ignore":{"description":"","type":"boolean","default":false,"example":true},"ipv4":{"$ref":"#/components/schemas/network-topology-pcep_arguments_endpoints-obj_ipv4"}},"required":["ipv4"],"xml":{"name":"endpoints-obj","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_endpoints-obj_ipv4":{"title":"network-topology-pcep_arguments_endpoints-obj_ipv4","type":"object","properties":{"destination-ipv4-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647},"source-ipv4-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"required":["destination-ipv4-address","source-ipv4-address"],"xml":{"name":"ipv4","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_association-group":{"title":"network-topology-pcep_arguments_association-group","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"association-id":{"description":"","type":"integer","format":"int32","example":0},"association-tlvs":{"$ref":"#/components/schemas/network-topology-pcep_arguments_association-group_association-tlvs"},"association-type":{"description":"","type":"string","enum":["path-protection","disjoint","policy","single-side-lsp","double-side-lsp","sr-policy","virtual-network-lsp"],"example":"path-protection"},"removal-flag":{"description":"","type":"boolean","example":true},"ignore":{"description":"","type":"boolean","default":false,"example":true},"association-source":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"association-group","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_association-group_association-tlvs":{"title":"network-topology-pcep_arguments_association-group_association-tlvs","type":"object","description":"Base Association TLVs definition","properties":{"global-association-source":{"description":"","type":"integer","format":"int64","example":0},"extended-association-id":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""},"protecting":{"description":"","type":"boolean","example":true},"secondary":{"description":"","type":"boolean","example":true},"protection-type":{"description":"","type":"string","enum":["unprotected","full-rerouting","rerouting-without-extra-traffic","protection-with-extra-traffic","unidirectional-protection","bidirectional-protection"],"example":"unprotected"}},"xml":{"name":"association-tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_ero":{"title":"network-topology-pcep_arguments_ero","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_arguments_ero_subobject"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"ero","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_ero_subobject":{"title":"network-topology-pcep_arguments_ero_subobject","type":"object","properties":{"loose":{"description":"","type":"boolean","example":true},"as-number":{"$ref":"#/components/schemas/network-topology-pcep_arguments_ero_subobject_as-number"}},"required":["loose","as-number"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_ero_subobject_as-number":{"title":"network-topology-pcep_arguments_ero_subobject_as-number","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0}},"required":["as-number"],"xml":{"name":"as-number","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_metrics":{"title":"network-topology-pcep_arguments_metrics","type":"object","properties":{"metric":{"$ref":"#/components/schemas/network-topology-pcep_arguments_metrics_metric"}},"required":["metric"],"xml":{"name":"metrics","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_metrics_metric":{"title":"network-topology-pcep_arguments_metrics_metric","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"computed":{"description":"","type":"boolean","default":false,"example":true},"metric-type":{"description":"","type":"integer","format":"int32","example":0},"bound":{"description":"","type":"boolean","default":false,"example":true},"ignore":{"description":"","type":"boolean","default":false,"example":true},"value":{"description":"","type":"string","format":"byte"}},"required":["metric-type"],"xml":{"name":"metric","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_lspa":{"title":"network-topology-pcep_arguments_lspa","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"tlvs":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lspa_tlvs"},"include-any":{"description":"","type":"integer","format":"int64","example":0},"label-recording-desired":{"description":"","type":"boolean","default":false,"example":true},"se-style-desired":{"description":"","type":"boolean","default":false,"example":true},"local-protection-desired":{"description":"","type":"boolean","default":false,"example":true},"session-name":{"description":"","type":"string","example":"Some session-name"},"include-all":{"description":"","type":"integer","format":"int64","example":0},"exclude-any":{"description":"","type":"integer","format":"int64","example":0},"ignore":{"description":"","type":"boolean","default":false,"example":true},"setup-priority":{"description":"","type":"string","default":"0"},"hold-priority":{"description":"","type":"string","default":"0"}},"xml":{"name":"lspa","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_lspa_tlvs":{"title":"network-topology-pcep_arguments_lspa_tlvs","type":"object","properties":{"vendor-information-tlv":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lspa_tlvs_vendor-information-tlv"},"description":"VENDOR-INFORMATION-TLV"}},"xml":{"name":"tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_lspa_tlvs_vendor-information-tlv":{"title":"network-topology-pcep_arguments_lspa_tlvs_vendor-information-tlv","type":"object","description":"VENDOR-INFORMATION-TLV","properties":{"enterprise-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"vendor-information-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_of":{"title":"network-topology-pcep_arguments_of","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"code":{"description":"","type":"integer","format":"int32","example":0},"tlvs":{"$ref":"#/components/schemas/network-topology-pcep_arguments_of_tlvs"},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"required":["code"],"xml":{"name":"of","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_of_tlvs":{"title":"network-topology-pcep_arguments_of_tlvs","type":"object","properties":{"vendor-information-tlv":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_arguments_of_tlvs_vendor-information-tlv"},"description":"VENDOR-INFORMATION-TLV"}},"xml":{"name":"tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_of_tlvs_vendor-information-tlv":{"title":"network-topology-pcep_arguments_of_tlvs_vendor-information-tlv","type":"object","description":"VENDOR-INFORMATION-TLV","properties":{"enterprise-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"vendor-information-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_class-type":{"title":"network-topology-pcep_arguments_class-type","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"ignore":{"description":"","type":"boolean","default":false,"example":true},"class-type":{"description":"","type":"integer","format":"int32","example":1}},"required":["class-type"],"xml":{"name":"class-type","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_bandwidth":{"title":"network-topology-pcep_arguments_bandwidth","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"bandwidth":{"description":"","type":"string","format":"byte"},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"bandwidth","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_reoptimization-bandwidth":{"title":"network-topology-pcep_arguments_reoptimization-bandwidth","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"bandwidth":{"description":"","type":"string","format":"byte"},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"reoptimization-bandwidth","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_xro":{"title":"network-topology-pcep_arguments_xro","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_arguments_xro_subobject"},"description":""},"flags":{"description":"","type":"string","enum":["fail"],"minItems":0,"default":"fail fail","uniqueItems":true},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"required":["flags"],"xml":{"name":"xro","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_xro_subobject":{"title":"network-topology-pcep_arguments_xro_subobject","type":"object","properties":{"attribute":{"description":"","type":"string","enum":["interface","node","srlg"],"example":"interface"},"as-number":{"$ref":"#/components/schemas/network-topology-pcep_arguments_xro_subobject_as-number"},"mandatory":{"description":"","type":"boolean","default":false,"example":true}},"required":["attribute","as-number"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_xro_subobject_as-number":{"title":"network-topology-pcep_arguments_xro_subobject_as-number","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0}},"required":["as-number"],"xml":{"name":"as-number","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_iro":{"title":"network-topology-pcep_arguments_iro","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_arguments_iro_subobject"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"iro","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_iro_subobject":{"title":"network-topology-pcep_arguments_iro_subobject","type":"object","properties":{"loose":{"description":"","type":"boolean","example":true},"as-number":{"$ref":"#/components/schemas/network-topology-pcep_arguments_iro_subobject_as-number"}},"required":["loose","as-number"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_iro_subobject_as-number":{"title":"network-topology-pcep_arguments_iro_subobject_as-number","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0}},"required":["as-number"],"xml":{"name":"as-number","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_rro":{"title":"network-topology-pcep_arguments_rro","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_arguments_rro_subobject"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"rro","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_rro_subobject":{"title":"network-topology-pcep_arguments_rro_subobject","type":"object","properties":{"protection-available":{"description":"","type":"boolean","default":false,"example":true},"protection-in-use":{"description":"","type":"boolean","default":false,"example":true},"ip-prefix":{"$ref":"#/components/schemas/network-topology-pcep_arguments_rro_subobject_ip-prefix"}},"required":["ip-prefix"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_rro_subobject_ip-prefix":{"title":"network-topology-pcep_arguments_rro_subobject_ip-prefix","type":"object","properties":{"ip-prefix":{"description":"","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"required":["ip-prefix"],"xml":{"name":"ip-prefix","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_path-setup-type":{"title":"network-topology-pcep_arguments_path-setup-type","type":"object","properties":{"pst":{"description":"PST=0: Path is setup via RSVP-TE signaling protocol(default).","type":"string","enum":["rsvp-te","sr-mpls","pcecc","srv6","native-ip"],"default":"rsvp-te","example":"rsvp-te"}},"xml":{"name":"path-setup-type","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp":{"title":"network-topology-pcep_arguments_lsp","type":"object","properties":{"delegate":{"description":"","type":"boolean","default":false,"example":true},"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"plsp-id":{"description":"","type":"integer","format":"int64","example":0},"tlvs":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs"},"pce-allocation":{"description":"","type":"boolean","example":true},"administrative":{"description":"","type":"boolean","default":false,"example":true},"operational":{"description":"","type":"string","enum":["down","up","active","going-down","going-up"],"example":"down"},"ignore":{"description":"","type":"boolean","default":false,"example":true},"sync":{"description":"","type":"boolean","default":false,"example":true},"remove":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"lsp","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs":{"title":"network-topology-pcep_arguments_lsp_tlvs","type":"object","properties":{"lsp-error-code":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_lsp-error-code"},"symbolic-path-name":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_symbolic-path-name"},"sr-policy-lsp":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_sr-policy-lsp"},"odl-pcep-sync-optimizations:lsp-db-version":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_lsp-db-version"},"lsp-identifiers":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_lsp-identifiers"},"path-binding":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_path-binding"},"vendor-information-tlv":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_vendor-information-tlv"},"description":"VENDOR-INFORMATION-TLV"},"rsvp-error-spec":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_rsvp-error-spec"}},"xml":{"name":"tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_vendor-information-tlv":{"title":"network-topology-pcep_arguments_lsp_tlvs_vendor-information-tlv","type":"object","description":"VENDOR-INFORMATION-TLV","properties":{"enterprise-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"vendor-information-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_sr-policy-lsp":{"title":"network-topology-pcep_arguments_lsp_tlvs_sr-policy-lsp","type":"object","properties":{"computation-priority":{"description":"","type":"integer","format":"int32","example":0},"invalidation":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_sr-policy-lsp_invalidation"},"enl-policy":{"description":"","type":"string","enum":["ipv4-only","ipv6-only","both-ipv4-ipv6","no-enl"],"example":"ipv4-only"}},"xml":{"name":"sr-policy-lsp","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_sr-policy-lsp_invalidation":{"title":"network-topology-pcep_arguments_lsp_tlvs_sr-policy-lsp_invalidation","type":"object","properties":{"oper-drop":{"description":"","type":"boolean","example":true},"config-drop":{"description":"","type":"boolean","example":true}},"xml":{"name":"invalidation","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_path-binding":{"title":"network-topology-pcep_arguments_lsp_tlvs_path-binding","type":"object","properties":{"binding-type":{"description":"","type":"string","enum":["mpls-label","mpls-label-entry","srv6","srv6-behavior"],"example":"mpls-label"},"flags":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_path-binding_flags"},"mpls-label":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"path-binding","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_path-binding_flags":{"title":"network-topology-pcep_arguments_lsp_tlvs_path-binding_flags","type":"object","properties":{"removal":{"description":"","type":"boolean","example":true},"specified":{"description":"","type":"boolean","example":true}},"xml":{"name":"flags","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_lsp-error-code":{"title":"network-topology-pcep_arguments_lsp_tlvs_lsp-error-code","type":"object","properties":{"error-code":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"lsp-error-code","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_symbolic-path-name":{"title":"network-topology-pcep_arguments_lsp_tlvs_symbolic-path-name","type":"object","properties":{"path-name":{"description":"","type":"string","format":"byte"}},"xml":{"name":"symbolic-path-name","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_lsp-identifiers":{"title":"network-topology-pcep_arguments_lsp_tlvs_lsp-identifiers","type":"object","properties":{"lsp-id":{"description":"","type":"integer","format":"int64","example":0},"ipv4":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_lsp-identifiers_ipv4"},"tunnel-id":{"description":"","type":"integer","format":"int32","example":0}},"required":["ipv4"],"xml":{"name":"lsp-identifiers","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_lsp-identifiers_ipv4":{"title":"network-topology-pcep_arguments_lsp_tlvs_lsp-identifiers_ipv4","type":"object","properties":{"ipv4-extended-tunnel-id":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647},"ipv4-tunnel-endpoint-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647},"ipv4-tunnel-sender-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"required":["ipv4-extended-tunnel-id","ipv4-tunnel-endpoint-address","ipv4-tunnel-sender-address"],"xml":{"name":"ipv4","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_rsvp-error-spec":{"title":"network-topology-pcep_arguments_lsp_tlvs_rsvp-error-spec","type":"object","properties":{"rsvp-error":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_rsvp-error-spec_rsvp-error"}},"required":["rsvp-error"],"xml":{"name":"rsvp-error-spec","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_rsvp-error-spec_rsvp-error":{"title":"network-topology-pcep_arguments_lsp_tlvs_rsvp-error-spec_rsvp-error","type":"object","properties":{"node":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647},"code":{"description":"","type":"integer","format":"int32","example":0},"flags":{"description":"","type":"string","enum":["not-guilty","in-place"],"minItems":0,"default":"not-guilty in-place","uniqueItems":true},"value":{"description":"","type":"integer","format":"int32","example":0}},"required":["node","code","value"],"xml":{"name":"rsvp-error","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_lsp-db-version":{"title":"network-topology-pcep_arguments_lsp_tlvs_lsp-db-version","type":"object","properties":{"lsp-db-version-value":{"description":"","type":"integer","example":0}},"xml":{"name":"lsp-db-version","namespace":"urn:opendaylight:params:xml:ns:yang:controller:pcep:sync:optimizations"}},"network-topology-pcep_add-lsp_output":{"title":"network-topology-pcep_add-lsp_output","type":"object","properties":{"failure":{"description":"","type":"string","enum":["unsent","no-ack","failed"],"example":"unsent"},"error":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_error"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_error":{"title":"network-topology-pcep_error","type":"object","properties":{"error-object":{"$ref":"#/components/schemas/network-topology-pcep_error_error-object"}},"required":["error-object"],"xml":{"name":"error","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_error_error-object":{"title":"network-topology-pcep_error_error-object","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"tlvs":{"$ref":"#/components/schemas/network-topology-pcep_error_error-object_tlvs"},"ignore":{"description":"","type":"boolean","default":false,"example":true},"type":{"description":"","type":"integer","format":"int32","example":0},"value":{"description":"","type":"integer","format":"int32","example":0}},"required":["type","value"],"xml":{"name":"error-object","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_error_error-object_tlvs":{"title":"network-topology-pcep_error_error-object_tlvs","type":"object","properties":{"vendor-information-tlv":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_error_error-object_tlvs_vendor-information-tlv"},"description":"VENDOR-INFORMATION-TLV"},"req-missing":{"$ref":"#/components/schemas/network-topology-pcep_error_error-object_tlvs_req-missing"}},"xml":{"name":"tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_error_error-object_tlvs_req-missing":{"title":"network-topology-pcep_error_error-object_tlvs_req-missing","type":"object","properties":{"request-id":{"description":"","type":"integer","format":"int64","example":1}},"xml":{"name":"req-missing","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_error_error-object_tlvs_vendor-information-tlv":{"title":"network-topology-pcep_error_error-object_tlvs_vendor-information-tlv","type":"object","description":"VENDOR-INFORMATION-TLV","properties":{"enterprise-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"vendor-information-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_remove-lsp_input":{"title":"network-topology-pcep_remove-lsp_input","type":"object","properties":{"network-topology-ref":{"description":"","type":"string"},"name":{"description":"","type":"string","example":"Some name"},"node":{"description":"","type":"string","example":"Some node"}},"required":["network-topology-ref","name","node"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_remove-lsp_output":{"title":"network-topology-pcep_remove-lsp_output","type":"object","properties":{"failure":{"description":"","type":"string","enum":["unsent","no-ack","failed"],"example":"unsent"},"error":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_error"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_update-lsp_input":{"title":"network-topology-pcep_update-lsp_input","type":"object","properties":{"network-topology-ref":{"description":"","type":"string"},"arguments":{"$ref":"#/components/schemas/network-topology-pcep_arguments1"},"name":{"description":"","type":"string","example":"Some name"},"node":{"description":"","type":"string","example":"Some node"}},"required":["network-topology-ref","name","node"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments1":{"title":"network-topology-pcep_arguments","type":"object","properties":{"odl-pcep-ietf-stateful:path-setup-type":{"$ref":"#/components/schemas/network-topology-pcep_arguments_path-setup-type1"},"metadata":{"$ref":"#/components/schemas/network-topology-pcep_arguments_metadata"},"ero":{"$ref":"#/components/schemas/network-topology-pcep_arguments_ero1"},"bandwidth":{"$ref":"#/components/schemas/network-topology-pcep_arguments_bandwidth"},"iro":{"$ref":"#/components/schemas/network-topology-pcep_arguments_iro1"},"odl-pcep-ietf-stateful:lsp":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp1"},"lspa":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lspa"},"rro":{"$ref":"#/components/schemas/network-topology-pcep_arguments_rro1"},"association-group":{"$ref":"#/components/schemas/network-topology-pcep_arguments_association-group"},"xro":{"$ref":"#/components/schemas/network-topology-pcep_arguments_xro"},"of":{"$ref":"#/components/schemas/network-topology-pcep_arguments_of"},"metrics":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_arguments_metrics"},"description":""},"reoptimization-bandwidth":{"$ref":"#/components/schemas/network-topology-pcep_arguments_reoptimization-bandwidth"},"class-type":{"$ref":"#/components/schemas/network-topology-pcep_arguments_class-type"}},"required":["xro","of","class-type"],"xml":{"name":"arguments","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_ero1":{"title":"network-topology-pcep_arguments_ero","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_arguments_ero_subobject1"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"ero","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_ero_subobject1":{"title":"network-topology-pcep_arguments_ero_subobject","type":"object","properties":{"loose":{"description":"","type":"boolean","example":true},"as-number":{"$ref":"#/components/schemas/network-topology-pcep_arguments_ero_subobject_as-number"}},"required":["loose","as-number"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_iro1":{"title":"network-topology-pcep_arguments_iro","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_arguments_iro_subobject1"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"iro","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_iro_subobject1":{"title":"network-topology-pcep_arguments_iro_subobject","type":"object","properties":{"loose":{"description":"","type":"boolean","example":true},"as-number":{"$ref":"#/components/schemas/network-topology-pcep_arguments_iro_subobject_as-number"}},"required":["loose","as-number"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_rro1":{"title":"network-topology-pcep_arguments_rro","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_arguments_rro_subobject1"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"rro","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_rro_subobject1":{"title":"network-topology-pcep_arguments_rro_subobject","type":"object","properties":{"protection-available":{"description":"","type":"boolean","default":false,"example":true},"protection-in-use":{"description":"","type":"boolean","default":false,"example":true},"ip-prefix":{"$ref":"#/components/schemas/network-topology-pcep_arguments_rro_subobject_ip-prefix"}},"required":["ip-prefix"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments_path-setup-type1":{"title":"network-topology-pcep_arguments_path-setup-type","type":"object","properties":{"pst":{"description":"PST=0: Path is setup via RSVP-TE signaling protocol(default).","type":"string","enum":["rsvp-te","sr-mpls","pcecc","srv6","native-ip"],"default":"rsvp-te","example":"rsvp-te"}},"xml":{"name":"path-setup-type","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp1":{"title":"network-topology-pcep_arguments_lsp","type":"object","properties":{"delegate":{"description":"","type":"boolean","default":false,"example":true},"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"plsp-id":{"description":"","type":"integer","format":"int64","example":0},"tlvs":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs1"},"pce-allocation":{"description":"","type":"boolean","example":true},"administrative":{"description":"","type":"boolean","default":false,"example":true},"operational":{"description":"","type":"string","enum":["down","up","active","going-down","going-up"],"example":"down"},"ignore":{"description":"","type":"boolean","default":false,"example":true},"sync":{"description":"","type":"boolean","default":false,"example":true},"remove":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"lsp","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs1":{"title":"network-topology-pcep_arguments_lsp_tlvs","type":"object","properties":{"lsp-error-code":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_lsp-error-code1"},"symbolic-path-name":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_symbolic-path-name1"},"sr-policy-lsp":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_sr-policy-lsp1"},"odl-pcep-sync-optimizations:lsp-db-version":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_lsp-db-version1"},"lsp-identifiers":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_lsp-identifiers1"},"path-binding":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_path-binding1"},"vendor-information-tlv":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_vendor-information-tlv1"},"description":"VENDOR-INFORMATION-TLV"},"rsvp-error-spec":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_rsvp-error-spec1"}},"xml":{"name":"tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_vendor-information-tlv1":{"title":"network-topology-pcep_arguments_lsp_tlvs_vendor-information-tlv","type":"object","description":"VENDOR-INFORMATION-TLV","properties":{"enterprise-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"vendor-information-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_sr-policy-lsp1":{"title":"network-topology-pcep_arguments_lsp_tlvs_sr-policy-lsp","type":"object","properties":{"computation-priority":{"description":"","type":"integer","format":"int32","example":0},"invalidation":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_sr-policy-lsp_invalidation1"},"enl-policy":{"description":"","type":"string","enum":["ipv4-only","ipv6-only","both-ipv4-ipv6","no-enl"],"example":"ipv4-only"}},"xml":{"name":"sr-policy-lsp","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_sr-policy-lsp_invalidation1":{"title":"network-topology-pcep_arguments_lsp_tlvs_sr-policy-lsp_invalidation","type":"object","properties":{"oper-drop":{"description":"","type":"boolean","example":true},"config-drop":{"description":"","type":"boolean","example":true}},"xml":{"name":"invalidation","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_path-binding1":{"title":"network-topology-pcep_arguments_lsp_tlvs_path-binding","type":"object","properties":{"binding-type":{"description":"","type":"string","enum":["mpls-label","mpls-label-entry","srv6","srv6-behavior"],"example":"mpls-label"},"flags":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_path-binding_flags1"},"mpls-label":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"path-binding","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_path-binding_flags1":{"title":"network-topology-pcep_arguments_lsp_tlvs_path-binding_flags","type":"object","properties":{"removal":{"description":"","type":"boolean","example":true},"specified":{"description":"","type":"boolean","example":true}},"xml":{"name":"flags","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_lsp-error-code1":{"title":"network-topology-pcep_arguments_lsp_tlvs_lsp-error-code","type":"object","properties":{"error-code":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"lsp-error-code","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_symbolic-path-name1":{"title":"network-topology-pcep_arguments_lsp_tlvs_symbolic-path-name","type":"object","properties":{"path-name":{"description":"","type":"string","format":"byte"}},"xml":{"name":"symbolic-path-name","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_lsp-identifiers1":{"title":"network-topology-pcep_arguments_lsp_tlvs_lsp-identifiers","type":"object","properties":{"lsp-id":{"description":"","type":"integer","format":"int64","example":0},"ipv4":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_lsp-identifiers_ipv4"},"tunnel-id":{"description":"","type":"integer","format":"int32","example":0}},"required":["ipv4"],"xml":{"name":"lsp-identifiers","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_rsvp-error-spec1":{"title":"network-topology-pcep_arguments_lsp_tlvs_rsvp-error-spec","type":"object","properties":{"rsvp-error":{"$ref":"#/components/schemas/network-topology-pcep_arguments_lsp_tlvs_rsvp-error-spec_rsvp-error"}},"required":["rsvp-error"],"xml":{"name":"rsvp-error-spec","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}},"network-topology-pcep_arguments_lsp_tlvs_lsp-db-version1":{"title":"network-topology-pcep_arguments_lsp_tlvs_lsp-db-version","type":"object","properties":{"lsp-db-version-value":{"description":"","type":"integer","example":0}},"xml":{"name":"lsp-db-version","namespace":"urn:opendaylight:params:xml:ns:yang:controller:pcep:sync:optimizations"}},"network-topology-pcep_update-lsp_output":{"title":"network-topology-pcep_update-lsp_output","type":"object","properties":{"failure":{"description":"","type":"string","enum":["unsent","no-ack","failed"],"example":"unsent"},"error":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_error"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_ensure-lsp-operational_input":{"title":"network-topology-pcep_ensure-lsp-operational_input","type":"object","properties":{"network-topology-ref":{"description":"","type":"string"},"arguments":{"$ref":"#/components/schemas/network-topology-pcep_arguments2"},"name":{"description":"","type":"string","example":"Some name"},"node":{"description":"","type":"string","example":"Some node"}},"required":["network-topology-ref","name","node"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_arguments2":{"title":"network-topology-pcep_arguments","type":"object","properties":{"odl-pcep-ietf-stateful:operational":{"description":"","type":"string","enum":["down","up","active","going-down","going-up"],"example":"down","xml":{"name":"operational","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}}},"xml":{"name":"arguments","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_ensure-lsp-operational_output":{"title":"network-topology-pcep_ensure-lsp-operational_output","type":"object","properties":{"failure":{"description":"","type":"string","enum":["unsent","no-ack","failed"],"example":"unsent"},"error":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_error"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_trigger-sync_input":{"title":"network-topology-pcep_trigger-sync_input","type":"object","properties":{"network-topology-ref":{"description":"","type":"string"},"name":{"description":"","type":"string","example":"Some name"},"node":{"description":"","type":"string","example":"Some node"}},"required":["network-topology-ref","node"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_trigger-sync_output":{"title":"network-topology-pcep_trigger-sync_output","type":"object","properties":{"failure":{"description":"","type":"string","enum":["unsent","no-ack","failed"],"example":"unsent"},"error":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep_error"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep_tear-down-session_input":{"title":"network-topology-pcep_tear-down-session_input","type":"object","properties":{"network-topology-ref":{"description":"","type":"string"},"node":{"description":"","type":"string","example":"Some node"}},"required":["network-topology-ref","node"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep"}},"network-topology-pcep-programming_submit-add-lsp_input":{"title":"network-topology-pcep-programming_submit-add-lsp_input","type":"object","properties":{"network-topology-ref":{"description":"","type":"string"},"id":{"description":"","type":"string","example":"Some id"},"deadline":{"description":"","type":"integer","example":0},"preconditions":{"type":"array","items":{"type":"string","example":"Some preconditions"},"description":""},"arguments":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments"},"name":{"description":"","type":"string","example":"Some name"},"node":{"description":"","type":"string","example":"Some node"}},"required":["network-topology-ref","id","deadline","name","node"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments":{"title":"network-topology-pcep-programming_arguments","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_metadata"},"ero":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_ero"},"bandwidth":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_bandwidth"},"endpoints-obj":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_endpoints-obj"},"iro":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_iro"},"lspa":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_lspa"},"rro":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_rro"},"association-group":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_association-group"},"xro":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_xro"},"of":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_of"},"metrics":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_metrics"},"description":""},"reoptimization-bandwidth":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_reoptimization-bandwidth"},"class-type":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_class-type"}},"required":["endpoints-obj","xro","of","class-type"],"xml":{"name":"arguments","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_metadata":{"title":"network-topology-pcep-programming_arguments_metadata","type":"object","description":"Container for external metadata attached to the LSP. Contents of this container\nare not propagated onto the router itself, so it is persisted only while the LSP\nis present.","properties":{},"xml":{"name":"metadata","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_endpoints-obj":{"title":"network-topology-pcep-programming_arguments_endpoints-obj","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"ignore":{"description":"","type":"boolean","default":false,"example":true},"ipv4":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_endpoints-obj_ipv4"}},"required":["ipv4"],"xml":{"name":"endpoints-obj","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_endpoints-obj_ipv4":{"title":"network-topology-pcep-programming_arguments_endpoints-obj_ipv4","type":"object","properties":{"destination-ipv4-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647},"source-ipv4-address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"required":["destination-ipv4-address","source-ipv4-address"],"xml":{"name":"ipv4","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_association-group":{"title":"network-topology-pcep-programming_arguments_association-group","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"association-id":{"description":"","type":"integer","format":"int32","example":0},"association-tlvs":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_association-group_association-tlvs"},"association-type":{"description":"","type":"string","enum":["path-protection","disjoint","policy","single-side-lsp","double-side-lsp","sr-policy","virtual-network-lsp"],"example":"path-protection"},"removal-flag":{"description":"","type":"boolean","example":true},"ignore":{"description":"","type":"boolean","default":false,"example":true},"association-source":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"association-group","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_association-group_association-tlvs":{"title":"network-topology-pcep-programming_arguments_association-group_association-tlvs","type":"object","description":"Base Association TLVs definition","properties":{"global-association-source":{"description":"","type":"integer","format":"int64","example":0},"extended-association-id":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":""},"protecting":{"description":"","type":"boolean","example":true},"secondary":{"description":"","type":"boolean","example":true},"protection-type":{"description":"","type":"string","enum":["unprotected","full-rerouting","rerouting-without-extra-traffic","protection-with-extra-traffic","unidirectional-protection","bidirectional-protection"],"example":"unprotected"}},"xml":{"name":"association-tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_ero":{"title":"network-topology-pcep-programming_arguments_ero","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_ero_subobject"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"ero","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_ero_subobject":{"title":"network-topology-pcep-programming_arguments_ero_subobject","type":"object","properties":{"loose":{"description":"","type":"boolean","example":true},"as-number":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_ero_subobject_as-number"}},"required":["loose","as-number"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_ero_subobject_as-number":{"title":"network-topology-pcep-programming_arguments_ero_subobject_as-number","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0}},"required":["as-number"],"xml":{"name":"as-number","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_metrics":{"title":"network-topology-pcep-programming_arguments_metrics","type":"object","properties":{"metric":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_metrics_metric"}},"required":["metric"],"xml":{"name":"metrics","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_metrics_metric":{"title":"network-topology-pcep-programming_arguments_metrics_metric","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"computed":{"description":"","type":"boolean","default":false,"example":true},"metric-type":{"description":"","type":"integer","format":"int32","example":0},"bound":{"description":"","type":"boolean","default":false,"example":true},"ignore":{"description":"","type":"boolean","default":false,"example":true},"value":{"description":"","type":"string","format":"byte"}},"required":["metric-type"],"xml":{"name":"metric","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_lspa":{"title":"network-topology-pcep-programming_arguments_lspa","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"tlvs":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_lspa_tlvs"},"include-any":{"description":"","type":"integer","format":"int64","example":0},"label-recording-desired":{"description":"","type":"boolean","default":false,"example":true},"se-style-desired":{"description":"","type":"boolean","default":false,"example":true},"local-protection-desired":{"description":"","type":"boolean","default":false,"example":true},"session-name":{"description":"","type":"string","example":"Some session-name"},"include-all":{"description":"","type":"integer","format":"int64","example":0},"exclude-any":{"description":"","type":"integer","format":"int64","example":0},"ignore":{"description":"","type":"boolean","default":false,"example":true},"setup-priority":{"description":"","type":"string","default":"0"},"hold-priority":{"description":"","type":"string","default":"0"}},"xml":{"name":"lspa","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_lspa_tlvs":{"title":"network-topology-pcep-programming_arguments_lspa_tlvs","type":"object","properties":{"vendor-information-tlv":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_lspa_tlvs_vendor-information-tlv"},"description":"VENDOR-INFORMATION-TLV"}},"xml":{"name":"tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_lspa_tlvs_vendor-information-tlv":{"title":"network-topology-pcep-programming_arguments_lspa_tlvs_vendor-information-tlv","type":"object","description":"VENDOR-INFORMATION-TLV","properties":{"enterprise-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"vendor-information-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_of":{"title":"network-topology-pcep-programming_arguments_of","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"code":{"description":"","type":"integer","format":"int32","example":0},"tlvs":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_of_tlvs"},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"required":["code"],"xml":{"name":"of","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_of_tlvs":{"title":"network-topology-pcep-programming_arguments_of_tlvs","type":"object","properties":{"vendor-information-tlv":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_of_tlvs_vendor-information-tlv"},"description":"VENDOR-INFORMATION-TLV"}},"xml":{"name":"tlvs","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_of_tlvs_vendor-information-tlv":{"title":"network-topology-pcep-programming_arguments_of_tlvs_vendor-information-tlv","type":"object","description":"VENDOR-INFORMATION-TLV","properties":{"enterprise-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"vendor-information-tlv","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_class-type":{"title":"network-topology-pcep-programming_arguments_class-type","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"ignore":{"description":"","type":"boolean","default":false,"example":true},"class-type":{"description":"","type":"integer","format":"int32","example":1}},"required":["class-type"],"xml":{"name":"class-type","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_bandwidth":{"title":"network-topology-pcep-programming_arguments_bandwidth","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"bandwidth":{"description":"","type":"string","format":"byte"},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"bandwidth","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_reoptimization-bandwidth":{"title":"network-topology-pcep-programming_arguments_reoptimization-bandwidth","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"bandwidth":{"description":"","type":"string","format":"byte"},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"reoptimization-bandwidth","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_xro":{"title":"network-topology-pcep-programming_arguments_xro","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_xro_subobject"},"description":""},"flags":{"description":"","type":"string","enum":["fail"],"minItems":0,"default":"fail fail","uniqueItems":true},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"required":["flags"],"xml":{"name":"xro","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_xro_subobject":{"title":"network-topology-pcep-programming_arguments_xro_subobject","type":"object","properties":{"attribute":{"description":"","type":"string","enum":["interface","node","srlg"],"example":"interface"},"as-number":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_xro_subobject_as-number"},"mandatory":{"description":"","type":"boolean","default":false,"example":true}},"required":["attribute","as-number"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_xro_subobject_as-number":{"title":"network-topology-pcep-programming_arguments_xro_subobject_as-number","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0}},"required":["as-number"],"xml":{"name":"as-number","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_iro":{"title":"network-topology-pcep-programming_arguments_iro","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_iro_subobject"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"iro","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_iro_subobject":{"title":"network-topology-pcep-programming_arguments_iro_subobject","type":"object","properties":{"loose":{"description":"","type":"boolean","example":true},"as-number":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_iro_subobject_as-number"}},"required":["loose","as-number"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_iro_subobject_as-number":{"title":"network-topology-pcep-programming_arguments_iro_subobject_as-number","type":"object","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0}},"required":["as-number"],"xml":{"name":"as-number","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_rro":{"title":"network-topology-pcep-programming_arguments_rro","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_rro_subobject"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"rro","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_rro_subobject":{"title":"network-topology-pcep-programming_arguments_rro_subobject","type":"object","properties":{"protection-available":{"description":"","type":"boolean","default":false,"example":true},"protection-in-use":{"description":"","type":"boolean","default":false,"example":true},"ip-prefix":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_rro_subobject_ip-prefix"}},"required":["ip-prefix"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_rro_subobject_ip-prefix":{"title":"network-topology-pcep-programming_arguments_rro_subobject_ip-prefix","type":"object","properties":{"ip-prefix":{"description":"","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"required":["ip-prefix"],"xml":{"name":"ip-prefix","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_submit-add-lsp_output":{"title":"network-topology-pcep-programming_submit-add-lsp_output","type":"object","properties":{"failure":{"$ref":"#/components/schemas/network-topology-pcep-programming_failure"}},"required":["failure"],"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_failure":{"title":"network-topology-pcep-programming_failure","type":"object","properties":{"type":{"description":"","type":"string","enum":["submit-failure","dead-on-arrival","unknown-precondition-id","too-many-instructions","duplicate-instruction-id"],"example":"submit-failure"},"failed-preconditions":{"type":"array","items":{"type":"string","example":"Some failed-preconditions"},"description":""}},"required":["type"],"xml":{"name":"failure","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_submit-remove-lsp_input":{"title":"network-topology-pcep-programming_submit-remove-lsp_input","type":"object","properties":{"network-topology-ref":{"description":"","type":"string"},"id":{"description":"","type":"string","example":"Some id"},"deadline":{"description":"","type":"integer","example":0},"preconditions":{"type":"array","items":{"type":"string","example":"Some preconditions"},"description":""},"name":{"description":"","type":"string","example":"Some name"},"node":{"description":"","type":"string","example":"Some node"}},"required":["network-topology-ref","id","deadline","name","node"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_submit-remove-lsp_output":{"title":"network-topology-pcep-programming_submit-remove-lsp_output","type":"object","properties":{"failure":{"$ref":"#/components/schemas/network-topology-pcep-programming_failure"}},"required":["failure"],"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_submit-update-lsp_input":{"title":"network-topology-pcep-programming_submit-update-lsp_input","type":"object","properties":{"network-topology-ref":{"description":"","type":"string"},"id":{"description":"","type":"string","example":"Some id"},"deadline":{"description":"","type":"integer","example":0},"preconditions":{"type":"array","items":{"type":"string","example":"Some preconditions"},"description":""},"arguments":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments1"},"name":{"description":"","type":"string","example":"Some name"},"node":{"description":"","type":"string","example":"Some node"}},"required":["network-topology-ref","id","deadline","name","node"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments1":{"title":"network-topology-pcep-programming_arguments","type":"object","properties":{"association-group":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_association-group"},"metadata":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_metadata"},"ero":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_ero1"},"xro":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_xro"},"bandwidth":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_bandwidth"},"of":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_of"},"iro":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_iro1"},"lspa":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_lspa"},"metrics":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_metrics"},"description":""},"reoptimization-bandwidth":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_reoptimization-bandwidth"},"class-type":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_class-type"},"rro":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_rro1"}},"required":["xro","of","class-type"],"xml":{"name":"arguments","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_ero1":{"title":"network-topology-pcep-programming_arguments_ero","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_ero_subobject1"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"ero","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_ero_subobject1":{"title":"network-topology-pcep-programming_arguments_ero_subobject","type":"object","properties":{"loose":{"description":"","type":"boolean","example":true},"as-number":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_ero_subobject_as-number"}},"required":["loose","as-number"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_iro1":{"title":"network-topology-pcep-programming_arguments_iro","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_iro_subobject1"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"iro","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_iro_subobject1":{"title":"network-topology-pcep-programming_arguments_iro_subobject","type":"object","properties":{"loose":{"description":"","type":"boolean","example":true},"as-number":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_iro_subobject_as-number"}},"required":["loose","as-number"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_rro1":{"title":"network-topology-pcep-programming_arguments_rro","type":"object","properties":{"processing-rule":{"description":"","type":"boolean","default":false,"example":true},"subobject":{"type":"array","items":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_rro_subobject1"},"description":""},"ignore":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"rro","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments_rro_subobject1":{"title":"network-topology-pcep-programming_arguments_rro_subobject","type":"object","properties":{"protection-available":{"description":"","type":"boolean","default":false,"example":true},"protection-in-use":{"description":"","type":"boolean","default":false,"example":true},"ip-prefix":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments_rro_subobject_ip-prefix"}},"required":["ip-prefix"],"xml":{"name":"subobject","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_submit-update-lsp_output":{"title":"network-topology-pcep-programming_submit-update-lsp_output","type":"object","properties":{"failure":{"$ref":"#/components/schemas/network-topology-pcep-programming_failure"}},"required":["failure"],"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_submit-ensure-lsp-operational_input":{"title":"network-topology-pcep-programming_submit-ensure-lsp-operational_input","type":"object","properties":{"network-topology-ref":{"description":"","type":"string"},"id":{"description":"","type":"string","example":"Some id"},"deadline":{"description":"","type":"integer","example":0},"preconditions":{"type":"array","items":{"type":"string","example":"Some preconditions"},"description":""},"arguments":{"$ref":"#/components/schemas/network-topology-pcep-programming_arguments2"},"name":{"description":"","type":"string","example":"Some name"},"node":{"description":"","type":"string","example":"Some node"}},"required":["network-topology-ref","id","deadline","name","node"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_arguments2":{"title":"network-topology-pcep-programming_arguments","type":"object","properties":{},"xml":{"name":"arguments","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_submit-ensure-lsp-operational_output":{"title":"network-topology-pcep-programming_submit-ensure-lsp-operational_output","type":"object","properties":{"failure":{"$ref":"#/components/schemas/network-topology-pcep-programming_failure"}},"required":["failure"],"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_submit-trigger-sync_input":{"title":"network-topology-pcep-programming_submit-trigger-sync_input","type":"object","properties":{"network-topology-ref":{"description":"","type":"string"},"id":{"description":"","type":"string","example":"Some id"},"deadline":{"description":"","type":"integer","example":0},"preconditions":{"type":"array","items":{"type":"string","example":"Some preconditions"},"description":""},"name":{"description":"","type":"string","example":"Some name"},"node":{"description":"","type":"string","example":"Some node"}},"required":["network-topology-ref","id","deadline","node"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"network-topology-pcep-programming_submit-trigger-sync_output":{"title":"network-topology-pcep-programming_submit-trigger-sync_output","type":"object","properties":{"failure":{"$ref":"#/components/schemas/network-topology-pcep-programming_failure"}},"required":["failure"],"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming"}},"node-config_set-config_input":{"title":"node-config_set-config_input","type":"object","properties":{"flag":{"description":"Switch config flag. Expected values FRAGNORMAL, OFPCFRAGDROP, OFPCFRAGREASM, OFPCFRAGMASK","type":"string","example":"Some flag"},"miss-search-length":{"description":"","type":"integer","format":"int32","example":0},"transaction-id":{"description":"","type":"integer","example":0},"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:module:config"}},"node-config_set-config_output":{"title":"node-config_set-config_output","type":"object","properties":{"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:module:config"}},"notifications_create-subscription_input":{"title":"notifications_create-subscription_input","type":"object","properties":{"stream":{"description":"An optional parameter that indicates which stream of events\nis of interest. If not present, then events in the default\nNETCONF stream will be sent.","type":"string","default":"NETCONF","example":"Some stream"},"filter":{"description":"An optional parameter that indicates which subset of all\npossible events is of interest. The format of this\nparameter is the same as that of the filter parameter\nin the NETCONF protocol operations. If not present,\nall events not precluded by other parameters will\nbe sent. (This is unknown data, need to be filled by user.)","example":{},"type":"object"},"startTime":{"description":"A parameter used to trigger the replay feature and\nindicates that the replay should start at the time\nspecified. If start time is not present, this is not a\nreplay subscription.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"stopTime":{"description":"An optional parameter used with the optional replay\nfeature to indicate the newest notifications of\ninterest. If stop time is not present, the notifications\nwill continue until the subscription is terminated.\nMust be used with startTime.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647}},"xml":{"name":"input","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0"}},"odl-bgp-peer-acceptor-config_bgp-peer-acceptor-config":{"title":"odl-bgp-peer-acceptor-config_bgp-peer-acceptor-config","type":"object","properties":{"config-name":{"description":"","type":"string","example":"Some config-name"},"binding-address":{"description":"IP address to bind to","type":"string","default":"0.0.0.0","example":"","minLength":0,"maxLength":2147483647},"binding-port":{"description":"Port to bind to","type":"integer","format":"int32","default":179,"example":0}},"xml":{"name":"bgp-peer-acceptor-config","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config"}},"odl-bmp-monitor-config_odl-bmp-monitors":{"title":"odl-bmp-monitor-config_odl-bmp-monitors","type":"object","properties":{"bmp-monitor-config":{"type":"array","items":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config"},"description":""}},"xml":{"name":"odl-bmp-monitors","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"}},"odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config":{"title":"odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config","type":"object","properties":{"server":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_server"},"monitored-router":{"type":"array","items":{"$ref":"#/components/schemas/odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_monitored-router"},"description":""},"monitor-id":{"description":"","type":"string","example":"Some monitor-id"}},"required":["server"],"xml":{"name":"bmp-monitor-config","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"}},"odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_server":{"title":"odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_server","type":"object","properties":{"binding-address":{"description":"","type":"string","default":"0.0.0.0","example":"","minLength":0,"maxLength":2147483647},"binding-port":{"description":"","type":"integer","format":"int32","example":0}},"required":["binding-port"],"xml":{"name":"server","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"}},"odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_monitored-router":{"title":"odl-bmp-monitor-config_odl-bmp-monitors_bmp-monitor-config_monitored-router","type":"object","properties":{"password":{"description":"RFC2385 shared secret","type":"string","example":"Some password","minLength":1,"maxLength":80},"address":{"description":"","type":"string","example":"","minLength":0,"maxLength":2147483647},"port":{"description":"","type":"integer","format":"int32","example":0},"active":{"description":"","type":"boolean","example":true}},"required":["address"],"xml":{"name":"monitored-router","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"}},"odl-device-notification_subscribe-device-notification_input":{"title":"odl-device-notification_subscribe-device-notification_input","type":"object","properties":{"path":{"description":"Device mount point path","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:device:notification"}},"odl-device-notification_subscribe-device-notification_output":{"title":"odl-device-notification_subscribe-device-notification_output","type":"object","properties":{"stream-name":{"description":"Notification stream name.","type":"string","example":"Some stream-name"}},"xml":{"name":"output","namespace":"urn:opendaylight:device:notification"}},"odl-entity-owners_get-entities_output":{"title":"odl-entity-owners_get-entities_output","type":"object","properties":{"entities":{"type":"array","items":{"$ref":"#/components/schemas/odl-entity-owners_entities"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners"}},"odl-entity-owners_entities":{"title":"odl-entity-owners_entities","type":"object","properties":{"name":{"description":"","type":"string"},"owner-node":{"description":"","type":"string","example":"Some owner-node","minLength":1,"maxLength":2147483647},"type":{"description":"","type":"string","example":"Some type","minLength":1,"maxLength":2147483647},"candidate-nodes":{"type":"array","minItems":1,"items":{"type":"string","example":"Some candidate-nodes","minLength":1,"maxLength":2147483647},"description":"","example":["Some candidate-nodes"]}},"required":["name","type","candidate-nodes"],"xml":{"name":"entities","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners"}},"odl-entity-owners_get-entity_input":{"title":"odl-entity-owners_get-entity_input","type":"object","properties":{"type":{"description":"","type":"string","example":"Some type","minLength":1,"maxLength":2147483647},"name":{"description":"","type":"string"}},"required":["type","name"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners"}},"odl-entity-owners_get-entity_output":{"title":"odl-entity-owners_get-entity_output","type":"object","properties":{"owner-node":{"description":"","type":"string","example":"Some owner-node","minLength":1,"maxLength":2147483647},"candidate-nodes":{"type":"array","minItems":1,"items":{"type":"string","example":"Some candidate-nodes","minLength":1,"maxLength":2147483647},"description":"","example":["Some candidate-nodes"]}},"required":["candidate-nodes"],"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners"}},"odl-entity-owners_get-entity-owner_input":{"title":"odl-entity-owners_get-entity-owner_input","type":"object","properties":{"type":{"description":"","type":"string","example":"Some type","minLength":1,"maxLength":2147483647},"name":{"description":"","type":"string"}},"required":["type","name"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners"}},"odl-entity-owners_get-entity-owner_output":{"title":"odl-entity-owners_get-entity-owner_output","type":"object","properties":{"owner-node":{"description":"","type":"string","example":"Some owner-node","minLength":1,"maxLength":2147483647}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners"}},"odl-general-entity_entity":{"title":"odl-general-entity_entity","type":"object","properties":{"name":{"description":"","type":"string","example":"Some name"}},"xml":{"name":"entity","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity"}},"odl-lisp-sb_send-map-request_input":{"title":"odl-lisp-sb_send-map-request_input","type":"object","properties":{"MapRequest":{"$ref":"#/components/schemas/odl-lisp-sb_MapRequest"},"transport-address":{"$ref":"#/components/schemas/odl-lisp-sb_transport-address"}},"xml":{"name":"input","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRequest":{"title":"odl-lisp-sb_MapRequest","type":"object","properties":{"mapDataPresent":{"description":"","type":"boolean","example":true},"smrInvoked":{"description":"","type":"boolean","example":true},"authoritative":{"description":"","type":"boolean","example":true},"pitr":{"description":"","type":"boolean","example":true},"SourceEid":{"$ref":"#/components/schemas/odl-lisp-sb_MapRequest_SourceEid"},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"eid-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-lisp-sb_MapRequest_eid-item"},"description":""},"MapReply":{"$ref":"#/components/schemas/odl-lisp-sb_MapRequest_MapReply"},"itrRloc":{"type":"array","items":{"$ref":"#/components/schemas/odl-lisp-sb_MapRequest_itrRloc"},"description":""},"smr":{"description":"","type":"boolean","example":true},"nonce":{"description":"","type":"integer","format":"int64","example":-9223372036854775808},"probe":{"description":"","type":"boolean","example":true}},"xml":{"name":"MapRequest","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRequest_SourceEid":{"title":"odl-lisp-sb_MapRequest_SourceEid","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-lisp-sb_MapRequest_SourceEid_eid"}},"required":["eid"],"xml":{"name":"SourceEid","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRequest_SourceEid_eid":{"title":"odl-lisp-sb_MapRequest_SourceEid_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRequest_itrRloc":{"title":"odl-lisp-sb_MapRequest_itrRloc","type":"object","properties":{"itr-rloc-id":{"description":"","type":"string","example":"Some itr-rloc-id"},"rloc":{"$ref":"#/components/schemas/odl-lisp-sb_MapRequest_itrRloc_rloc"}},"required":["rloc"],"xml":{"name":"itrRloc","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRequest_itrRloc_rloc":{"title":"odl-lisp-sb_MapRequest_itrRloc_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRequest_MapReply":{"title":"odl-lisp-sb_MapRequest_MapReply","type":"object","properties":{"mapping-record":{"$ref":"#/components/schemas/odl-lisp-sb_MapRequest_MapReply_mapping-record"}},"xml":{"name":"MapReply","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRequest_MapReply_mapping-record":{"title":"odl-lisp-sb_MapRequest_MapReply_mapping-record","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-lisp-sb_MapRequest_MapReply_mapping-record_eid"},"recordTtl":{"description":"A mapping record's time to live in Minute(s)","type":"integer","format":"int32","example":-2147483648},"authoritative":{"description":"","type":"boolean","example":true},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"mapVersion":{"description":"","type":"integer","format":"int32","example":-32768},"action":{"description":"","type":"string","enum":["NoAction","NativelyForward","SendMapRequest","Drop"],"example":"NoAction"},"site-id":{"description":"64 bit site identifier.","type":"string","format":"byte"},"xtr-id":{"description":"128 bit xTR identifier.","type":"string","format":"byte"},"timestamp":{"description":"Milliseconds since January 1, 1970, 00:00:00 GMT","type":"integer","format":"int64","example":-9223372036854775808},"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-lisp-sb_MapRequest_MapReply_mapping-record_LocatorRecord"},"description":""}},"required":["eid"],"xml":{"name":"mapping-record","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRequest_MapReply_mapping-record_eid":{"title":"odl-lisp-sb_MapRequest_MapReply_mapping-record_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRequest_MapReply_mapping-record_LocatorRecord":{"title":"odl-lisp-sb_MapRequest_MapReply_mapping-record_LocatorRecord","type":"object","properties":{"routed":{"description":"","type":"boolean","example":true},"multicastWeight":{"description":"","type":"integer","format":"int32","example":0},"multicastPriority":{"description":"","type":"integer","format":"int32","example":0},"localLocator":{"description":"","type":"boolean","example":true},"locator-id":{"description":"","type":"string","example":"Some locator-id"},"weight":{"description":"","type":"integer","format":"int32","example":0},"rloc":{"$ref":"#/components/schemas/odl-lisp-sb_MapRequest_MapReply_mapping-record_LocatorRecord_rloc"},"priority":{"description":"","type":"integer","format":"int32","example":0},"rlocProbed":{"description":"","type":"boolean","example":true}},"required":["rloc"],"xml":{"name":"LocatorRecord","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRequest_MapReply_mapping-record_LocatorRecord_rloc":{"title":"odl-lisp-sb_MapRequest_MapReply_mapping-record_LocatorRecord_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRequest_eid-item":{"title":"odl-lisp-sb_MapRequest_eid-item","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-lisp-sb_MapRequest_eid-item_eid"},"eid-item-id":{"description":"","type":"string","example":"Some eid-item-id"}},"required":["eid"],"xml":{"name":"eid-item","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRequest_eid-item_eid":{"title":"odl-lisp-sb_MapRequest_eid-item_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_transport-address":{"title":"odl-lisp-sb_transport-address","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"ipAddress":{"description":"","type":"string","format":"byte"}},"xml":{"name":"transport-address","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_send-map-reply_input":{"title":"odl-lisp-sb_send-map-reply_input","type":"object","properties":{"MapReply":{"$ref":"#/components/schemas/odl-lisp-sb_MapReply"},"transport-address":{"$ref":"#/components/schemas/odl-lisp-sb_transport-address"}},"xml":{"name":"input","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapReply":{"title":"odl-lisp-sb_MapReply","type":"object","properties":{"mapping-record-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-lisp-sb_MapReply_mapping-record-item"},"description":""},"echoNonceEnabled":{"description":"","type":"boolean","example":true},"securityEnabled":{"description":"","type":"boolean","example":true},"nonce":{"description":"","type":"integer","format":"int64","example":-9223372036854775808},"probe":{"description":"","type":"boolean","example":true}},"xml":{"name":"MapReply","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapReply_mapping-record-item":{"title":"odl-lisp-sb_MapReply_mapping-record-item","type":"object","properties":{"mapping-record-item-id":{"description":"","type":"string","example":"Some mapping-record-item-id"},"mapping-record":{"$ref":"#/components/schemas/odl-lisp-sb_MapReply_mapping-record-item_mapping-record"}},"xml":{"name":"mapping-record-item","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapReply_mapping-record-item_mapping-record":{"title":"odl-lisp-sb_MapReply_mapping-record-item_mapping-record","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-lisp-sb_MapReply_mapping-record-item_mapping-record_eid"},"recordTtl":{"description":"A mapping record's time to live in Minute(s)","type":"integer","format":"int32","example":-2147483648},"authoritative":{"description":"","type":"boolean","example":true},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"mapVersion":{"description":"","type":"integer","format":"int32","example":-32768},"action":{"description":"","type":"string","enum":["NoAction","NativelyForward","SendMapRequest","Drop"],"example":"NoAction"},"site-id":{"description":"64 bit site identifier.","type":"string","format":"byte"},"xtr-id":{"description":"128 bit xTR identifier.","type":"string","format":"byte"},"timestamp":{"description":"Milliseconds since January 1, 1970, 00:00:00 GMT","type":"integer","format":"int64","example":-9223372036854775808},"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-lisp-sb_MapReply_mapping-record-item_mapping-record_LocatorRecord"},"description":""}},"required":["eid"],"xml":{"name":"mapping-record","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapReply_mapping-record-item_mapping-record_eid":{"title":"odl-lisp-sb_MapReply_mapping-record-item_mapping-record_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapReply_mapping-record-item_mapping-record_LocatorRecord":{"title":"odl-lisp-sb_MapReply_mapping-record-item_mapping-record_LocatorRecord","type":"object","properties":{"routed":{"description":"","type":"boolean","example":true},"multicastWeight":{"description":"","type":"integer","format":"int32","example":0},"multicastPriority":{"description":"","type":"integer","format":"int32","example":0},"localLocator":{"description":"","type":"boolean","example":true},"locator-id":{"description":"","type":"string","example":"Some locator-id"},"weight":{"description":"","type":"integer","format":"int32","example":0},"rloc":{"$ref":"#/components/schemas/odl-lisp-sb_MapReply_mapping-record-item_mapping-record_LocatorRecord_rloc"},"priority":{"description":"","type":"integer","format":"int32","example":0},"rlocProbed":{"description":"","type":"boolean","example":true}},"required":["rloc"],"xml":{"name":"LocatorRecord","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapReply_mapping-record-item_mapping-record_LocatorRecord_rloc":{"title":"odl-lisp-sb_MapReply_mapping-record-item_mapping-record_LocatorRecord_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_send-map-register_input":{"title":"odl-lisp-sb_send-map-register_input","type":"object","properties":{"MapRegister":{"$ref":"#/components/schemas/odl-lisp-sb_MapRegister"},"transport-address":{"$ref":"#/components/schemas/odl-lisp-sb_transport-address"}},"xml":{"name":"input","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRegister":{"title":"odl-lisp-sb_MapRegister","type":"object","properties":{"authenticationData":{"description":"","type":"string","format":"byte"},"mergeEnabled":{"description":"","type":"boolean","example":true},"xtrId":{"description":"","type":"string","format":"byte"},"mapping-record-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-lisp-sb_MapRegister_mapping-record-item"},"description":""},"wantMapNotify":{"description":"","type":"boolean","example":true},"xtrSiteIdPresent":{"description":"","type":"boolean","example":true},"keyId":{"description":"","type":"integer","format":"int32","example":-32768},"siteId":{"description":"","type":"string","format":"byte"},"proxyMapReply":{"description":"","type":"boolean","example":true},"nonce":{"description":"","type":"integer","format":"int64","example":-9223372036854775808}},"xml":{"name":"MapRegister","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRegister_mapping-record-item":{"title":"odl-lisp-sb_MapRegister_mapping-record-item","type":"object","properties":{"mapping-record-item-id":{"description":"","type":"string","example":"Some mapping-record-item-id"},"mapping-record":{"$ref":"#/components/schemas/odl-lisp-sb_MapRegister_mapping-record-item_mapping-record"}},"xml":{"name":"mapping-record-item","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRegister_mapping-record-item_mapping-record":{"title":"odl-lisp-sb_MapRegister_mapping-record-item_mapping-record","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-lisp-sb_MapRegister_mapping-record-item_mapping-record_eid"},"recordTtl":{"description":"A mapping record's time to live in Minute(s)","type":"integer","format":"int32","example":-2147483648},"authoritative":{"description":"","type":"boolean","example":true},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"mapVersion":{"description":"","type":"integer","format":"int32","example":-32768},"action":{"description":"","type":"string","enum":["NoAction","NativelyForward","SendMapRequest","Drop"],"example":"NoAction"},"site-id":{"description":"64 bit site identifier.","type":"string","format":"byte"},"xtr-id":{"description":"128 bit xTR identifier.","type":"string","format":"byte"},"timestamp":{"description":"Milliseconds since January 1, 1970, 00:00:00 GMT","type":"integer","format":"int64","example":-9223372036854775808},"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-lisp-sb_MapRegister_mapping-record-item_mapping-record_LocatorRecord"},"description":""}},"required":["eid"],"xml":{"name":"mapping-record","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRegister_mapping-record-item_mapping-record_eid":{"title":"odl-lisp-sb_MapRegister_mapping-record-item_mapping-record_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRegister_mapping-record-item_mapping-record_LocatorRecord":{"title":"odl-lisp-sb_MapRegister_mapping-record-item_mapping-record_LocatorRecord","type":"object","properties":{"routed":{"description":"","type":"boolean","example":true},"multicastWeight":{"description":"","type":"integer","format":"int32","example":0},"multicastPriority":{"description":"","type":"integer","format":"int32","example":0},"localLocator":{"description":"","type":"boolean","example":true},"locator-id":{"description":"","type":"string","example":"Some locator-id"},"weight":{"description":"","type":"integer","format":"int32","example":0},"rloc":{"$ref":"#/components/schemas/odl-lisp-sb_MapRegister_mapping-record-item_mapping-record_LocatorRecord_rloc"},"priority":{"description":"","type":"integer","format":"int32","example":0},"rlocProbed":{"description":"","type":"boolean","example":true}},"required":["rloc"],"xml":{"name":"LocatorRecord","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapRegister_mapping-record-item_mapping-record_LocatorRecord_rloc":{"title":"odl-lisp-sb_MapRegister_mapping-record-item_mapping-record_LocatorRecord_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_send-map-notify_input":{"title":"odl-lisp-sb_send-map-notify_input","type":"object","properties":{"MapNotify":{"$ref":"#/components/schemas/odl-lisp-sb_MapNotify"},"transport-address":{"$ref":"#/components/schemas/odl-lisp-sb_transport-address"}},"xml":{"name":"input","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapNotify":{"title":"odl-lisp-sb_MapNotify","type":"object","properties":{"authenticationData":{"description":"","type":"string","format":"byte"},"mergeEnabled":{"description":"","type":"boolean","example":true},"xtrId":{"description":"","type":"string","format":"byte"},"mapping-record-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-lisp-sb_MapNotify_mapping-record-item"},"description":""},"xtrSiteIdPresent":{"description":"","type":"boolean","example":true},"keyId":{"description":"","type":"integer","format":"int32","example":-32768},"siteId":{"description":"","type":"string","format":"byte"},"nonce":{"description":"","type":"integer","format":"int64","example":-9223372036854775808}},"xml":{"name":"MapNotify","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapNotify_mapping-record-item":{"title":"odl-lisp-sb_MapNotify_mapping-record-item","type":"object","properties":{"mapping-record-item-id":{"description":"","type":"string","example":"Some mapping-record-item-id"},"mapping-record":{"$ref":"#/components/schemas/odl-lisp-sb_MapNotify_mapping-record-item_mapping-record"}},"xml":{"name":"mapping-record-item","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapNotify_mapping-record-item_mapping-record":{"title":"odl-lisp-sb_MapNotify_mapping-record-item_mapping-record","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-lisp-sb_MapNotify_mapping-record-item_mapping-record_eid"},"recordTtl":{"description":"A mapping record's time to live in Minute(s)","type":"integer","format":"int32","example":-2147483648},"authoritative":{"description":"","type":"boolean","example":true},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"mapVersion":{"description":"","type":"integer","format":"int32","example":-32768},"action":{"description":"","type":"string","enum":["NoAction","NativelyForward","SendMapRequest","Drop"],"example":"NoAction"},"site-id":{"description":"64 bit site identifier.","type":"string","format":"byte"},"xtr-id":{"description":"128 bit xTR identifier.","type":"string","format":"byte"},"timestamp":{"description":"Milliseconds since January 1, 1970, 00:00:00 GMT","type":"integer","format":"int64","example":-9223372036854775808},"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-lisp-sb_MapNotify_mapping-record-item_mapping-record_LocatorRecord"},"description":""}},"required":["eid"],"xml":{"name":"mapping-record","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapNotify_mapping-record-item_mapping-record_eid":{"title":"odl-lisp-sb_MapNotify_mapping-record-item_mapping-record_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapNotify_mapping-record-item_mapping-record_LocatorRecord":{"title":"odl-lisp-sb_MapNotify_mapping-record-item_mapping-record_LocatorRecord","type":"object","properties":{"routed":{"description":"","type":"boolean","example":true},"multicastWeight":{"description":"","type":"integer","format":"int32","example":0},"multicastPriority":{"description":"","type":"integer","format":"int32","example":0},"localLocator":{"description":"","type":"boolean","example":true},"locator-id":{"description":"","type":"string","example":"Some locator-id"},"weight":{"description":"","type":"integer","format":"int32","example":0},"rloc":{"$ref":"#/components/schemas/odl-lisp-sb_MapNotify_mapping-record-item_mapping-record_LocatorRecord_rloc"},"priority":{"description":"","type":"integer","format":"int32","example":0},"rlocProbed":{"description":"","type":"boolean","example":true}},"required":["rloc"],"xml":{"name":"LocatorRecord","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_MapNotify_mapping-record-item_mapping-record_LocatorRecord_rloc":{"title":"odl-lisp-sb_MapNotify_mapping-record-item_mapping-record_LocatorRecord_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_get-stats_output":{"title":"odl-lisp-sb_get-stats_output","type":"object","properties":{"control-message-stats":{"$ref":"#/components/schemas/odl-lisp-sb_control-message-stats"},"map-register-cache-stats":{"$ref":"#/components/schemas/odl-lisp-sb_map-register-cache-stats"}},"xml":{"name":"output","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_control-message-stats":{"title":"odl-lisp-sb_control-message-stats","type":"object","properties":{"rx-unknown":{"description":"","type":"integer","format":"int64","example":-9223372036854775808},"tx-errors":{"description":"","type":"integer","format":"int64","example":-9223372036854775808},"control-message":{"type":"array","items":{"$ref":"#/components/schemas/odl-lisp-sb_control-message-stats_control-message"},"description":""}},"xml":{"name":"control-message-stats","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_control-message-stats_control-message":{"title":"odl-lisp-sb_control-message-stats_control-message","type":"object","properties":{"tx-count":{"description":"","type":"integer","format":"int64","example":-9223372036854775808},"msg-type":{"description":"","type":"string","enum":["reserved","map-request","map-reply","map-register","map-notify","map-referral","info","encapsulated-control-message"],"example":"reserved"},"rx-count":{"description":"","type":"integer","format":"int64","example":-9223372036854775808}},"xml":{"name":"control-message","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-lisp-sb_map-register-cache-stats":{"title":"odl-lisp-sb_map-register-cache-stats","type":"object","properties":{"hits":{"description":"","type":"integer","format":"int64","example":-9223372036854775808},"misses":{"description":"","type":"integer","format":"int64","example":-9223372036854775808}},"xml":{"name":"map-register-cache-stats","namespace":"urn:opendaylight:lfm:lisp-sb"}},"odl-mappingservice_add-key_input":{"title":"odl-mappingservice_add-key_input","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid"},"mapping-authkey":{"$ref":"#/components/schemas/odl-mappingservice_mapping-authkey"}},"required":["eid"],"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid":{"title":"odl-mappingservice_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-authkey":{"title":"odl-mappingservice_mapping-authkey","type":"object","properties":{"key-string":{"description":"","type":"string","example":"Some key-string"},"key-type":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"mapping-authkey","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_get-key_input":{"title":"odl-mappingservice_get-key_input","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid1"}},"required":["eid"],"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid1":{"title":"odl-mappingservice_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_get-key_output":{"title":"odl-mappingservice_get-key_output","type":"object","properties":{"mapping-authkey":{"$ref":"#/components/schemas/odl-mappingservice_mapping-authkey"}},"xml":{"name":"output","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_update-key_input":{"title":"odl-mappingservice_update-key_input","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid2"},"mapping-authkey":{"$ref":"#/components/schemas/odl-mappingservice_mapping-authkey"}},"required":["eid"],"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid2":{"title":"odl-mappingservice_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_remove-key_input":{"title":"odl-mappingservice_remove-key_input","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid3"}},"required":["eid"],"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid3":{"title":"odl-mappingservice_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_add-mapping_input":{"title":"odl-mappingservice_add-mapping_input","type":"object","properties":{"mapping-record":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record"}},"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record":{"title":"odl-mappingservice_mapping-record","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record_eid"},"recordTtl":{"description":"A mapping record's time to live in Minute(s)","type":"integer","format":"int32","example":-2147483648},"authoritative":{"description":"","type":"boolean","example":true},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"mapVersion":{"description":"","type":"integer","format":"int32","example":-32768},"action":{"description":"","type":"string","enum":["NoAction","NativelyForward","SendMapRequest","Drop"],"example":"NoAction"},"site-id":{"description":"64 bit site identifier.","type":"string","format":"byte"},"xtr-id":{"description":"128 bit xTR identifier.","type":"string","format":"byte"},"timestamp":{"description":"Milliseconds since January 1, 1970, 00:00:00 GMT","type":"integer","format":"int64","example":-9223372036854775808},"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record_LocatorRecord"},"description":""}},"required":["eid"],"xml":{"name":"mapping-record","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record_eid":{"title":"odl-mappingservice_mapping-record_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record_LocatorRecord":{"title":"odl-mappingservice_mapping-record_LocatorRecord","type":"object","properties":{"routed":{"description":"","type":"boolean","example":true},"multicastWeight":{"description":"","type":"integer","format":"int32","example":0},"multicastPriority":{"description":"","type":"integer","format":"int32","example":0},"localLocator":{"description":"","type":"boolean","example":true},"locator-id":{"description":"","type":"string","example":"Some locator-id"},"weight":{"description":"","type":"integer","format":"int32","example":0},"rloc":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record_LocatorRecord_rloc"},"priority":{"description":"","type":"integer","format":"int32","example":0},"rlocProbed":{"description":"","type":"boolean","example":true}},"required":["rloc"],"xml":{"name":"LocatorRecord","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record_LocatorRecord_rloc":{"title":"odl-mappingservice_mapping-record_LocatorRecord_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_get-mapping_input":{"title":"odl-mappingservice_get-mapping_input","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid4"}},"required":["eid"],"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid4":{"title":"odl-mappingservice_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_get-mapping_output":{"title":"odl-mappingservice_get-mapping_output","type":"object","properties":{"mapping-record":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record1"}},"xml":{"name":"output","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record1":{"title":"odl-mappingservice_mapping-record","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record_eid1"},"recordTtl":{"description":"A mapping record's time to live in Minute(s)","type":"integer","format":"int32","example":-2147483648},"authoritative":{"description":"","type":"boolean","example":true},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"mapVersion":{"description":"","type":"integer","format":"int32","example":-32768},"action":{"description":"","type":"string","enum":["NoAction","NativelyForward","SendMapRequest","Drop"],"example":"NoAction"},"site-id":{"description":"64 bit site identifier.","type":"string","format":"byte"},"xtr-id":{"description":"128 bit xTR identifier.","type":"string","format":"byte"},"timestamp":{"description":"Milliseconds since January 1, 1970, 00:00:00 GMT","type":"integer","format":"int64","example":-9223372036854775808},"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record_LocatorRecord1"},"description":""}},"required":["eid"],"xml":{"name":"mapping-record","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record_eid1":{"title":"odl-mappingservice_mapping-record_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record_LocatorRecord1":{"title":"odl-mappingservice_mapping-record_LocatorRecord","type":"object","properties":{"routed":{"description":"","type":"boolean","example":true},"multicastWeight":{"description":"","type":"integer","format":"int32","example":0},"multicastPriority":{"description":"","type":"integer","format":"int32","example":0},"localLocator":{"description":"","type":"boolean","example":true},"locator-id":{"description":"","type":"string","example":"Some locator-id"},"weight":{"description":"","type":"integer","format":"int32","example":0},"rloc":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record_LocatorRecord_rloc1"},"priority":{"description":"","type":"integer","format":"int32","example":0},"rlocProbed":{"description":"","type":"boolean","example":true}},"required":["rloc"],"xml":{"name":"LocatorRecord","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record_LocatorRecord_rloc1":{"title":"odl-mappingservice_mapping-record_LocatorRecord_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_get-mapping-with-xtr-id_input":{"title":"odl-mappingservice_get-mapping-with-xtr-id_input","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid5"},"xtr-id":{"description":"","type":"string","format":"byte"}},"required":["eid"],"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid5":{"title":"odl-mappingservice_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_get-mapping-with-xtr-id_output":{"title":"odl-mappingservice_get-mapping-with-xtr-id_output","type":"object","properties":{"mapping-record":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record2"}},"xml":{"name":"output","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record2":{"title":"odl-mappingservice_mapping-record","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record_eid2"},"recordTtl":{"description":"A mapping record's time to live in Minute(s)","type":"integer","format":"int32","example":-2147483648},"authoritative":{"description":"","type":"boolean","example":true},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"mapVersion":{"description":"","type":"integer","format":"int32","example":-32768},"action":{"description":"","type":"string","enum":["NoAction","NativelyForward","SendMapRequest","Drop"],"example":"NoAction"},"site-id":{"description":"64 bit site identifier.","type":"string","format":"byte"},"xtr-id":{"description":"128 bit xTR identifier.","type":"string","format":"byte"},"timestamp":{"description":"Milliseconds since January 1, 1970, 00:00:00 GMT","type":"integer","format":"int64","example":-9223372036854775808},"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record_LocatorRecord2"},"description":""}},"required":["eid"],"xml":{"name":"mapping-record","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record_eid2":{"title":"odl-mappingservice_mapping-record_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record_LocatorRecord2":{"title":"odl-mappingservice_mapping-record_LocatorRecord","type":"object","properties":{"routed":{"description":"","type":"boolean","example":true},"multicastWeight":{"description":"","type":"integer","format":"int32","example":0},"multicastPriority":{"description":"","type":"integer","format":"int32","example":0},"localLocator":{"description":"","type":"boolean","example":true},"locator-id":{"description":"","type":"string","example":"Some locator-id"},"weight":{"description":"","type":"integer","format":"int32","example":0},"rloc":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record_LocatorRecord_rloc2"},"priority":{"description":"","type":"integer","format":"int32","example":0},"rlocProbed":{"description":"","type":"boolean","example":true}},"required":["rloc"],"xml":{"name":"LocatorRecord","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record_LocatorRecord_rloc2":{"title":"odl-mappingservice_mapping-record_LocatorRecord_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_update-mapping_input":{"title":"odl-mappingservice_update-mapping_input","type":"object","properties":{"mapping-record":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record3"}},"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record3":{"title":"odl-mappingservice_mapping-record","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record_eid3"},"recordTtl":{"description":"A mapping record's time to live in Minute(s)","type":"integer","format":"int32","example":-2147483648},"authoritative":{"description":"","type":"boolean","example":true},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"mapVersion":{"description":"","type":"integer","format":"int32","example":-32768},"action":{"description":"","type":"string","enum":["NoAction","NativelyForward","SendMapRequest","Drop"],"example":"NoAction"},"site-id":{"description":"64 bit site identifier.","type":"string","format":"byte"},"xtr-id":{"description":"128 bit xTR identifier.","type":"string","format":"byte"},"timestamp":{"description":"Milliseconds since January 1, 1970, 00:00:00 GMT","type":"integer","format":"int64","example":-9223372036854775808},"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record_LocatorRecord3"},"description":""}},"required":["eid"],"xml":{"name":"mapping-record","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record_eid3":{"title":"odl-mappingservice_mapping-record_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record_LocatorRecord3":{"title":"odl-mappingservice_mapping-record_LocatorRecord","type":"object","properties":{"routed":{"description":"","type":"boolean","example":true},"multicastWeight":{"description":"","type":"integer","format":"int32","example":0},"multicastPriority":{"description":"","type":"integer","format":"int32","example":0},"localLocator":{"description":"","type":"boolean","example":true},"locator-id":{"description":"","type":"string","example":"Some locator-id"},"weight":{"description":"","type":"integer","format":"int32","example":0},"rloc":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record_LocatorRecord_rloc3"},"priority":{"description":"","type":"integer","format":"int32","example":0},"rlocProbed":{"description":"","type":"boolean","example":true}},"required":["rloc"],"xml":{"name":"LocatorRecord","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record_LocatorRecord_rloc3":{"title":"odl-mappingservice_mapping-record_LocatorRecord_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_remove-mapping_input":{"title":"odl-mappingservice_remove-mapping_input","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid6"}},"required":["eid"],"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid6":{"title":"odl-mappingservice_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_add-keys_input":{"title":"odl-mappingservice_add-keys_input","type":"object","properties":{"eid-authkey-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_eid-authkey-item"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-authkey-item":{"title":"odl-mappingservice_eid-authkey-item","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid-authkey-item_eid"},"eid-authkey-item-id":{"description":"","type":"string","example":"Some eid-authkey-item-id"},"mapping-authkey":{"$ref":"#/components/schemas/odl-mappingservice_eid-authkey-item_mapping-authkey"}},"required":["eid"],"xml":{"name":"eid-authkey-item","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-authkey-item_mapping-authkey":{"title":"odl-mappingservice_eid-authkey-item_mapping-authkey","type":"object","properties":{"key-string":{"description":"","type":"string","example":"Some key-string"},"key-type":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"mapping-authkey","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-authkey-item_eid":{"title":"odl-mappingservice_eid-authkey-item_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_get-keys_input":{"title":"odl-mappingservice_get-keys_input","type":"object","properties":{"eid-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_eid-item"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-item":{"title":"odl-mappingservice_eid-item","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid-item_eid"},"eid-item-id":{"description":"","type":"string","example":"Some eid-item-id"}},"required":["eid"],"xml":{"name":"eid-item","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-item_eid":{"title":"odl-mappingservice_eid-item_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_get-keys_output":{"title":"odl-mappingservice_get-keys_output","type":"object","properties":{"eid-authkey-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_eid-authkey-item1"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-authkey-item1":{"title":"odl-mappingservice_eid-authkey-item","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid-authkey-item_eid1"},"eid-authkey-item-id":{"description":"","type":"string","example":"Some eid-authkey-item-id"},"mapping-authkey":{"$ref":"#/components/schemas/odl-mappingservice_eid-authkey-item_mapping-authkey"}},"required":["eid"],"xml":{"name":"eid-authkey-item","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-authkey-item_eid1":{"title":"odl-mappingservice_eid-authkey-item_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_update-keys_input":{"title":"odl-mappingservice_update-keys_input","type":"object","properties":{"eid-authkey-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_eid-authkey-item2"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-authkey-item2":{"title":"odl-mappingservice_eid-authkey-item","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid-authkey-item_eid2"},"eid-authkey-item-id":{"description":"","type":"string","example":"Some eid-authkey-item-id"},"mapping-authkey":{"$ref":"#/components/schemas/odl-mappingservice_eid-authkey-item_mapping-authkey"}},"required":["eid"],"xml":{"name":"eid-authkey-item","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-authkey-item_eid2":{"title":"odl-mappingservice_eid-authkey-item_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_remove-keys_input":{"title":"odl-mappingservice_remove-keys_input","type":"object","properties":{"eid-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_eid-item1"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-item1":{"title":"odl-mappingservice_eid-item","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid-item_eid1"},"eid-item-id":{"description":"","type":"string","example":"Some eid-item-id"}},"required":["eid"],"xml":{"name":"eid-item","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-item_eid1":{"title":"odl-mappingservice_eid-item_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_add-mappings_input":{"title":"odl-mappingservice_add-mappings_input","type":"object","properties":{"mapping-record-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item":{"title":"odl-mappingservice_mapping-record-item","type":"object","properties":{"mapping-record-item-id":{"description":"","type":"string","example":"Some mapping-record-item-id"},"mapping-record":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record"}},"xml":{"name":"mapping-record-item","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record":{"title":"odl-mappingservice_mapping-record-item_mapping-record","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record_eid"},"recordTtl":{"description":"A mapping record's time to live in Minute(s)","type":"integer","format":"int32","example":-2147483648},"authoritative":{"description":"","type":"boolean","example":true},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"mapVersion":{"description":"","type":"integer","format":"int32","example":-32768},"action":{"description":"","type":"string","enum":["NoAction","NativelyForward","SendMapRequest","Drop"],"example":"NoAction"},"site-id":{"description":"64 bit site identifier.","type":"string","format":"byte"},"xtr-id":{"description":"128 bit xTR identifier.","type":"string","format":"byte"},"timestamp":{"description":"Milliseconds since January 1, 1970, 00:00:00 GMT","type":"integer","format":"int64","example":-9223372036854775808},"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord"},"description":""}},"required":["eid"],"xml":{"name":"mapping-record","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record_eid":{"title":"odl-mappingservice_mapping-record-item_mapping-record_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord":{"title":"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord","type":"object","properties":{"routed":{"description":"","type":"boolean","example":true},"multicastWeight":{"description":"","type":"integer","format":"int32","example":0},"multicastPriority":{"description":"","type":"integer","format":"int32","example":0},"localLocator":{"description":"","type":"boolean","example":true},"locator-id":{"description":"","type":"string","example":"Some locator-id"},"weight":{"description":"","type":"integer","format":"int32","example":0},"rloc":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord_rloc"},"priority":{"description":"","type":"integer","format":"int32","example":0},"rlocProbed":{"description":"","type":"boolean","example":true}},"required":["rloc"],"xml":{"name":"LocatorRecord","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord_rloc":{"title":"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_get-mappings_input":{"title":"odl-mappingservice_get-mappings_input","type":"object","properties":{"eid-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_eid-item2"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-item2":{"title":"odl-mappingservice_eid-item","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid-item_eid2"},"eid-item-id":{"description":"","type":"string","example":"Some eid-item-id"}},"required":["eid"],"xml":{"name":"eid-item","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-item_eid2":{"title":"odl-mappingservice_eid-item_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_get-mappings_output":{"title":"odl-mappingservice_get-mappings_output","type":"object","properties":{"mapping-record-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item1"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item1":{"title":"odl-mappingservice_mapping-record-item","type":"object","properties":{"mapping-record-item-id":{"description":"","type":"string","example":"Some mapping-record-item-id"},"mapping-record":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record1"}},"xml":{"name":"mapping-record-item","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record1":{"title":"odl-mappingservice_mapping-record-item_mapping-record","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record_eid1"},"recordTtl":{"description":"A mapping record's time to live in Minute(s)","type":"integer","format":"int32","example":-2147483648},"authoritative":{"description":"","type":"boolean","example":true},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"mapVersion":{"description":"","type":"integer","format":"int32","example":-32768},"action":{"description":"","type":"string","enum":["NoAction","NativelyForward","SendMapRequest","Drop"],"example":"NoAction"},"site-id":{"description":"64 bit site identifier.","type":"string","format":"byte"},"xtr-id":{"description":"128 bit xTR identifier.","type":"string","format":"byte"},"timestamp":{"description":"Milliseconds since January 1, 1970, 00:00:00 GMT","type":"integer","format":"int64","example":-9223372036854775808},"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord1"},"description":""}},"required":["eid"],"xml":{"name":"mapping-record","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record_eid1":{"title":"odl-mappingservice_mapping-record-item_mapping-record_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord1":{"title":"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord","type":"object","properties":{"routed":{"description":"","type":"boolean","example":true},"multicastWeight":{"description":"","type":"integer","format":"int32","example":0},"multicastPriority":{"description":"","type":"integer","format":"int32","example":0},"localLocator":{"description":"","type":"boolean","example":true},"locator-id":{"description":"","type":"string","example":"Some locator-id"},"weight":{"description":"","type":"integer","format":"int32","example":0},"rloc":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord_rloc1"},"priority":{"description":"","type":"integer","format":"int32","example":0},"rlocProbed":{"description":"","type":"boolean","example":true}},"required":["rloc"],"xml":{"name":"LocatorRecord","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord_rloc1":{"title":"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_update-mappings_input":{"title":"odl-mappingservice_update-mappings_input","type":"object","properties":{"mapping-record-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item2"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item2":{"title":"odl-mappingservice_mapping-record-item","type":"object","properties":{"mapping-record-item-id":{"description":"","type":"string","example":"Some mapping-record-item-id"},"mapping-record":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record2"}},"xml":{"name":"mapping-record-item","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record2":{"title":"odl-mappingservice_mapping-record-item_mapping-record","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record_eid2"},"recordTtl":{"description":"A mapping record's time to live in Minute(s)","type":"integer","format":"int32","example":-2147483648},"authoritative":{"description":"","type":"boolean","example":true},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"mapVersion":{"description":"","type":"integer","format":"int32","example":-32768},"action":{"description":"","type":"string","enum":["NoAction","NativelyForward","SendMapRequest","Drop"],"example":"NoAction"},"site-id":{"description":"64 bit site identifier.","type":"string","format":"byte"},"xtr-id":{"description":"128 bit xTR identifier.","type":"string","format":"byte"},"timestamp":{"description":"Milliseconds since January 1, 1970, 00:00:00 GMT","type":"integer","format":"int64","example":-9223372036854775808},"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord2"},"description":""}},"required":["eid"],"xml":{"name":"mapping-record","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record_eid2":{"title":"odl-mappingservice_mapping-record-item_mapping-record_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord2":{"title":"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord","type":"object","properties":{"routed":{"description":"","type":"boolean","example":true},"multicastWeight":{"description":"","type":"integer","format":"int32","example":0},"multicastPriority":{"description":"","type":"integer","format":"int32","example":0},"localLocator":{"description":"","type":"boolean","example":true},"locator-id":{"description":"","type":"string","example":"Some locator-id"},"weight":{"description":"","type":"integer","format":"int32","example":0},"rloc":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord_rloc2"},"priority":{"description":"","type":"integer","format":"int32","example":0},"rlocProbed":{"description":"","type":"boolean","example":true}},"required":["rloc"],"xml":{"name":"LocatorRecord","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord_rloc2":{"title":"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_remove-mappings_input":{"title":"odl-mappingservice_remove-mappings_input","type":"object","properties":{"eid-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_eid-item3"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-item3":{"title":"odl-mappingservice_eid-item","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid-item_eid3"},"eid-item-id":{"description":"","type":"string","example":"Some eid-item-id"}},"required":["eid"],"xml":{"name":"eid-item","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-item_eid3":{"title":"odl-mappingservice_eid-item_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_get-all-keys_output":{"title":"odl-mappingservice_get-all-keys_output","type":"object","properties":{"eid-authkey-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_eid-authkey-item3"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-authkey-item3":{"title":"odl-mappingservice_eid-authkey-item","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_eid-authkey-item_eid3"},"eid-authkey-item-id":{"description":"","type":"string","example":"Some eid-authkey-item-id"},"mapping-authkey":{"$ref":"#/components/schemas/odl-mappingservice_eid-authkey-item_mapping-authkey"}},"required":["eid"],"xml":{"name":"eid-authkey-item","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_eid-authkey-item_eid3":{"title":"odl-mappingservice_eid-authkey-item_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_get-all-mappings_output":{"title":"odl-mappingservice_get-all-mappings_output","type":"object","properties":{"mapping-record-item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item3"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item3":{"title":"odl-mappingservice_mapping-record-item","type":"object","properties":{"mapping-record-item-id":{"description":"","type":"string","example":"Some mapping-record-item-id"},"mapping-record":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record3"}},"xml":{"name":"mapping-record-item","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record3":{"title":"odl-mappingservice_mapping-record-item_mapping-record","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record_eid3"},"recordTtl":{"description":"A mapping record's time to live in Minute(s)","type":"integer","format":"int32","example":-2147483648},"authoritative":{"description":"","type":"boolean","example":true},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"mapVersion":{"description":"","type":"integer","format":"int32","example":-32768},"action":{"description":"","type":"string","enum":["NoAction","NativelyForward","SendMapRequest","Drop"],"example":"NoAction"},"site-id":{"description":"64 bit site identifier.","type":"string","format":"byte"},"xtr-id":{"description":"128 bit xTR identifier.","type":"string","format":"byte"},"timestamp":{"description":"Milliseconds since January 1, 1970, 00:00:00 GMT","type":"integer","format":"int64","example":-9223372036854775808},"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord3"},"description":""}},"required":["eid"],"xml":{"name":"mapping-record","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record_eid3":{"title":"odl-mappingservice_mapping-record-item_mapping-record_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord3":{"title":"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord","type":"object","properties":{"routed":{"description":"","type":"boolean","example":true},"multicastWeight":{"description":"","type":"integer","format":"int32","example":0},"multicastPriority":{"description":"","type":"integer","format":"int32","example":0},"localLocator":{"description":"","type":"boolean","example":true},"locator-id":{"description":"","type":"string","example":"Some locator-id"},"weight":{"description":"","type":"integer","format":"int32","example":0},"rloc":{"$ref":"#/components/schemas/odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord_rloc3"},"priority":{"description":"","type":"integer","format":"int32","example":0},"rlocProbed":{"description":"","type":"boolean","example":true}},"required":["rloc"],"xml":{"name":"LocatorRecord","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord_rloc3":{"title":"odl-mappingservice_mapping-record-item_mapping-record_LocatorRecord_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database":{"title":"odl-mappingservice_mapping-database","type":"object","description":"The LISP EID-to-RLOC mapping database","properties":{"virtual-network-identifier":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier"},"description":"A list of Virtual Network Identifiers"}},"xml":{"name":"mapping-database","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_virtual-network-identifier":{"title":"odl-mappingservice_mapping-database_virtual-network-identifier","type":"object","description":"A list of Virtual Network Identifiers","properties":{"vni":{"description":"The 24-bit Virtual Network Identifier","type":"string","example":"Some vni"},"mapping":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping"},"description":"A list of EID-to-RLOC mappings within the same Instance ID"},"authentication-key":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key"},"description":"A list of authentication keys for EID prefixes within the same Virtual Network Identifier"}},"xml":{"name":"virtual-network-identifier","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_virtual-network-identifier_mapping":{"title":"odl-mappingservice_mapping-database_virtual-network-identifier_mapping","type":"object","description":"A list of EID-to-RLOC mappings within the same Instance ID","properties":{"eid-uri":{"description":"","type":"string","example":"Some eid-uri"},"origin":{"description":"Mapping origin","type":"string","enum":["northbound","southbound"],"example":"northbound"},"mapping-record":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record"},"site-id":{"type":"array","items":{"type":"string","format":"byte"},"description":"Site ID"}},"xml":{"name":"mapping","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping":{"title":"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping","type":"object","description":"A list of xTR-IDs with their associated mappings","properties":{"xtr-id-uri":{"description":"","type":"string","example":"Some xtr-id-uri"},"mapping-record":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record"}},"xml":{"name":"xtr-id-mapping","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record":{"title":"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_eid"},"recordTtl":{"description":"A mapping record's time to live in Minute(s)","type":"integer","format":"int32","example":-2147483648},"authoritative":{"description":"","type":"boolean","example":true},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"mapVersion":{"description":"","type":"integer","format":"int32","example":-32768},"action":{"description":"","type":"string","enum":["NoAction","NativelyForward","SendMapRequest","Drop"],"example":"NoAction"},"site-id":{"description":"64 bit site identifier.","type":"string","format":"byte"},"xtr-id":{"description":"128 bit xTR identifier.","type":"string","format":"byte"},"timestamp":{"description":"Milliseconds since January 1, 1970, 00:00:00 GMT","type":"integer","format":"int64","example":-9223372036854775808},"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_LocatorRecord"},"description":""}},"required":["eid"],"xml":{"name":"mapping-record","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_eid":{"title":"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_LocatorRecord":{"title":"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_LocatorRecord","type":"object","properties":{"routed":{"description":"","type":"boolean","example":true},"multicastWeight":{"description":"","type":"integer","format":"int32","example":0},"multicastPriority":{"description":"","type":"integer","format":"int32","example":0},"localLocator":{"description":"","type":"boolean","example":true},"locator-id":{"description":"","type":"string","example":"Some locator-id"},"weight":{"description":"","type":"integer","format":"int32","example":0},"rloc":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_LocatorRecord_rloc"},"priority":{"description":"","type":"integer","format":"int32","example":0},"rlocProbed":{"description":"","type":"boolean","example":true}},"required":["rloc"],"xml":{"name":"LocatorRecord","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_LocatorRecord_rloc":{"title":"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_xtr-id-mapping_mapping-record_LocatorRecord_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record":{"title":"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record","type":"object","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_eid"},"recordTtl":{"description":"A mapping record's time to live in Minute(s)","type":"integer","format":"int32","example":-2147483648},"authoritative":{"description":"","type":"boolean","example":true},"source-rloc":{"description":"The Source IP address used for sending the enclosing control\npacket in RLOC space.","type":"string","format":"byte"},"mapVersion":{"description":"","type":"integer","format":"int32","example":-32768},"action":{"description":"","type":"string","enum":["NoAction","NativelyForward","SendMapRequest","Drop"],"example":"NoAction"},"site-id":{"description":"64 bit site identifier.","type":"string","format":"byte"},"xtr-id":{"description":"128 bit xTR identifier.","type":"string","format":"byte"},"timestamp":{"description":"Milliseconds since January 1, 1970, 00:00:00 GMT","type":"integer","format":"int64","example":-9223372036854775808},"LocatorRecord":{"type":"array","items":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord"},"description":""}},"required":["eid"],"xml":{"name":"mapping-record","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_eid":{"title":"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord":{"title":"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord","type":"object","properties":{"routed":{"description":"","type":"boolean","example":true},"multicastWeight":{"description":"","type":"integer","format":"int32","example":0},"multicastPriority":{"description":"","type":"integer","format":"int32","example":0},"localLocator":{"description":"","type":"boolean","example":true},"locator-id":{"description":"","type":"string","example":"Some locator-id"},"weight":{"description":"","type":"integer","format":"int32","example":0},"rloc":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord_rloc"},"priority":{"description":"","type":"integer","format":"int32","example":0},"rlocProbed":{"description":"","type":"boolean","example":true}},"required":["rloc"],"xml":{"name":"LocatorRecord","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord_rloc":{"title":"odl-mappingservice_mapping-database_virtual-network-identifier_mapping_mapping-record_LocatorRecord_rloc","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"rloc","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key":{"title":"odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key","type":"object","description":"A list of authentication keys for EID prefixes within the same Virtual Network Identifier","properties":{"eid":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_eid"},"eid-uri":{"description":"","type":"string","example":"Some eid-uri"},"mapping-authkey":{"$ref":"#/components/schemas/odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_mapping-authkey"}},"required":["eid"],"xml":{"name":"authentication-key","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_mapping-authkey":{"title":"odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_mapping-authkey","type":"object","properties":{"key-string":{"description":"","type":"string","example":"Some key-string"},"key-type":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"mapping-authkey","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_eid":{"title":"odl-mappingservice_mapping-database_virtual-network-identifier_authentication-key_eid","type":"object","properties":{"address-type":{"description":"Type of the LISP address.","type":"string","enum":["lisp-address-family","as-number-afi","ipv6-prefix-binary-afi","ipv4-prefix-binary-afi","ipv6-afi","distinguished-name-afi","ipv4-afi","no-address-afi","ipv4-prefix-afi","ipv6-prefix-afi","lcaf","security-key-lcaf","json-data-model-lcaf","application-data-lcaf","multicast-info-lcaf","null-address-lcaf","explicit-locator-path-lcaf","nat-traversal-lcaf","opaque-key-lcaf","nonce-locator-lcaf","afi-list-lcaf","geo-coordinates-lcaf","replication-list-lcaf","service-path-lcaf","instance-id-lcaf","source-dest-key-lcaf","encapsulation-format-lcaf","key-value-address-lcaf","as-number-lcaf","ipv4-binary-afi","mac-afi","ipv6-binary-afi"],"example":"lisp-address-family"},"no-address":{"description":"No address.","type":"object"},"virtual-network-id":{"description":"Virtual Network Identifier (instance-id) of the address.","type":"integer","format":"int64","example":0}},"required":["address-type"],"xml":{"name":"eid","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mappingservice_mapping-database_last-updated":{"title":"odl-mappingservice_mapping-database_last-updated","type":"object","properties":{"last-updated":{"description":"Last database update timestamp (in milliseconds since January 1, 1970, 00:00:00 GMT)","type":"integer","format":"int64","example":-9223372036854775808}},"xml":{"name":"last-updated","namespace":"urn:opendaylight:lfm:mappingservice"}},"odl-mdsal-lowlevel-common_rpc-context":{"title":"odl-mdsal-lowlevel-common_rpc-context","type":"object","description":"Routed RPCs need to be registered with a path.\nIt has to be an instance-identifier within an accessible model,\nbut the instance does not have to be present in data tree.\nThis is config false to signal users they do not need to create any instance.","properties":{"identifier":{"description":"Users are free to refer to arbitrary strings\nif they are testing RPC regstrations to different paths.","type":"string","example":"Some identifier"}},"xml":{"name":"rpc-context","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common"}},"odl-mdsal-lowlevel-control_register-constant_input":{"title":"odl-mdsal-lowlevel-control_register-constant_input","type":"object","properties":{"constant":{"description":"The string to be returned by llt:get-constant\n(or llt:get-contexted-constant) RPC implementation.\nThe string typically includes (the context and) the name of the member\nthe user called to cause the RPC implementation registration\n(that member may be different from both the member running the implementation,\nand member where llt:get-constant is called).","type":"string","example":"Some constant"}},"required":["constant"],"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_register-bound-constant_input":{"title":"odl-mdsal-lowlevel-control_register-bound-constant_input","type":"object","properties":{"context":{"description":"The context for bound implementation of\nllt:get-contexted-constant RPC to match.\nThe extension has no data, users are free to use instance identifiers\nreferring to (non-existent) items of rpc-context list.","type":"string"},"constant":{"description":"The string to be returned by llt:get-constant\n(or llt:get-contexted-constant) RPC implementation.\nThe string typically includes (the context and) the name of the member\nthe user called to cause the RPC implementation registration\n(that member may be different from both the member running the implementation,\nand member where llt:get-constant is called).","type":"string","example":"Some constant"}},"required":["context","constant"],"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_unregister-bound-constant_input":{"title":"odl-mdsal-lowlevel-control_unregister-bound-constant_input","type":"object","properties":{"context":{"description":"The context for bound implementation of\nllt:get-contexted-constant RPC to match.\nThe extension has no data, users are free to use instance identifiers\nreferring to (non-existent) items of rpc-context list.","type":"string"}},"required":["context"],"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_register-singleton-constant_input":{"title":"odl-mdsal-lowlevel-control_register-singleton-constant_input","type":"object","properties":{"constant":{"description":"The string to be returned by llt:get-constant\n(or llt:get-contexted-constant) RPC implementation.\nThe string typically includes (the context and) the name of the member\nthe user called to cause the RPC implementation registration\n(that member may be different from both the member running the implementation,\nand member where llt:get-constant is called).","type":"string","example":"Some constant"}},"required":["constant"],"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_unregister-flapping-singleton_output":{"title":"odl-mdsal-lowlevel-control_unregister-flapping-singleton_output","type":"object","properties":{"flap-count":{"description":"Number of successful re-registrations. If negative,\n(minus) cycle number when a failure occured.","type":"integer","format":"int64","example":-9223372036854775808}},"required":["flap-count"],"xml":{"name":"output","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_start-publish-notifications_input":{"title":"odl-mdsal-lowlevel-control_start-publish-notifications_input","type":"object","properties":{"id":{"description":"Any string uniquely identifying the publisher, producer or writer,\ntypically containing the member name.","type":"string","example":"Some id"},"seconds":{"description":"This RPC has to work (roughly) this long.","type":"integer","format":"int64","example":0},"notifications-per-second":{"description":"An upper limit of publishes per second this RPC shall try to achieve.","type":"integer","format":"int64","example":0}},"required":["id","seconds","notifications-per-second"],"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_check-publish-notifications_input":{"title":"odl-mdsal-lowlevel-control_check-publish-notifications_input","type":"object","properties":{"id":{"description":"Any string uniquely identifying the publisher, producer or writer,\ntypically containing the member name.","type":"string","example":"Some id"}},"required":["id"],"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_check-publish-notifications_output":{"title":"odl-mdsal-lowlevel-control_check-publish-notifications_output","type":"object","properties":{"active":{"description":"True if a publishing task for this id is running, false otherwise.","type":"boolean","example":true},"publish-count":{"description":"How many notifications were published for this id since last start.\nIf there was no start-publish-notifications call for this id, this leaf is absent.","type":"integer","format":"int64","example":-9223372036854775808},"last-error":{"description":"If no task has been started by start-publish-notifications for this id,\nor if the last such call has not encountered an error, this leaf is absent.\nOtherwise it contains a string message from the last error, including stacktrace if possible.","type":"string","example":"Some last-error"}},"required":["active"],"xml":{"name":"output","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_subscribe-ynl_input":{"title":"odl-mdsal-lowlevel-control_subscribe-ynl_input","type":"object","properties":{"id":{"description":"Any string uniquely identifying the publisher, producer or writer,\ntypically containing the member name.","type":"string","example":"Some id"}},"required":["id"],"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_unsubscribe-ynl_input":{"title":"odl-mdsal-lowlevel-control_unsubscribe-ynl_input","type":"object","properties":{"id":{"description":"Any string uniquely identifying the publisher, producer or writer,\ntypically containing the member name.","type":"string","example":"Some id"}},"required":["id"],"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_unsubscribe-ynl_output":{"title":"odl-mdsal-lowlevel-control_unsubscribe-ynl_output","type":"object","properties":{"all-not":{"description":"Number of received id-sequence notifications of any id.","type":"integer","format":"int64","example":-9223372036854775808},"id-not":{"description":"Number of received id-sequence notifications of matching id\nand any sequence number.","type":"integer","format":"int64","example":-9223372036854775808},"err-not":{"description":"Number of received id-sequence notifications of matching id,\nbut out-of-order sequence number.","type":"integer","format":"int64","example":-9223372036854775808},"local-number":{"description":"Value of the local number, should be equal to\nthe sequence number of the last compatible id-sequence notification received.","type":"integer","format":"int64","example":-9223372036854775808}},"required":["all-not","id-not","err-not","local-number"],"xml":{"name":"output","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_write-transactions_input":{"title":"odl-mdsal-lowlevel-control_write-transactions_input","type":"object","properties":{"id":{"description":"Any string uniquely identifying the publisher, producer or writer,\ntypically containing the member name.","type":"string","example":"Some id"},"seconds":{"description":"This RPC has to work (roughly) this long.","type":"integer","format":"int64","example":0},"transactions-per-second":{"description":"An upper limit of transactions per second this RPC shall try to achieve.","type":"integer","format":"int64","example":0},"chained-transactions":{"description":"If true, write transactions shall be created on a transaction chain,\n(created at start of the RPC call, and deleted at at its end).\nIf false, write transactions shall be created separately.","type":"boolean","example":true}},"required":["id","seconds","transactions-per-second","chained-transactions"],"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_write-transactions_output":{"title":"odl-mdsal-lowlevel-control_write-transactions_output","type":"object","properties":{"all-tx":{"description":"Number of all transactions executed.","type":"integer","format":"int64","example":-9223372036854775808},"insert-tx":{"description":"Number of transactions that inserted data.","type":"integer","format":"int64","example":-9223372036854775808},"delete-tx":{"description":"Number of transactions that deleted data.","type":"integer","format":"int64","example":-9223372036854775808}},"required":["all-tx","insert-tx","delete-tx"],"xml":{"name":"output","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_remove-shard-replica_input":{"title":"odl-mdsal-lowlevel-control_remove-shard-replica_input","type":"object","properties":{"shard-name":{"description":"The name of the config shard for which\nto remove the replica on the current member.","type":"string","example":"Some shard-name"}},"required":["shard-name"],"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_add-shard-replica_input":{"title":"odl-mdsal-lowlevel-control_add-shard-replica_input","type":"object","properties":{"shard-name":{"description":"The name of the config shard for which\nto add the replica on the current member.","type":"string","example":"Some shard-name"}},"required":["shard-name"],"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_is-client-aborted_output":{"title":"odl-mdsal-lowlevel-control_is-client-aborted_output","type":"object","properties":{"aborted":{"description":"True if the local client is aborted (or unreachable), false otherwise.","type":"boolean","example":true}},"required":["aborted"],"xml":{"name":"output","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_unsubscribe-dtcl_output":{"title":"odl-mdsal-lowlevel-control_unsubscribe-dtcl_output","type":"object","properties":{"copy-matches":{"description":"True if and only if the read id-ints is equal to the local copy.","type":"boolean","example":true}},"required":["copy-matches"],"xml":{"name":"output","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_unsubscribe-ddtl_output":{"title":"odl-mdsal-lowlevel-control_unsubscribe-ddtl_output","type":"object","properties":{"copy-matches":{"description":"True if and only if the read id-ints is equal to the local copy.","type":"boolean","example":true}},"required":["copy-matches"],"xml":{"name":"output","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_register-default-constant_input":{"title":"odl-mdsal-lowlevel-control_register-default-constant_input","type":"object","properties":{"constant":{"description":"The string to be returned by llt:get-constant\n(or llt:get-contexted-constant) RPC implementation.\nThe string typically includes (the context and) the name of the member\nthe user called to cause the RPC implementation registration\n(that member may be different from both the member running the implementation,\nand member where llt:get-constant is called).","type":"string","example":"Some constant"}},"required":["constant"],"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-control_shutdown-shard-replica_input":{"title":"odl-mdsal-lowlevel-control_shutdown-shard-replica_input","type":"object","properties":{"shard-name":{"description":"The name of the configuration data store module-based shard to be shutdown\ngracefully.","type":"string","example":"Some shard-name"}},"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control"}},"odl-mdsal-lowlevel-target_get-constant_output":{"title":"odl-mdsal-lowlevel-target_get-constant_output","type":"object","properties":{"constant":{"description":"The string to be returned by llt:get-constant\n(or llt:get-contexted-constant) RPC implementation.\nThe string typically includes (the context and) the name of the member\nthe user called to cause the RPC implementation registration\n(that member may be different from both the member running the implementation,\nand member where llt:get-constant is called).","type":"string","example":"Some constant"}},"required":["constant"],"xml":{"name":"output","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target"}},"odl-mdsal-lowlevel-target_get-contexted-constant_input":{"title":"odl-mdsal-lowlevel-target_get-contexted-constant_input","type":"object","properties":{"context":{"description":"The context for bound implementation of\nllt:get-contexted-constant RPC to match.\nThe extension has no data, users are free to use instance identifiers\nreferring to (non-existent) items of rpc-context list.","type":"string","example":"/llt:id-ints"}},"required":["context"],"xml":{"name":"input","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target"}},"odl-mdsal-lowlevel-target_get-contexted-constant_output":{"title":"odl-mdsal-lowlevel-target_get-contexted-constant_output","type":"object","properties":{"constant":{"description":"The string to be returned by llt:get-constant\n(or llt:get-contexted-constant) RPC implementation.\nThe string typically includes (the context and) the name of the member\nthe user called to cause the RPC implementation registration\n(that member may be different from both the member running the implementation,\nand member where llt:get-constant is called).","type":"string","example":"Some constant"}},"required":["constant"],"xml":{"name":"output","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target"}},"odl-mdsal-lowlevel-target_get-singleton-constant_output":{"title":"odl-mdsal-lowlevel-target_get-singleton-constant_output","type":"object","properties":{"constant":{"description":"The string to be returned by llt:get-constant\n(or llt:get-contexted-constant) RPC implementation.\nThe string typically includes (the context and) the name of the member\nthe user called to cause the RPC implementation registration\n(that member may be different from both the member running the implementation,\nand member where llt:get-constant is called).","type":"string","example":"Some constant"}},"required":["constant"],"xml":{"name":"output","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target"}},"odl-mdsal-lowlevel-target_id-ints":{"title":"odl-mdsal-lowlevel-target_id-ints","type":"object","properties":{"id-int":{"type":"array","items":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int"},"description":"A list of integers nested in list of ids.\nIds are there to avoid OptimisticLockFailures from different writers.\nTypical use of the int list is to generate data change notifications.\nConfig is true, in order to allow Restconf to reset content at will.\nExpected writes should create and delete items at random, values 0 .. 2^20."}},"xml":{"name":"id-ints","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target"}},"odl-mdsal-lowlevel-target_id-ints_id-int":{"title":"odl-mdsal-lowlevel-target_id-ints_id-int","type":"object","description":"A list of integers nested in list of ids.\nIds are there to avoid OptimisticLockFailures from different writers.\nTypical use of the int list is to generate data change notifications.\nConfig is true, in order to allow Restconf to reset content at will.\nExpected writes should create and delete items at random, values 0 .. 2^20.","properties":{"item":{"type":"array","items":{"$ref":"#/components/schemas/odl-mdsal-lowlevel-target_id-ints_id-int_item"},"description":"Unsorted keyed list item. One write should create or delete up to one item."},"id":{"description":"Any string uniquely identifying the publisher, producer or writer,\ntypically containing the member name.","type":"string","example":"Some id"}},"required":["id"],"xml":{"name":"id-int","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target"}},"odl-mdsal-lowlevel-target_id-ints_id-int_item":{"title":"odl-mdsal-lowlevel-target_id-ints_id-int_item","type":"object","description":"Unsorted keyed list item. One write should create or delete up to one item.","properties":{"number":{"description":"The integer value of this item.\nNot range restricted, to allow more scenarios.","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"item","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target"}},"odl-serviceutils-upgrade_upgrade-config":{"title":"odl-serviceutils-upgrade_upgrade-config","type":"object","properties":{"upgradeInProgress":{"description":"","type":"boolean","default":false,"example":true}},"xml":{"name":"upgrade-config","namespace":"urn:opendaylight:serviceutils:upgrade"}},"odl-srm-ops_service-ops":{"title":"odl-srm-ops_service-ops","type":"object","properties":{"services":{"type":"array","items":{"$ref":"#/components/schemas/odl-srm-ops_service-ops_services"},"description":""}},"xml":{"name":"service-ops","namespace":"urn:opendaylight:serviceutils:srm:ops"}},"odl-srm-ops_service-ops_services":{"title":"odl-srm-ops_service-ops_services","type":"object","properties":{"service-name":{"description":"","type":"string","enum":["entity-name-base","genius-itm","ofplugin","netvirt-qos-policy-instance","netvirt-dhcp","genius-ifm","genius-itm-tz","genius-itm-tep","netvirt-l2gw-node","netvirt-l2gw","netvirt-qos","netvirt-elan-interface","genius-ifm-interface","netvirt-l2gw-connection","netvirt-vpn","netvirt-elan","netvirt-vpn-instance","netvirt-acl-interface","netvirt-acl-instance","netvirt-acl"],"example":"entity-name-base"},"operations":{"type":"array","items":{"$ref":"#/components/schemas/odl-srm-ops_service-ops_services_operations"},"description":""}},"xml":{"name":"services","namespace":"urn:opendaylight:serviceutils:srm:ops"}},"odl-srm-ops_service-ops_services_operations":{"title":"odl-srm-ops_service-ops_services_operations","type":"object","properties":{"entity-type":{"description":"","type":"string","enum":["entity-type-base","entity-type-service","entity-type-instance"],"example":"entity-type-base"},"trigger-operation":{"description":"","type":"string","enum":["service-op-base","service-op-recover","service-op-reinstall"],"example":"service-op-base"},"entity-name":{"description":"","type":"string","enum":["entity-name-base","genius-itm","ofplugin","netvirt-qos-policy-instance","netvirt-dhcp","genius-ifm","genius-itm-tz","genius-itm-tep","netvirt-l2gw-node","netvirt-l2gw","netvirt-qos","netvirt-elan-interface","genius-ifm-interface","netvirt-l2gw-connection","netvirt-vpn","netvirt-elan","netvirt-vpn-instance","netvirt-acl-interface","netvirt-acl-instance","netvirt-acl"],"example":"entity-name-base"},"entity-id":{"description":"Optional when entity-type is service. Actual\nid depends on entity-type and entity-name","type":"string","example":"Some entity-id"}},"xml":{"name":"operations","namespace":"urn:opendaylight:serviceutils:srm:ops"}},"odl-srm-rpcs_reinstall_input":{"title":"odl-srm-rpcs_reinstall_input","type":"object","properties":{"entity-name":{"description":"","type":"string","enum":["entity-name-base","genius-itm","ofplugin","netvirt-qos-policy-instance","netvirt-dhcp","genius-ifm","genius-itm-tz","genius-itm-tep","netvirt-l2gw-node","netvirt-l2gw","netvirt-qos","netvirt-elan-interface","genius-ifm-interface","netvirt-l2gw-connection","netvirt-vpn","netvirt-elan","netvirt-vpn-instance","netvirt-acl-interface","netvirt-acl-instance","netvirt-acl"],"example":"entity-name-base"},"entity-type":{"description":"Currently supported entity-types:\n   service","type":"string","enum":["entity-type-base","entity-type-service","entity-type-instance"],"example":"entity-type-base"}},"xml":{"name":"input","namespace":"urn:opendaylight:serviceutils:srm:rpc"}},"odl-srm-rpcs_reinstall_output":{"title":"odl-srm-rpcs_reinstall_output","type":"object","properties":{"successful":{"description":"","type":"boolean","example":true},"message":{"description":"","type":"string","example":"Some message"}},"xml":{"name":"output","namespace":"urn:opendaylight:serviceutils:srm:rpc"}},"odl-srm-rpcs_recover_input":{"title":"odl-srm-rpcs_recover_input","type":"object","properties":{"entity-name":{"description":"","type":"string","enum":["entity-name-base","genius-itm","ofplugin","netvirt-qos-policy-instance","netvirt-dhcp","genius-ifm","genius-itm-tz","genius-itm-tep","netvirt-l2gw-node","netvirt-l2gw","netvirt-qos","netvirt-elan-interface","genius-ifm-interface","netvirt-l2gw-connection","netvirt-vpn","netvirt-elan","netvirt-vpn-instance","netvirt-acl-interface","netvirt-acl-instance","netvirt-acl"],"example":"entity-name-base"},"entity-type":{"description":"Currently supported entity-types:\n   service, instance","type":"string","enum":["entity-type-base","entity-type-service","entity-type-instance"],"example":"entity-type-base"},"entity-id":{"description":"Optional when entity-type is service. Actual\nid depends on entity-type and entity-name","type":"string","example":"Some entity-id"}},"xml":{"name":"input","namespace":"urn:opendaylight:serviceutils:srm:rpc"}},"odl-srm-rpcs_recover_output":{"title":"odl-srm-rpcs_recover_output","type":"object","properties":{"response":{"description":"","type":"string","enum":["rpc-result-base","rpc-fail-unknown","rpc-fail-entity-id","rpc-success","rpc-fail-entity-type","rpc-fail-op-not-supported","rpc-fail-entity-name"],"example":"rpc-result-base"},"message":{"description":"","type":"string","example":"Some message"}},"xml":{"name":"output","namespace":"urn:opendaylight:serviceutils:srm:rpc"}},"openconfig-bgp_bgp":{"title":"openconfig-bgp_bgp","type":"object","description":"Top-level configuration and state for the BGP router","properties":{"neighbors":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors"},"global":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global"},"peer-groups":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups"}},"xml":{"name":"bgp","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global":{"title":"openconfig-bgp_bgp_global","type":"object","description":"Global configuration for the BGP router","properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy"},"use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths"},"route-selection-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options"},"afi-safis":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis"},"graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart"},"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_state"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_config"},"default-route-distance":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance"},"confederation":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation"}},"xml":{"name":"global","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_apply-policy":{"title":"openconfig-bgp_bgp_global_apply-policy","type":"object","description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_apply-policy_config"}},"xml":{"name":"apply-policy","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_apply-policy_config":{"title":"openconfig-bgp_bgp_global_apply-policy_config","type":"object","description":"Policy configuration data.","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_apply-policy_state":{"title":"openconfig-bgp_bgp_global_apply-policy_state","type":"object","description":"Operational state for routing policy","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_config":{"title":"openconfig-bgp_bgp_global_config","type":"object","description":"Configuration parameters relating to the global BGP router","properties":{"as":{"description":"Local autonomous system number of the router.  Uses\nthe 32-bit as-number type from the model in RFC 6991.","type":"integer","format":"int64","example":0},"router-id":{"description":"Router id of the router, expressed as an\n32-bit value, IPv4 address.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"required":["as"],"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_state":{"title":"openconfig-bgp_bgp_global_state","type":"object","description":"State information relating to the global BGP router","properties":{"total-prefixes":{"description":"","type":"integer","format":"int64","example":0},"as":{"description":"Local autonomous system number of the router.  Uses\nthe 32-bit as-number type from the model in RFC 6991.","type":"integer","format":"int64","example":0},"total-paths":{"description":"Total number of BGP paths within the context","type":"integer","format":"int64","example":0},"router-id":{"description":"Router id of the router, expressed as an\n32-bit value, IPv4 address.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"required":["as"],"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_default-route-distance":{"title":"openconfig-bgp_bgp_global_default-route-distance","type":"object","description":"Administrative distance (or preference) assigned to\nroutes received from different sources\n(external, internal, and local).","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_default-route-distance_config"}},"xml":{"name":"default-route-distance","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_default-route-distance_config":{"title":"openconfig-bgp_bgp_global_default-route-distance_config","type":"object","description":"Configuration parameters relating to the default route\ndistance","properties":{"external-route-distance":{"description":"Administrative distance for routes learned from external\nBGP (eBGP).","type":"integer","format":"int32","example":1},"internal-route-distance":{"description":"Administrative distance for routes learned from internal\nBGP (iBGP).","type":"integer","format":"int32","example":1}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_default-route-distance_state":{"title":"openconfig-bgp_bgp_global_default-route-distance_state","type":"object","description":"State information relating to the default route distance","properties":{"external-route-distance":{"description":"Administrative distance for routes learned from external\nBGP (eBGP).","type":"integer","format":"int32","example":1},"internal-route-distance":{"description":"Administrative distance for routes learned from internal\nBGP (iBGP).","type":"integer","format":"int32","example":1}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_confederation":{"title":"openconfig-bgp_bgp_global_confederation","type":"object","description":"Parameters indicating whether the local system acts as part\nof a BGP confederation","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_confederation_config"}},"xml":{"name":"confederation","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_confederation_config":{"title":"openconfig-bgp_bgp_global_confederation_config","type":"object","description":"Configuration parameters relating to BGP confederations","properties":{"identifier":{"description":"Confederation identifier for the autonomous system.","type":"integer","format":"int64","example":0},"member-as":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":"Remote autonomous systems that are to be treated\nas part of the local confederation."},"enabled":{"description":"When this leaf is set to true it indicates that\nthe local-AS is part of a BGP confederation","type":"boolean","example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_confederation_state":{"title":"openconfig-bgp_bgp_global_confederation_state","type":"object","description":"State information relating to the BGP confederations","properties":{"identifier":{"description":"Confederation identifier for the autonomous system.","type":"integer","format":"int64","example":0},"member-as":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":"Remote autonomous systems that are to be treated\nas part of the local confederation."},"enabled":{"description":"When this leaf is set to true it indicates that\nthe local-AS is part of a BGP confederation","type":"boolean","example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis":{"title":"openconfig-bgp_bgp_global_afi-safis","type":"object","description":"Address family specific configuration","properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi"},"description":"AFI,SAFI configuration available for the\nneighbour or group"}},"xml":{"name":"afi-safis","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi","type":"object","description":"AFI,SAFI configuration available for the\nneighbour or group","properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy"},"ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast"},"ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast"},"l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls"},"ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast"},"l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast"},"l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn"},"ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast"},"use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths"},"route-selection-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options"},"l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast"},"l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast"},"afi-safi-name":{"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_config"},"l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast"}},"xml":{"name":"afi-safi","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart","type":"object","description":"Parameters relating to BGP graceful-restart","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_config"}},"xml":{"name":"graceful-restart","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_config","type":"object","description":"Configuration options for BGP graceful-restart","properties":{"enabled":{"description":"This leaf indicates whether graceful-restart is enabled for\nthis AFI-SAFI","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_graceful-restart_state","type":"object","description":"State information for BGP graceful-restart","properties":{"enabled":{"description":"This leaf indicates whether graceful-restart is enabled for\nthis AFI-SAFI","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_config","type":"object","description":"Configuration parameters for the AFI-SAFI","properties":{"afi-safi-name":{"description":"AFI,SAFI","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"enabled":{"description":"This leaf indicates whether the IPv4 Unicast AFI,SAFI is\nenabled for the neighbour or group","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_state","type":"object","description":"State information relating to the AFI-SAFI","properties":{"total-prefixes":{"description":"","type":"integer","format":"int64","example":0},"total-paths":{"description":"Total number of BGP paths within the context","type":"integer","format":"int64","example":0},"afi-safi-name":{"description":"AFI,SAFI","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"enabled":{"description":"This leaf indicates whether the IPv4 Unicast AFI,SAFI is\nenabled for the neighbour or group","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy","type":"object","description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_config"}},"xml":{"name":"apply-policy","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_config","type":"object","description":"Policy configuration data.","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_apply-policy_state","type":"object","description":"Operational state for routing policy","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast","type":"object","description":"IPv4 unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_config"}},"xml":{"name":"ipv4-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_config","type":"object","description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_state","type":"object","description":"State information for common IPv4 and IPv6 unicast\nparameters","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast","type":"object","description":"IPv6 unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_config"}},"xml":{"name":"ipv6-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_config","type":"object","description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_state","type":"object","description":"State information for common IPv4 and IPv6 unicast\nparameters","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object","description":"IPv4 Labelled Unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}},"xml":{"name":"ipv4-labelled-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object","description":"IPv6 Labelled Unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}},"xml":{"name":"ipv6-labelled-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object","description":"Unicast IPv4 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv4-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object","description":"Unicast IPv6 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv6-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object","description":"Multicast IPv4 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv4-multicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object","description":"Multicast IPv6 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv6-multicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls","type":"object","description":"BGP-signalled VPLS configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}},"xml":{"name":"l2vpn-vpls","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn","type":"object","description":"BGP EVPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}},"xml":{"name":"l2vpn-evpn","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options","type":"object","description":"Parameters relating to options for route selection","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_config"}},"xml":{"name":"route-selection-options","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_config","type":"object","description":"Configuration parameters relating to route selection\noptions","properties":{"always-compare-med":{"description":"Compare multi-exit discriminator (MED) value from\ndifferent ASes when selecting the best route.  The\ndefault behavior is to only compare MEDs for paths\nreceived from the same AS.","type":"boolean","default":false,"example":true},"advertise-inactive-routes":{"description":"Advertise inactive routes to external peers.  The\ndefault is to only advertise active routes.","type":"boolean","default":false,"example":true},"ignore-as-path-length":{"description":"Ignore the AS path length when selecting the best path.\nThe default is to use the AS path length and prefer paths\nwith shorter length.","type":"boolean","default":false,"example":true},"enable-aigp":{"description":"Flag to enable sending / receiving accumulated IGP\nattribute in routing updates","type":"boolean","default":false,"example":true},"ignore-next-hop-igp-metric":{"description":"Ignore the IGP metric to the next-hop when calculating\nBGP best-path. The default is to select the route for\nwhich the metric to the next-hop is lowest","type":"boolean","default":false,"example":true},"external-compare-router-id":{"description":"When comparing similar routes received from external\nBGP peers, use the router-id as a criterion to select\nthe active path.","type":"boolean","default":true,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_route-selection-options_state","type":"object","description":"State information for the route selection options","properties":{"always-compare-med":{"description":"Compare multi-exit discriminator (MED) value from\ndifferent ASes when selecting the best route.  The\ndefault behavior is to only compare MEDs for paths\nreceived from the same AS.","type":"boolean","default":false,"example":true},"advertise-inactive-routes":{"description":"Advertise inactive routes to external peers.  The\ndefault is to only advertise active routes.","type":"boolean","default":false,"example":true},"ignore-as-path-length":{"description":"Ignore the AS path length when selecting the best path.\nThe default is to use the AS path length and prefer paths\nwith shorter length.","type":"boolean","default":false,"example":true},"enable-aigp":{"description":"Flag to enable sending / receiving accumulated IGP\nattribute in routing updates","type":"boolean","default":false,"example":true},"ignore-next-hop-igp-metric":{"description":"Ignore the IGP metric to the next-hop when calculating\nBGP best-path. The default is to select the route for\nwhich the metric to the next-hop is lowest","type":"boolean","default":false,"example":true},"external-compare-router-id":{"description":"When comparing similar routes received from external\nBGP peers, use the router-id as a criterion to select\nthe active path.","type":"boolean","default":true,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths","type":"object","description":"Parameters related to the use of multiple paths for the\nsame NLRI","properties":{"ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp"},"ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp"},"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_state"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_config"}},"xml":{"name":"use-multiple-paths","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_config","type":"object","description":"Configuration parameters relating to multipath","properties":{"enabled":{"description":"Whether the use of multiple paths for the same NLRI is\nenabled for the neighbor. This value is overridden by\nany more specific configuration value.","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_state","type":"object","description":"State parameters relating to multipath","properties":{"enabled":{"description":"Whether the use of multiple paths for the same NLRI is\nenabled for the neighbor. This value is overridden by\nany more specific configuration value.","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp","type":"object","description":"Multipath parameters for eBGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}},"xml":{"name":"ebgp","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object","description":"Configuration parameters relating to eBGP multipath","properties":{"allow-multiple-as":{"description":"Allow multipath to use paths from different neighbouring\nASes.  The default is to only consider multiple paths from\nthe same neighbouring AS.","type":"boolean","default":false,"example":true},"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\nBGP multipath. The default is use a single path.","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ebgp_state","type":"object","description":"State information relating to eBGP multipath","properties":{"allow-multiple-as":{"description":"Allow multipath to use paths from different neighbouring\nASes.  The default is to only consider multiple paths from\nthe same neighbouring AS.","type":"boolean","default":false,"example":true},"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\nBGP multipath. The default is use a single path.","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp","type":"object","description":"Multipath parameters for iBGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_config"}},"xml":{"name":"ibgp","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_config":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_config","type":"object","description":"Configuration parameters relating to iBGP multipath","properties":{"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\niBGP multipath. The default is to use a single path","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_state":{"title":"openconfig-bgp_bgp_global_afi-safis_afi-safi_use-multiple-paths_ibgp_state","type":"object","description":"State information relating to iBGP multipath","properties":{"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\niBGP multipath. The default is to use a single path","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_route-selection-options":{"title":"openconfig-bgp_bgp_global_route-selection-options","type":"object","description":"Parameters relating to options for route selection","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_route-selection-options_config"}},"xml":{"name":"route-selection-options","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_route-selection-options_config":{"title":"openconfig-bgp_bgp_global_route-selection-options_config","type":"object","description":"Configuration parameters relating to route selection\noptions","properties":{"always-compare-med":{"description":"Compare multi-exit discriminator (MED) value from\ndifferent ASes when selecting the best route.  The\ndefault behavior is to only compare MEDs for paths\nreceived from the same AS.","type":"boolean","default":false,"example":true},"advertise-inactive-routes":{"description":"Advertise inactive routes to external peers.  The\ndefault is to only advertise active routes.","type":"boolean","default":false,"example":true},"ignore-as-path-length":{"description":"Ignore the AS path length when selecting the best path.\nThe default is to use the AS path length and prefer paths\nwith shorter length.","type":"boolean","default":false,"example":true},"enable-aigp":{"description":"Flag to enable sending / receiving accumulated IGP\nattribute in routing updates","type":"boolean","default":false,"example":true},"ignore-next-hop-igp-metric":{"description":"Ignore the IGP metric to the next-hop when calculating\nBGP best-path. The default is to select the route for\nwhich the metric to the next-hop is lowest","type":"boolean","default":false,"example":true},"external-compare-router-id":{"description":"When comparing similar routes received from external\nBGP peers, use the router-id as a criterion to select\nthe active path.","type":"boolean","default":true,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_route-selection-options_state":{"title":"openconfig-bgp_bgp_global_route-selection-options_state","type":"object","description":"State information for the route selection options","properties":{"always-compare-med":{"description":"Compare multi-exit discriminator (MED) value from\ndifferent ASes when selecting the best route.  The\ndefault behavior is to only compare MEDs for paths\nreceived from the same AS.","type":"boolean","default":false,"example":true},"advertise-inactive-routes":{"description":"Advertise inactive routes to external peers.  The\ndefault is to only advertise active routes.","type":"boolean","default":false,"example":true},"ignore-as-path-length":{"description":"Ignore the AS path length when selecting the best path.\nThe default is to use the AS path length and prefer paths\nwith shorter length.","type":"boolean","default":false,"example":true},"enable-aigp":{"description":"Flag to enable sending / receiving accumulated IGP\nattribute in routing updates","type":"boolean","default":false,"example":true},"ignore-next-hop-igp-metric":{"description":"Ignore the IGP metric to the next-hop when calculating\nBGP best-path. The default is to select the route for\nwhich the metric to the next-hop is lowest","type":"boolean","default":false,"example":true},"external-compare-router-id":{"description":"When comparing similar routes received from external\nBGP peers, use the router-id as a criterion to select\nthe active path.","type":"boolean","default":true,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_use-multiple-paths":{"title":"openconfig-bgp_bgp_global_use-multiple-paths","type":"object","description":"Parameters related to the use of multiple paths for the\nsame NLRI","properties":{"ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp"},"ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp"},"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_state"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_config"}},"xml":{"name":"use-multiple-paths","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_use-multiple-paths_config":{"title":"openconfig-bgp_bgp_global_use-multiple-paths_config","type":"object","description":"Configuration parameters relating to multipath","properties":{"enabled":{"description":"Whether the use of multiple paths for the same NLRI is\nenabled for the neighbor. This value is overridden by\nany more specific configuration value.","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_use-multiple-paths_state":{"title":"openconfig-bgp_bgp_global_use-multiple-paths_state","type":"object","description":"State parameters relating to multipath","properties":{"enabled":{"description":"Whether the use of multiple paths for the same NLRI is\nenabled for the neighbor. This value is overridden by\nany more specific configuration value.","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_use-multiple-paths_ebgp":{"title":"openconfig-bgp_bgp_global_use-multiple-paths_ebgp","type":"object","description":"Multipath parameters for eBGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ebgp_config"}},"xml":{"name":"ebgp","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_use-multiple-paths_ebgp_config":{"title":"openconfig-bgp_bgp_global_use-multiple-paths_ebgp_config","type":"object","description":"Configuration parameters relating to eBGP multipath","properties":{"allow-multiple-as":{"description":"Allow multipath to use paths from different neighbouring\nASes.  The default is to only consider multiple paths from\nthe same neighbouring AS.","type":"boolean","default":false,"example":true},"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\nBGP multipath. The default is use a single path.","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_use-multiple-paths_ebgp_state":{"title":"openconfig-bgp_bgp_global_use-multiple-paths_ebgp_state","type":"object","description":"State information relating to eBGP multipath","properties":{"allow-multiple-as":{"description":"Allow multipath to use paths from different neighbouring\nASes.  The default is to only consider multiple paths from\nthe same neighbouring AS.","type":"boolean","default":false,"example":true},"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\nBGP multipath. The default is use a single path.","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_use-multiple-paths_ibgp":{"title":"openconfig-bgp_bgp_global_use-multiple-paths_ibgp","type":"object","description":"Multipath parameters for iBGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_use-multiple-paths_ibgp_config"}},"xml":{"name":"ibgp","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_use-multiple-paths_ibgp_config":{"title":"openconfig-bgp_bgp_global_use-multiple-paths_ibgp_config","type":"object","description":"Configuration parameters relating to iBGP multipath","properties":{"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\niBGP multipath. The default is to use a single path","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_use-multiple-paths_ibgp_state":{"title":"openconfig-bgp_bgp_global_use-multiple-paths_ibgp_state","type":"object","description":"State information relating to iBGP multipath","properties":{"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\niBGP multipath. The default is to use a single path","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_graceful-restart":{"title":"openconfig-bgp_bgp_global_graceful-restart","type":"object","description":"Parameters relating the graceful restart mechanism for BGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_global_graceful-restart_config"}},"xml":{"name":"graceful-restart","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_graceful-restart_config":{"title":"openconfig-bgp_bgp_global_graceful-restart_config","type":"object","description":"Configuration parameters relating to graceful-restart","properties":{"stale-routes-time":{"description":"An upper-bound on the time thate stale routes will be\nretained by a router after a session is restarted. If an\nEnd-of-RIB (EOR) marker is received prior to this timer\nexpiring stale-routes will be flushed upon its receipt - if\nno EOR is received, then when this timer expires stale paths\nwill be purged. This timer is referred to as the\nSelection_Deferral_Timer in RFC4724","type":"number","example":-92233720368547758.08},"restart-time":{"description":"Estimated time (in seconds) for the local BGP speaker to\nrestart a session. This value is advertise in the graceful\nrestart BGP capability.  This is a 12-bit value, referred to\nas Restart Time in RFC4724.  Per RFC4724, the suggested\ndefault value is &lt;= the hold-time value.","type":"integer","format":"int32","example":0},"helper-only":{"description":"Enable graceful-restart in helper mode only. When this\nleaf is set, the local system does not retain forwarding\nits own state during a restart, but supports procedures\nfor the receiving speaker, as defined in RFC4724.","type":"boolean","example":true},"enabled":{"description":"Enable or disable the graceful-restart capability.","type":"boolean","example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_global_graceful-restart_state":{"title":"openconfig-bgp_bgp_global_graceful-restart_state","type":"object","description":"State information associated with graceful-restart","properties":{"stale-routes-time":{"description":"An upper-bound on the time thate stale routes will be\nretained by a router after a session is restarted. If an\nEnd-of-RIB (EOR) marker is received prior to this timer\nexpiring stale-routes will be flushed upon its receipt - if\nno EOR is received, then when this timer expires stale paths\nwill be purged. This timer is referred to as the\nSelection_Deferral_Timer in RFC4724","type":"number","example":-92233720368547758.08},"restart-time":{"description":"Estimated time (in seconds) for the local BGP speaker to\nrestart a session. This value is advertise in the graceful\nrestart BGP capability.  This is a 12-bit value, referred to\nas Restart Time in RFC4724.  Per RFC4724, the suggested\ndefault value is &lt;= the hold-time value.","type":"integer","format":"int32","example":0},"helper-only":{"description":"Enable graceful-restart in helper mode only. When this\nleaf is set, the local system does not retain forwarding\nits own state during a restart, but supports procedures\nfor the receiving speaker, as defined in RFC4724.","type":"boolean","example":true},"enabled":{"description":"Enable or disable the graceful-restart capability.","type":"boolean","example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors":{"title":"openconfig-bgp_bgp_neighbors","type":"object","description":"Configuration for BGP neighbors","properties":{"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor"},"description":"List of BGP neighbors configured on the local system,\nuniquely identified by peer IPv[46] address"}},"xml":{"name":"neighbors","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor":{"title":"openconfig-bgp_bgp_neighbors_neighbor","type":"object","description":"List of BGP neighbors configured on the local system,\nuniquely identified by peer IPv[46] address","properties":{"timers":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers"},"apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy"},"route-reflector":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector"},"transport":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport"},"as-path-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options"},"ebgp-multihop":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop"},"error-handling":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling"},"use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths"},"add-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths"},"afi-safis":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis"},"graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart"},"neighbor-address":{"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"logging-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_config"}},"xml":{"name":"neighbor","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_config","type":"object","description":"Configuration parameters relating to the BGP neighbor or\ngroup","properties":{"peer-type":{"description":"Explicitly designate the peer or peer group as internal\n(iBGP) or external (eBGP).","type":"string","enum":["INTERNAL","EXTERNAL"],"example":"INTERNAL"},"remove-private-as":{"description":"Remove private AS numbers from updates sent to peers.","type":"string","enum":["ALL","REPLACE"],"example":"ALL"},"send-community":{"description":"Specify which types of community should be sent to the\nneighbor or group. The default is to not send the\ncommunity attribute","type":"string","enum":["STANDARD","EXTENDED","BOTH","NONE"],"default":"NONE","example":"STANDARD"},"description":{"description":"An optional textual description (intended primarily for use\nwith a peer or group","type":"string","example":"Some description"},"peer-as":{"description":"AS number of the peer.","type":"integer","format":"int64","example":0},"neighbor-address":{"description":"Address of the BGP peer, either in IPv4 or IPv6","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"route-flap-damping":{"description":"Enable route flap damping.","type":"boolean","default":false,"example":true},"peer-group":{"description":"The peer-group with which this neighbor is associated","type":"string","example":"Some peer-group"},"auth-password":{"description":"Configures an MD5 authentication password for use with\nneighboring devices.","type":"string","example":"Some auth-password"},"local-as":{"description":"The local autonomous system number that is to be used\nwhen establishing sessions with the remote peer or peer\ngroup, if this differs from the global BGP router\nautonomous system number.","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_state","type":"object","description":"State information relating to the BGP neighbor or group","properties":{"remove-private-as":{"description":"Remove private AS numbers from updates sent to peers.","type":"string","enum":["ALL","REPLACE"],"example":"ALL"},"send-community":{"description":"Specify which types of community should be sent to the\nneighbor or group. The default is to not send the\ncommunity attribute","type":"string","enum":["STANDARD","EXTENDED","BOTH","NONE"],"default":"NONE","example":"STANDARD"},"description":{"description":"An optional textual description (intended primarily for use\nwith a peer or group","type":"string","example":"Some description"},"peer-as":{"description":"AS number of the peer.","type":"integer","format":"int64","example":0},"route-flap-damping":{"description":"Enable route flap damping.","type":"boolean","default":false,"example":true},"peer-type":{"description":"Explicitly designate the peer or peer group as internal\n(iBGP) or external (eBGP).","type":"string","enum":["INTERNAL","EXTERNAL"],"example":"INTERNAL"},"queues":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_state_queues"},"supported-capabilities":{"type":"array","items":{"type":"string","enum":["bgp-capability","MPBGP","ADD-PATHS","ROUTE-REFRESH","ASN32","GRACEFUL-RESTART"],"example":"bgp-capability"},"description":"BGP capabilities negotiated as supported with the peer"},"session-state":{"description":"Operational state of the BGP peer","type":"string","enum":["IDLE","CONNECT","ACTIVE","OPENSENT","OPENCONFIRM","ESTABLISHED"],"example":"IDLE"},"messages":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_state_messages"},"neighbor-address":{"description":"Address of the BGP peer, either in IPv4 or IPv6","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"peer-group":{"description":"The peer-group with which this neighbor is associated","type":"string","example":"Some peer-group"},"auth-password":{"description":"Configures an MD5 authentication password for use with\nneighboring devices.","type":"string","example":"Some auth-password"},"local-as":{"description":"The local autonomous system number that is to be used\nwhen establishing sessions with the remote peer or peer\ngroup, if this differs from the global BGP router\nautonomous system number.","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_state_messages":{"title":"openconfig-bgp_bgp_neighbors_neighbor_state_messages","type":"object","description":"Counters for BGP messages sent and received from the\nneighbor","properties":{"received":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_state_messages_received"},"sent":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_state_messages_sent"}},"xml":{"name":"messages","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_state_messages_sent":{"title":"openconfig-bgp_bgp_neighbors_neighbor_state_messages_sent","type":"object","description":"Counters relating to BGP messages sent to the neighbor","properties":{"NOTIFICATION":{"description":"Number of BGP NOTIFICATION messages indicating an\nerror condition has occurred exchanged.","type":"integer","example":0},"UPDATE":{"description":"Number of BGP UPDATE messages announcing, withdrawing\nor modifying paths exchanged.","type":"integer","example":0}},"xml":{"name":"sent","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_state_messages_received":{"title":"openconfig-bgp_bgp_neighbors_neighbor_state_messages_received","type":"object","description":"Counters for BGP messages received from the neighbor","properties":{"NOTIFICATION":{"description":"Number of BGP NOTIFICATION messages indicating an\nerror condition has occurred exchanged.","type":"integer","example":0},"UPDATE":{"description":"Number of BGP UPDATE messages announcing, withdrawing\nor modifying paths exchanged.","type":"integer","example":0}},"xml":{"name":"received","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_state_queues":{"title":"openconfig-bgp_bgp_neighbors_neighbor_state_queues","type":"object","description":"Counters related to queued messages associated with the\nBGP neighbor","properties":{"output":{"description":"The number of messages queued to be sent to the peer","type":"integer","format":"int64","example":0},"input":{"description":"The number of messages received from the peer currently\nqueued","type":"integer","format":"int64","example":0}},"xml":{"name":"queues","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_timers":{"title":"openconfig-bgp_bgp_neighbors_neighbor_timers","type":"object","description":"Timers related to a BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_timers_config"}},"xml":{"name":"timers","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_timers_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_timers_config","type":"object","description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","properties":{"minimum-advertisement-interval":{"description":"Minimum time which must elapse between subsequent UPDATE\nmessages relating to a common set of NLRI being transmitted\nto a peer. This timer is referred to as\nMinRouteAdvertisementIntervalTimer by RFC 4721 and serves to\nreduce the number of UPDATE messages transmitted when a\nparticular set of NLRI exhibit instability.","type":"number","default":30,"example":-92233720368547758.08},"connect-retry":{"description":"Time interval in seconds between attempts to establish a\nsession with the peer.","type":"number","default":30,"example":-92233720368547758.08},"keepalive-interval":{"description":"Time interval in seconds between transmission of keepalive\nmessages to the neighbor.  Typically set to 1/3 the\nhold-time.","type":"number","default":30,"example":-92233720368547758.08},"hold-time":{"description":"Time interval in seconds that a BGP session will be\nconsidered active in the absence of keepalive or other\nmessages from the peer.  The hold-time is typically\nset to 3x the keepalive-interval.","type":"number","default":90,"example":-92233720368547758.08}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_timers_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_timers_state","type":"object","description":"State information relating to the timers used for the BGP\nneighbor or group","properties":{"minimum-advertisement-interval":{"description":"Minimum time which must elapse between subsequent UPDATE\nmessages relating to a common set of NLRI being transmitted\nto a peer. This timer is referred to as\nMinRouteAdvertisementIntervalTimer by RFC 4721 and serves to\nreduce the number of UPDATE messages transmitted when a\nparticular set of NLRI exhibit instability.","type":"number","default":30,"example":-92233720368547758.08},"negotiated-hold-time":{"description":"The negotiated hold-time for the BGP session","type":"number","example":-92233720368547758.08},"connect-retry":{"description":"Time interval in seconds between attempts to establish a\nsession with the peer.","type":"number","default":30,"example":-92233720368547758.08},"keepalive-interval":{"description":"Time interval in seconds between transmission of keepalive\nmessages to the neighbor.  Typically set to 1/3 the\nhold-time.","type":"number","default":30,"example":-92233720368547758.08},"hold-time":{"description":"Time interval in seconds that a BGP session will be\nconsidered active in the absence of keepalive or other\nmessages from the peer.  The hold-time is typically\nset to 3x the keepalive-interval.","type":"number","default":90,"example":-92233720368547758.08},"uptime":{"description":"This timer determines the amount of time since the\nBGP last transitioned in or out of the Established\nstate","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_transport":{"title":"openconfig-bgp_bgp_neighbors_neighbor_transport","type":"object","description":"Transport session parameters for the BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_transport_config"}},"xml":{"name":"transport","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_transport_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_transport_config","type":"object","description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","properties":{"tcp-mss":{"description":"Sets the max segment size for BGP TCP sessions.","type":"integer","format":"int32","example":0},"passive-mode":{"description":"Wait for peers to issue requests to open a BGP session,\nrather than initiating sessions from the local router.","type":"boolean","default":false,"example":true},"mtu-discovery":{"description":"Turns path mtu discovery for BGP TCP sessions on (true)\nor off (false)","type":"boolean","default":false,"example":true},"local-address":{"description":"Set the local IP (either IPv4 or IPv6) address to use\nfor the session when sending BGP update messages.  This\nmay be expressed as either an IP address or reference\nto the name of an interface.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_transport_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_transport_state","type":"object","description":"State information relating to the transport session(s)\nused for the BGP neighbor or group","properties":{"local-port":{"description":"Local TCP port being used for the TCP session supporting\nthe BGP session","type":"integer","format":"int32","example":0},"tcp-mss":{"description":"Sets the max segment size for BGP TCP sessions.","type":"integer","format":"int32","example":0},"passive-mode":{"description":"Wait for peers to issue requests to open a BGP session,\nrather than initiating sessions from the local router.","type":"boolean","default":false,"example":true},"remote-address":{"description":"Remote address to which the BGP session has been\nestablished","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"remote-port":{"description":"Remote port being used by the peer for the TCP session\nsupporting the BGP session","type":"integer","format":"int32","example":0},"mtu-discovery":{"description":"Turns path mtu discovery for BGP TCP sessions on (true)\nor off (false)","type":"boolean","default":false,"example":true},"local-address":{"description":"Set the local IP (either IPv4 or IPv6) address to use\nfor the session when sending BGP update messages.  This\nmay be expressed as either an IP address or reference\nto the name of an interface.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_error-handling":{"title":"openconfig-bgp_bgp_neighbors_neighbor_error-handling","type":"object","description":"Error handling parameters used for the BGP neighbor or\ngroup","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_error-handling_config"}},"xml":{"name":"error-handling","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_error-handling_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_error-handling_config","type":"object","description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","properties":{"treat-as-withdraw":{"description":"Specify whether erroneous UPDATE messages for which the\nNLRI can be extracted are treated as though the NLRI is\nwithdrawn - avoiding session reset","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_error-handling_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_error-handling_state","type":"object","description":"State information relating to enhanced error handling\nmechanisms for the BGP neighbor or group","properties":{"treat-as-withdraw":{"description":"Specify whether erroneous UPDATE messages for which the\nNLRI can be extracted are treated as though the NLRI is\nwithdrawn - avoiding session reset","type":"boolean","default":false,"example":true},"erroneous-update-messages":{"description":"The number of BGP UPDATE messages for which the\ntreat-as-withdraw mechanism has been applied based\non erroneous message contents","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_logging-options":{"title":"openconfig-bgp_bgp_neighbors_neighbor_logging-options","type":"object","description":"Logging options for events related to the BGP neighbor or\ngroup","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_logging-options_config"}},"xml":{"name":"logging-options","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_logging-options_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_logging-options_config","type":"object","description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","properties":{"log-neighbor-state-changes":{"description":"Configure logging of peer state changes.  Default is\nto enable logging of peer state changes.","type":"boolean","default":true,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_logging-options_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_logging-options_state","type":"object","description":"State information relating to logging for the BGP neighbor\nor group","properties":{"log-neighbor-state-changes":{"description":"Configure logging of peer state changes.  Default is\nto enable logging of peer state changes.","type":"boolean","default":true,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop":{"title":"openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop","type":"object","description":"eBGP multi-hop parameters for the BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_config"}},"xml":{"name":"ebgp-multihop","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_config","type":"object","description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","properties":{"multihop-ttl":{"description":"Time-to-live value to use when packets are sent to the\nreferenced group or neighbors and ebgp-multihop is enabled","type":"integer","format":"int32","example":0},"enabled":{"description":"When enabled the referenced group or neighbors are permitted\nto be indirectly connected - including cases where the TTL\ncan be decremented between the BGP peers","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_ebgp-multihop_state","type":"object","description":"State information for eBGP multihop, for the BGP neighbor\nor group","properties":{"multihop-ttl":{"description":"Time-to-live value to use when packets are sent to the\nreferenced group or neighbors and ebgp-multihop is enabled","type":"integer","format":"int32","example":0},"enabled":{"description":"When enabled the referenced group or neighbors are permitted\nto be indirectly connected - including cases where the TTL\ncan be decremented between the BGP peers","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_route-reflector":{"title":"openconfig-bgp_bgp_neighbors_neighbor_route-reflector","type":"object","description":"Route reflector parameters for the BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_route-reflector_config"}},"xml":{"name":"route-reflector","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_route-reflector_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_route-reflector_config","type":"object","description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","properties":{"route-reflector-cluster-id":{"description":"route-reflector cluster id to use when local router is\nconfigured as a route reflector.  Commonly set at the group\nlevel, but allows a different cluster\nid to be set for each neighbor.","type":"integer","format":"int64","example":0},"route-reflector-client":{"description":"Configure the neighbor as a route reflector client.","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_route-reflector_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_route-reflector_state","type":"object","description":"State information relating to route reflection for the\nBGP neighbor or group","properties":{"route-reflector-cluster-id":{"description":"route-reflector cluster id to use when local router is\nconfigured as a route reflector.  Commonly set at the group\nlevel, but allows a different cluster\nid to be set for each neighbor.","type":"integer","format":"int64","example":0},"route-reflector-client":{"description":"Configure the neighbor as a route reflector client.","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_as-path-options":{"title":"openconfig-bgp_bgp_neighbors_neighbor_as-path-options","type":"object","description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_as-path-options_config"}},"xml":{"name":"as-path-options","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_as-path-options_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_as-path-options_config","type":"object","description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","properties":{"replace-peer-as":{"description":"Replace occurrences of the peer's AS in the AS_PATH\nwith the local autonomous system number","type":"boolean","default":false,"example":true},"allow-own-as":{"description":"Specify the number of occurrences of the local BGP speaker's\nAS that can occur within the AS_PATH before it is rejected.","type":"string","default":"0"}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_as-path-options_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_as-path-options_state","type":"object","description":"State information relating to the AS_PATH manipulation\nmechanisms for the BGP peer or group","properties":{"replace-peer-as":{"description":"Replace occurrences of the peer's AS in the AS_PATH\nwith the local autonomous system number","type":"boolean","default":false,"example":true},"allow-own-as":{"description":"Specify the number of occurrences of the local BGP speaker's\nAS that can occur within the AS_PATH before it is rejected.","type":"string","default":"0"}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_add-paths":{"title":"openconfig-bgp_bgp_neighbors_neighbor_add-paths","type":"object","description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_add-paths_config"}},"xml":{"name":"add-paths","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_add-paths_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_add-paths_config","type":"object","description":"Configuration parameters relating to ADD_PATHS","properties":{"receive":{"description":"Enable ability to receive multiple path advertisements\nfor an NLRI from the neighbor or group","type":"boolean","default":false,"example":true},"send-max":{"description":"The maximum number of paths to advertise to neighbors\nfor a single NLRI","type":"integer","format":"int32","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_add-paths_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_add-paths_state","type":"object","description":"State information associated with ADD_PATHS","properties":{"receive":{"description":"Enable ability to receive multiple path advertisements\nfor an NLRI from the neighbor or group","type":"boolean","default":false,"example":true},"send-max":{"description":"The maximum number of paths to advertise to neighbors\nfor a single NLRI","type":"integer","format":"int32","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis","type":"object","description":"Per-address-family configuration parameters associated with\nthe neighbor or group","properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi"},"description":"AFI,SAFI configuration available for the\nneighbour or group"}},"xml":{"name":"afi-safis","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi","type":"object","description":"AFI,SAFI configuration available for the\nneighbour or group","properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy"},"ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast"},"ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast"},"l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls"},"ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast"},"l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast"},"l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn"},"ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast"},"use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths"},"l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast"},"l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast"},"afi-safi-name":{"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_config"},"l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast"}},"xml":{"name":"afi-safi","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart","type":"object","description":"Parameters relating to BGP graceful-restart","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config"}},"xml":{"name":"graceful-restart","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config","type":"object","description":"Configuration options for BGP graceful-restart","properties":{"enabled":{"description":"This leaf indicates whether graceful-restart is enabled for\nthis AFI-SAFI","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_state","type":"object","description":"State information for BGP graceful-restart","properties":{"advertised":{"description":"This leaf indicates whether the ability to support\ngraceful-restart has been advertised to the peer","type":"boolean","example":true},"received":{"description":"This leaf indicates whether the neighbor advertised the\nability to support graceful-restart for this AFI-SAFI","type":"boolean","example":true},"enabled":{"description":"This leaf indicates whether graceful-restart is enabled for\nthis AFI-SAFI","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_config","type":"object","description":"Configuration parameters for the AFI-SAFI","properties":{"afi-safi-name":{"description":"AFI,SAFI","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"enabled":{"description":"This leaf indicates whether the IPv4 Unicast AFI,SAFI is\nenabled for the neighbour or group","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_state","type":"object","description":"State information relating to the AFI-SAFI","properties":{"prefixes":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_state_prefixes"},"afi-safi-name":{"description":"AFI,SAFI","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"active":{"description":"This value indicates whether a particular AFI-SAFI has\nbeen succesfully negotiated with the peer. An AFI-SAFI\nmay be enabled in the current running configuration, but a\nsession restart may be required in order to negotiate the new\ncapability.","type":"boolean","example":true},"enabled":{"description":"This leaf indicates whether the IPv4 Unicast AFI,SAFI is\nenabled for the neighbour or group","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_state_prefixes":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_state_prefixes","type":"object","description":"Prefix counters for the BGP session","properties":{"installed":{"description":"The number of advertised prefixes installed in the\nLoc-RIB","type":"integer","format":"int64","example":0},"received":{"description":"The number of prefixes received from the neighbor","type":"integer","format":"int64","example":0},"sent":{"description":"The number of prefixes advertised to the neighbor","type":"integer","format":"int64","example":0}},"xml":{"name":"prefixes","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy","type":"object","description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config"}},"xml":{"name":"apply-policy","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config","type":"object","description":"Policy configuration data.","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_state","type":"object","description":"Operational state for routing policy","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast","type":"object","description":"IPv4 unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config"}},"xml":{"name":"ipv4-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config","type":"object","description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_state","type":"object","description":"State information for common IPv4 and IPv6 unicast\nparameters","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast","type":"object","description":"IPv6 unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config"}},"xml":{"name":"ipv6-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config","type":"object","description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_state","type":"object","description":"State information for common IPv4 and IPv6 unicast\nparameters","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object","description":"IPv4 Labelled Unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}},"xml":{"name":"ipv4-labelled-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object","description":"IPv6 Labelled Unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}},"xml":{"name":"ipv6-labelled-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object","description":"Unicast IPv4 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv4-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object","description":"Unicast IPv6 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv6-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object","description":"Multicast IPv4 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv4-multicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object","description":"Multicast IPv6 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv6-multicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls","type":"object","description":"BGP-signalled VPLS configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}},"xml":{"name":"l2vpn-vpls","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn","type":"object","description":"BGP EVPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}},"xml":{"name":"l2vpn-evpn","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths","type":"object","description":"Parameters related to the use of multiple-paths for the same\nNLRI when they are received only from this neighbor","properties":{"ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp"},"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_state"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_config"}},"xml":{"name":"use-multiple-paths","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_config","type":"object","description":"Configuration parameters relating to multipath","properties":{"enabled":{"description":"Whether the use of multiple paths for the same NLRI is\nenabled for the neighbor. This value is overridden by\nany more specific configuration value.","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_state","type":"object","description":"State parameters relating to multipath","properties":{"enabled":{"description":"Whether the use of multiple paths for the same NLRI is\nenabled for the neighbor. This value is overridden by\nany more specific configuration value.","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp","type":"object","description":"Multipath configuration for eBGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}},"xml":{"name":"ebgp","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object","description":"Configuration parameters relating to eBGP multipath","properties":{"allow-multiple-as":{"description":"Allow multipath to use paths from different neighbouring\nASes.  The default is to only consider multiple paths from\nthe same neighbouring AS.","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_afi-safis_afi-safi_use-multiple-paths_ebgp_state","type":"object","description":"State information relating to eBGP multipath","properties":{"allow-multiple-as":{"description":"Allow multipath to use paths from different neighbouring\nASes.  The default is to only consider multiple paths from\nthe same neighbouring AS.","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_apply-policy":{"title":"openconfig-bgp_bgp_neighbors_neighbor_apply-policy","type":"object","description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_apply-policy_config"}},"xml":{"name":"apply-policy","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_apply-policy_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_apply-policy_config","type":"object","description":"Policy configuration data.","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_apply-policy_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_apply-policy_state","type":"object","description":"Operational state for routing policy","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_graceful-restart":{"title":"openconfig-bgp_bgp_neighbors_neighbor_graceful-restart","type":"object","description":"Parameters relating the graceful restart mechanism for BGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_config"}},"xml":{"name":"graceful-restart","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_config","type":"object","description":"Configuration parameters relating to graceful-restart","properties":{"stale-routes-time":{"description":"An upper-bound on the time thate stale routes will be\nretained by a router after a session is restarted. If an\nEnd-of-RIB (EOR) marker is received prior to this timer\nexpiring stale-routes will be flushed upon its receipt - if\nno EOR is received, then when this timer expires stale paths\nwill be purged. This timer is referred to as the\nSelection_Deferral_Timer in RFC4724","type":"number","example":-92233720368547758.08},"restart-time":{"description":"Estimated time (in seconds) for the local BGP speaker to\nrestart a session. This value is advertise in the graceful\nrestart BGP capability.  This is a 12-bit value, referred to\nas Restart Time in RFC4724.  Per RFC4724, the suggested\ndefault value is &lt;= the hold-time value.","type":"integer","format":"int32","example":0},"helper-only":{"description":"Enable graceful-restart in helper mode only. When this\nleaf is set, the local system does not retain forwarding\nits own state during a restart, but supports procedures\nfor the receiving speaker, as defined in RFC4724.","type":"boolean","example":true},"enabled":{"description":"Enable or disable the graceful-restart capability.","type":"boolean","example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_graceful-restart_state","type":"object","description":"State information associated with graceful-restart","properties":{"mode":{"description":"Ths leaf indicates the mode of operation of BGP graceful\nrestart with the peer","type":"string","enum":["HELPER-ONLY","BILATERAL","REMOTE-HELPER"],"example":"HELPER-ONLY"},"stale-routes-time":{"description":"An upper-bound on the time thate stale routes will be\nretained by a router after a session is restarted. If an\nEnd-of-RIB (EOR) marker is received prior to this timer\nexpiring stale-routes will be flushed upon its receipt - if\nno EOR is received, then when this timer expires stale paths\nwill be purged. This timer is referred to as the\nSelection_Deferral_Timer in RFC4724","type":"number","example":-92233720368547758.08},"local-restarting":{"description":"This flag indicates whether the local neighbor is currently\nrestarting. The flag is unset after all NLRI have been\nadvertised to the peer, and the End-of-RIB (EOR) marker has\nbeen unset","type":"boolean","example":true},"restart-time":{"description":"Estimated time (in seconds) for the local BGP speaker to\nrestart a session. This value is advertise in the graceful\nrestart BGP capability.  This is a 12-bit value, referred to\nas Restart Time in RFC4724.  Per RFC4724, the suggested\ndefault value is &lt;= the hold-time value.","type":"integer","format":"int32","example":0},"helper-only":{"description":"Enable graceful-restart in helper mode only. When this\nleaf is set, the local system does not retain forwarding\nits own state during a restart, but supports procedures\nfor the receiving speaker, as defined in RFC4724.","type":"boolean","example":true},"peer-restart-time":{"description":"The period of time (advertised by the peer) that\nthe peer expects a restart of a BGP session to\ntake","type":"integer","format":"int32","example":0},"enabled":{"description":"Enable or disable the graceful-restart capability.","type":"boolean","example":true},"peer-restarting":{"description":"This flag indicates whether the remote neighbor is currently\nin the process of restarting, and hence received routes are\ncurrently stale","type":"boolean","example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths":{"title":"openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths","type":"object","description":"Parameters related to the use of multiple-paths for the same\nNLRI when they are received only from this neighbor","properties":{"ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp"},"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_state"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_config"}},"xml":{"name":"use-multiple-paths","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_config","type":"object","description":"Configuration parameters relating to multipath","properties":{"enabled":{"description":"Whether the use of multiple paths for the same NLRI is\nenabled for the neighbor. This value is overridden by\nany more specific configuration value.","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_state","type":"object","description":"State parameters relating to multipath","properties":{"enabled":{"description":"Whether the use of multiple paths for the same NLRI is\nenabled for the neighbor. This value is overridden by\nany more specific configuration value.","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp":{"title":"openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp","type":"object","description":"Multipath configuration for eBGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_config"}},"xml":{"name":"ebgp","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_config":{"title":"openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_config","type":"object","description":"Configuration parameters relating to eBGP multipath","properties":{"allow-multiple-as":{"description":"Allow multipath to use paths from different neighbouring\nASes.  The default is to only consider multiple paths from\nthe same neighbouring AS.","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_state":{"title":"openconfig-bgp_bgp_neighbors_neighbor_use-multiple-paths_ebgp_state","type":"object","description":"State information relating to eBGP multipath","properties":{"allow-multiple-as":{"description":"Allow multipath to use paths from different neighbouring\nASes.  The default is to only consider multiple paths from\nthe same neighbouring AS.","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups":{"title":"openconfig-bgp_bgp_peer-groups","type":"object","description":"Configuration for BGP peer-groups","properties":{"peer-group":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group"},"description":"List of BGP peer-groups configured on the local system -\nuniquely identified by peer-group name"}},"xml":{"name":"peer-groups","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group":{"title":"openconfig-bgp_bgp_peer-groups_peer-group","type":"object","description":"List of BGP peer-groups configured on the local system -\nuniquely identified by peer-group name","properties":{"timers":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers"},"apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy"},"route-reflector":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector"},"peer-group-name":{"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list","type":"string","example":"Some peer-group-name"},"transport":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport"},"as-path-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options"},"ebgp-multihop":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop"},"error-handling":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling"},"use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths"},"add-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths"},"afi-safis":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis"},"graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart"},"logging-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_config"}},"xml":{"name":"peer-group","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_config","type":"object","description":"Configuration parameters relating to the BGP neighbor or\ngroup","properties":{"peer-type":{"description":"Explicitly designate the peer or peer group as internal\n(iBGP) or external (eBGP).","type":"string","enum":["INTERNAL","EXTERNAL"],"example":"INTERNAL"},"remove-private-as":{"description":"Remove private AS numbers from updates sent to peers.","type":"string","enum":["ALL","REPLACE"],"example":"ALL"},"send-community":{"description":"Specify which types of community should be sent to the\nneighbor or group. The default is to not send the\ncommunity attribute","type":"string","enum":["STANDARD","EXTENDED","BOTH","NONE"],"default":"NONE","example":"STANDARD"},"description":{"description":"An optional textual description (intended primarily for use\nwith a peer or group","type":"string","example":"Some description"},"peer-group-name":{"description":"Name of the BGP peer-group","type":"string","example":"Some peer-group-name"},"peer-as":{"description":"AS number of the peer.","type":"integer","format":"int64","example":0},"route-flap-damping":{"description":"Enable route flap damping.","type":"boolean","default":false,"example":true},"auth-password":{"description":"Configures an MD5 authentication password for use with\nneighboring devices.","type":"string","example":"Some auth-password"},"local-as":{"description":"The local autonomous system number that is to be used\nwhen establishing sessions with the remote peer or peer\ngroup, if this differs from the global BGP router\nautonomous system number.","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_state","type":"object","description":"State information relating to the BGP neighbor or group","properties":{"peer-type":{"description":"Explicitly designate the peer or peer group as internal\n(iBGP) or external (eBGP).","type":"string","enum":["INTERNAL","EXTERNAL"],"example":"INTERNAL"},"total-prefixes":{"description":"","type":"integer","format":"int64","example":0},"total-paths":{"description":"Total number of BGP paths within the context","type":"integer","format":"int64","example":0},"remove-private-as":{"description":"Remove private AS numbers from updates sent to peers.","type":"string","enum":["ALL","REPLACE"],"example":"ALL"},"send-community":{"description":"Specify which types of community should be sent to the\nneighbor or group. The default is to not send the\ncommunity attribute","type":"string","enum":["STANDARD","EXTENDED","BOTH","NONE"],"default":"NONE","example":"STANDARD"},"description":{"description":"An optional textual description (intended primarily for use\nwith a peer or group","type":"string","example":"Some description"},"peer-group-name":{"description":"Name of the BGP peer-group","type":"string","example":"Some peer-group-name"},"peer-as":{"description":"AS number of the peer.","type":"integer","format":"int64","example":0},"route-flap-damping":{"description":"Enable route flap damping.","type":"boolean","default":false,"example":true},"auth-password":{"description":"Configures an MD5 authentication password for use with\nneighboring devices.","type":"string","example":"Some auth-password"},"local-as":{"description":"The local autonomous system number that is to be used\nwhen establishing sessions with the remote peer or peer\ngroup, if this differs from the global BGP router\nautonomous system number.","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_timers":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_timers","type":"object","description":"Timers related to a BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_timers_config"}},"xml":{"name":"timers","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_timers_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_timers_config","type":"object","description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","properties":{"minimum-advertisement-interval":{"description":"Minimum time which must elapse between subsequent UPDATE\nmessages relating to a common set of NLRI being transmitted\nto a peer. This timer is referred to as\nMinRouteAdvertisementIntervalTimer by RFC 4721 and serves to\nreduce the number of UPDATE messages transmitted when a\nparticular set of NLRI exhibit instability.","type":"number","default":30,"example":-92233720368547758.08},"connect-retry":{"description":"Time interval in seconds between attempts to establish a\nsession with the peer.","type":"number","default":30,"example":-92233720368547758.08},"keepalive-interval":{"description":"Time interval in seconds between transmission of keepalive\nmessages to the neighbor.  Typically set to 1/3 the\nhold-time.","type":"number","default":30,"example":-92233720368547758.08},"hold-time":{"description":"Time interval in seconds that a BGP session will be\nconsidered active in the absence of keepalive or other\nmessages from the peer.  The hold-time is typically\nset to 3x the keepalive-interval.","type":"number","default":90,"example":-92233720368547758.08}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_timers_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_timers_state","type":"object","description":"State information relating to the timers used for the BGP\nneighbor or group","properties":{"minimum-advertisement-interval":{"description":"Minimum time which must elapse between subsequent UPDATE\nmessages relating to a common set of NLRI being transmitted\nto a peer. This timer is referred to as\nMinRouteAdvertisementIntervalTimer by RFC 4721 and serves to\nreduce the number of UPDATE messages transmitted when a\nparticular set of NLRI exhibit instability.","type":"number","default":30,"example":-92233720368547758.08},"connect-retry":{"description":"Time interval in seconds between attempts to establish a\nsession with the peer.","type":"number","default":30,"example":-92233720368547758.08},"keepalive-interval":{"description":"Time interval in seconds between transmission of keepalive\nmessages to the neighbor.  Typically set to 1/3 the\nhold-time.","type":"number","default":30,"example":-92233720368547758.08},"hold-time":{"description":"Time interval in seconds that a BGP session will be\nconsidered active in the absence of keepalive or other\nmessages from the peer.  The hold-time is typically\nset to 3x the keepalive-interval.","type":"number","default":90,"example":-92233720368547758.08}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_transport":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_transport","type":"object","description":"Transport session parameters for the BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_transport_config"}},"xml":{"name":"transport","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_transport_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_transport_config","type":"object","description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","properties":{"tcp-mss":{"description":"Sets the max segment size for BGP TCP sessions.","type":"integer","format":"int32","example":0},"passive-mode":{"description":"Wait for peers to issue requests to open a BGP session,\nrather than initiating sessions from the local router.","type":"boolean","default":false,"example":true},"mtu-discovery":{"description":"Turns path mtu discovery for BGP TCP sessions on (true)\nor off (false)","type":"boolean","default":false,"example":true},"local-address":{"description":"Set the local IP (either IPv4 or IPv6) address to use\nfor the session when sending BGP update messages.  This\nmay be expressed as either an IP address or reference\nto the name of an interface.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_transport_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_transport_state","type":"object","description":"State information relating to the transport session(s)\nused for the BGP neighbor or group","properties":{"tcp-mss":{"description":"Sets the max segment size for BGP TCP sessions.","type":"integer","format":"int32","example":0},"passive-mode":{"description":"Wait for peers to issue requests to open a BGP session,\nrather than initiating sessions from the local router.","type":"boolean","default":false,"example":true},"mtu-discovery":{"description":"Turns path mtu discovery for BGP TCP sessions on (true)\nor off (false)","type":"boolean","default":false,"example":true},"local-address":{"description":"Set the local IP (either IPv4 or IPv6) address to use\nfor the session when sending BGP update messages.  This\nmay be expressed as either an IP address or reference\nto the name of an interface.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_error-handling":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_error-handling","type":"object","description":"Error handling parameters used for the BGP neighbor or\ngroup","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_error-handling_config"}},"xml":{"name":"error-handling","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_error-handling_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_error-handling_config","type":"object","description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","properties":{"treat-as-withdraw":{"description":"Specify whether erroneous UPDATE messages for which the\nNLRI can be extracted are treated as though the NLRI is\nwithdrawn - avoiding session reset","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_error-handling_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_error-handling_state","type":"object","description":"State information relating to enhanced error handling\nmechanisms for the BGP neighbor or group","properties":{"treat-as-withdraw":{"description":"Specify whether erroneous UPDATE messages for which the\nNLRI can be extracted are treated as though the NLRI is\nwithdrawn - avoiding session reset","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_logging-options":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_logging-options","type":"object","description":"Logging options for events related to the BGP neighbor or\ngroup","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_logging-options_config"}},"xml":{"name":"logging-options","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_logging-options_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_logging-options_config","type":"object","description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","properties":{"log-neighbor-state-changes":{"description":"Configure logging of peer state changes.  Default is\nto enable logging of peer state changes.","type":"boolean","default":true,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_logging-options_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_logging-options_state","type":"object","description":"State information relating to logging for the BGP neighbor\nor group","properties":{"log-neighbor-state-changes":{"description":"Configure logging of peer state changes.  Default is\nto enable logging of peer state changes.","type":"boolean","default":true,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop","type":"object","description":"eBGP multi-hop parameters for the BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_config"}},"xml":{"name":"ebgp-multihop","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_config","type":"object","description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","properties":{"multihop-ttl":{"description":"Time-to-live value to use when packets are sent to the\nreferenced group or neighbors and ebgp-multihop is enabled","type":"integer","format":"int32","example":0},"enabled":{"description":"When enabled the referenced group or neighbors are permitted\nto be indirectly connected - including cases where the TTL\ncan be decremented between the BGP peers","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_ebgp-multihop_state","type":"object","description":"State information for eBGP multihop, for the BGP neighbor\nor group","properties":{"multihop-ttl":{"description":"Time-to-live value to use when packets are sent to the\nreferenced group or neighbors and ebgp-multihop is enabled","type":"integer","format":"int32","example":0},"enabled":{"description":"When enabled the referenced group or neighbors are permitted\nto be indirectly connected - including cases where the TTL\ncan be decremented between the BGP peers","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_route-reflector":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_route-reflector","type":"object","description":"Route reflector parameters for the BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_config"}},"xml":{"name":"route-reflector","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_config","type":"object","description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","properties":{"route-reflector-cluster-id":{"description":"route-reflector cluster id to use when local router is\nconfigured as a route reflector.  Commonly set at the group\nlevel, but allows a different cluster\nid to be set for each neighbor.","type":"integer","format":"int64","example":0},"route-reflector-client":{"description":"Configure the neighbor as a route reflector client.","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_route-reflector_state","type":"object","description":"State information relating to route reflection for the\nBGP neighbor or group","properties":{"route-reflector-cluster-id":{"description":"route-reflector cluster id to use when local router is\nconfigured as a route reflector.  Commonly set at the group\nlevel, but allows a different cluster\nid to be set for each neighbor.","type":"integer","format":"int64","example":0},"route-reflector-client":{"description":"Configure the neighbor as a route reflector client.","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_as-path-options":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_as-path-options","type":"object","description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_config"}},"xml":{"name":"as-path-options","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_config","type":"object","description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","properties":{"replace-peer-as":{"description":"Replace occurrences of the peer's AS in the AS_PATH\nwith the local autonomous system number","type":"boolean","default":false,"example":true},"allow-own-as":{"description":"Specify the number of occurrences of the local BGP speaker's\nAS that can occur within the AS_PATH before it is rejected.","type":"string","default":"0"}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_as-path-options_state","type":"object","description":"State information relating to the AS_PATH manipulation\nmechanisms for the BGP peer or group","properties":{"replace-peer-as":{"description":"Replace occurrences of the peer's AS in the AS_PATH\nwith the local autonomous system number","type":"boolean","default":false,"example":true},"allow-own-as":{"description":"Specify the number of occurrences of the local BGP speaker's\nAS that can occur within the AS_PATH before it is rejected.","type":"string","default":"0"}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_add-paths":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_add-paths","type":"object","description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_add-paths_config"}},"xml":{"name":"add-paths","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_add-paths_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_add-paths_config","type":"object","description":"Configuration parameters relating to ADD_PATHS","properties":{"receive":{"description":"Enable ability to receive multiple path advertisements\nfor an NLRI from the neighbor or group","type":"boolean","default":false,"example":true},"send-max":{"description":"The maximum number of paths to advertise to neighbors\nfor a single NLRI","type":"integer","format":"int32","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_add-paths_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_add-paths_state","type":"object","description":"State information associated with ADD_PATHS","properties":{"receive":{"description":"Enable ability to receive multiple path advertisements\nfor an NLRI from the neighbor or group","type":"boolean","default":false,"example":true},"send-max":{"description":"The maximum number of paths to advertise to neighbors\nfor a single NLRI","type":"integer","format":"int32","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis","type":"object","description":"Per-address-family configuration parameters associated with\nthe neighbor or group","properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi"},"description":"AFI,SAFI configuration available for the\nneighbour or group"}},"xml":{"name":"afi-safis","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi","type":"object","description":"AFI,SAFI configuration available for the\nneighbour or group","properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy"},"ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast"},"ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast"},"l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls"},"ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast"},"l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast"},"l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn"},"ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast"},"use-multiple-paths":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths"},"route-selection-options":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options"},"l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast"},"l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast"},"afi-safi-name":{"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"graceful-restart":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_config"},"l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast"}},"xml":{"name":"afi-safi","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart","type":"object","description":"Parameters relating to BGP graceful-restart","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config"}},"xml":{"name":"graceful-restart","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config","type":"object","description":"Configuration options for BGP graceful-restart","properties":{"enabled":{"description":"This leaf indicates whether graceful-restart is enabled for\nthis AFI-SAFI","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_state","type":"object","description":"State information for BGP graceful-restart","properties":{"enabled":{"description":"This leaf indicates whether graceful-restart is enabled for\nthis AFI-SAFI","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_config","type":"object","description":"Configuration parameters for the AFI-SAFI","properties":{"afi-safi-name":{"description":"AFI,SAFI","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"enabled":{"description":"This leaf indicates whether the IPv4 Unicast AFI,SAFI is\nenabled for the neighbour or group","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_state","type":"object","description":"State information relating to the AFI-SAFI","properties":{"afi-safi-name":{"description":"AFI,SAFI","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"enabled":{"description":"This leaf indicates whether the IPv4 Unicast AFI,SAFI is\nenabled for the neighbour or group","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy","type":"object","description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config"}},"xml":{"name":"apply-policy","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config","type":"object","description":"Policy configuration data.","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_state","type":"object","description":"Operational state for routing policy","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast","type":"object","description":"IPv4 unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config"}},"xml":{"name":"ipv4-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config","type":"object","description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_state","type":"object","description":"State information for common IPv4 and IPv6 unicast\nparameters","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast","type":"object","description":"IPv6 unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config"}},"xml":{"name":"ipv6-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config","type":"object","description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_state","type":"object","description":"State information for common IPv4 and IPv6 unicast\nparameters","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object","description":"IPv4 Labelled Unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}},"xml":{"name":"ipv4-labelled-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object","description":"IPv6 Labelled Unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}},"xml":{"name":"ipv6-labelled-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object","description":"Unicast IPv4 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv4-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object","description":"Unicast IPv6 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv6-unicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object","description":"Multicast IPv4 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv4-multicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object","description":"Multicast IPv6 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv6-multicast","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls","type":"object","description":"BGP-signalled VPLS configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}},"xml":{"name":"l2vpn-vpls","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn","type":"object","description":"BGP EVPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}},"xml":{"name":"l2vpn-evpn","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths","type":"object","description":"Parameters related to the use of multiple paths for the\nsame NLRI","properties":{"ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp"},"ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp"},"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_state"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_config"}},"xml":{"name":"use-multiple-paths","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_config","type":"object","description":"Configuration parameters relating to multipath","properties":{"enabled":{"description":"Whether the use of multiple paths for the same NLRI is\nenabled for the neighbor. This value is overridden by\nany more specific configuration value.","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_state","type":"object","description":"State parameters relating to multipath","properties":{"enabled":{"description":"Whether the use of multiple paths for the same NLRI is\nenabled for the neighbor. This value is overridden by\nany more specific configuration value.","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp","type":"object","description":"Multipath parameters for eBGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_config"}},"xml":{"name":"ebgp","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_config","type":"object","description":"Configuration parameters relating to eBGP multipath","properties":{"allow-multiple-as":{"description":"Allow multipath to use paths from different neighbouring\nASes.  The default is to only consider multiple paths from\nthe same neighbouring AS.","type":"boolean","default":false,"example":true},"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\nBGP multipath. The default is use a single path.","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ebgp_state","type":"object","description":"State information relating to eBGP multipath","properties":{"allow-multiple-as":{"description":"Allow multipath to use paths from different neighbouring\nASes.  The default is to only consider multiple paths from\nthe same neighbouring AS.","type":"boolean","default":false,"example":true},"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\nBGP multipath. The default is use a single path.","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp","type":"object","description":"Multipath parameters for iBGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_config"}},"xml":{"name":"ibgp","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_config","type":"object","description":"Configuration parameters relating to iBGP multipath","properties":{"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\niBGP multipath. The default is to use a single path","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_use-multiple-paths_ibgp_state","type":"object","description":"State information relating to iBGP multipath","properties":{"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\niBGP multipath. The default is to use a single path","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options","type":"object","description":"Parameters relating to options for route selection","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_config"}},"xml":{"name":"route-selection-options","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_config","type":"object","description":"Configuration parameters relating to route selection\noptions","properties":{"always-compare-med":{"description":"Compare multi-exit discriminator (MED) value from\ndifferent ASes when selecting the best route.  The\ndefault behavior is to only compare MEDs for paths\nreceived from the same AS.","type":"boolean","default":false,"example":true},"advertise-inactive-routes":{"description":"Advertise inactive routes to external peers.  The\ndefault is to only advertise active routes.","type":"boolean","default":false,"example":true},"ignore-as-path-length":{"description":"Ignore the AS path length when selecting the best path.\nThe default is to use the AS path length and prefer paths\nwith shorter length.","type":"boolean","default":false,"example":true},"enable-aigp":{"description":"Flag to enable sending / receiving accumulated IGP\nattribute in routing updates","type":"boolean","default":false,"example":true},"ignore-next-hop-igp-metric":{"description":"Ignore the IGP metric to the next-hop when calculating\nBGP best-path. The default is to select the route for\nwhich the metric to the next-hop is lowest","type":"boolean","default":false,"example":true},"external-compare-router-id":{"description":"When comparing similar routes received from external\nBGP peers, use the router-id as a criterion to select\nthe active path.","type":"boolean","default":true,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_afi-safis_afi-safi_route-selection-options_state","type":"object","description":"State information for the route selection options","properties":{"always-compare-med":{"description":"Compare multi-exit discriminator (MED) value from\ndifferent ASes when selecting the best route.  The\ndefault behavior is to only compare MEDs for paths\nreceived from the same AS.","type":"boolean","default":false,"example":true},"advertise-inactive-routes":{"description":"Advertise inactive routes to external peers.  The\ndefault is to only advertise active routes.","type":"boolean","default":false,"example":true},"ignore-as-path-length":{"description":"Ignore the AS path length when selecting the best path.\nThe default is to use the AS path length and prefer paths\nwith shorter length.","type":"boolean","default":false,"example":true},"enable-aigp":{"description":"Flag to enable sending / receiving accumulated IGP\nattribute in routing updates","type":"boolean","default":false,"example":true},"ignore-next-hop-igp-metric":{"description":"Ignore the IGP metric to the next-hop when calculating\nBGP best-path. The default is to select the route for\nwhich the metric to the next-hop is lowest","type":"boolean","default":false,"example":true},"external-compare-router-id":{"description":"When comparing similar routes received from external\nBGP peers, use the router-id as a criterion to select\nthe active path.","type":"boolean","default":true,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_apply-policy":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_apply-policy","type":"object","description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_config"}},"xml":{"name":"apply-policy","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_config","type":"object","description":"Policy configuration data.","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_apply-policy_state","type":"object","description":"Operational state for routing policy","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart","type":"object","description":"Parameters relating the graceful restart mechanism for BGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_config"}},"xml":{"name":"graceful-restart","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_config","type":"object","description":"Configuration parameters relating to graceful-restart","properties":{"stale-routes-time":{"description":"An upper-bound on the time thate stale routes will be\nretained by a router after a session is restarted. If an\nEnd-of-RIB (EOR) marker is received prior to this timer\nexpiring stale-routes will be flushed upon its receipt - if\nno EOR is received, then when this timer expires stale paths\nwill be purged. This timer is referred to as the\nSelection_Deferral_Timer in RFC4724","type":"number","example":-92233720368547758.08},"restart-time":{"description":"Estimated time (in seconds) for the local BGP speaker to\nrestart a session. This value is advertise in the graceful\nrestart BGP capability.  This is a 12-bit value, referred to\nas Restart Time in RFC4724.  Per RFC4724, the suggested\ndefault value is &lt;= the hold-time value.","type":"integer","format":"int32","example":0},"helper-only":{"description":"Enable graceful-restart in helper mode only. When this\nleaf is set, the local system does not retain forwarding\nits own state during a restart, but supports procedures\nfor the receiving speaker, as defined in RFC4724.","type":"boolean","example":true},"enabled":{"description":"Enable or disable the graceful-restart capability.","type":"boolean","example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_graceful-restart_state","type":"object","description":"State information associated with graceful-restart","properties":{"stale-routes-time":{"description":"An upper-bound on the time thate stale routes will be\nretained by a router after a session is restarted. If an\nEnd-of-RIB (EOR) marker is received prior to this timer\nexpiring stale-routes will be flushed upon its receipt - if\nno EOR is received, then when this timer expires stale paths\nwill be purged. This timer is referred to as the\nSelection_Deferral_Timer in RFC4724","type":"number","example":-92233720368547758.08},"restart-time":{"description":"Estimated time (in seconds) for the local BGP speaker to\nrestart a session. This value is advertise in the graceful\nrestart BGP capability.  This is a 12-bit value, referred to\nas Restart Time in RFC4724.  Per RFC4724, the suggested\ndefault value is &lt;= the hold-time value.","type":"integer","format":"int32","example":0},"helper-only":{"description":"Enable graceful-restart in helper mode only. When this\nleaf is set, the local system does not retain forwarding\nits own state during a restart, but supports procedures\nfor the receiving speaker, as defined in RFC4724.","type":"boolean","example":true},"enabled":{"description":"Enable or disable the graceful-restart capability.","type":"boolean","example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths","type":"object","description":"Parameters related to the use of multiple paths for the\nsame NLRI","properties":{"ibgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp"},"ebgp":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp"},"state":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_state"},"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_config"}},"xml":{"name":"use-multiple-paths","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_config","type":"object","description":"Configuration parameters relating to multipath","properties":{"enabled":{"description":"Whether the use of multiple paths for the same NLRI is\nenabled for the neighbor. This value is overridden by\nany more specific configuration value.","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_state","type":"object","description":"State parameters relating to multipath","properties":{"enabled":{"description":"Whether the use of multiple paths for the same NLRI is\nenabled for the neighbor. This value is overridden by\nany more specific configuration value.","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp","type":"object","description":"Multipath parameters for eBGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_config"}},"xml":{"name":"ebgp","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_config","type":"object","description":"Configuration parameters relating to eBGP multipath","properties":{"allow-multiple-as":{"description":"Allow multipath to use paths from different neighbouring\nASes.  The default is to only consider multiple paths from\nthe same neighbouring AS.","type":"boolean","default":false,"example":true},"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\nBGP multipath. The default is use a single path.","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ebgp_state","type":"object","description":"State information relating to eBGP multipath","properties":{"allow-multiple-as":{"description":"Allow multipath to use paths from different neighbouring\nASes.  The default is to only consider multiple paths from\nthe same neighbouring AS.","type":"boolean","default":false,"example":true},"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\nBGP multipath. The default is use a single path.","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp","type":"object","description":"Multipath parameters for iBGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_config"}},"xml":{"name":"ibgp","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_config":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_config","type":"object","description":"Configuration parameters relating to iBGP multipath","properties":{"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\niBGP multipath. The default is to use a single path","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_state":{"title":"openconfig-bgp_bgp_peer-groups_peer-group_use-multiple-paths_ibgp_state","type":"object","description":"State information relating to iBGP multipath","properties":{"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\niBGP multipath. The default is to use a single path","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/bgp"}},"openconfig-interfaces_interfaces":{"title":"openconfig-interfaces_interfaces","type":"object","description":"Top level container for interfaces, including configuration\nand state data.","properties":{"interface":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface"},"description":"The list of named interfaces on the device."}},"xml":{"name":"interfaces","namespace":"http://openconfig.net/yang/interfaces"}},"openconfig-interfaces_interfaces_interface":{"title":"openconfig-interfaces_interfaces_interface","type":"object","description":"The list of named interfaces on the device.","properties":{"name":{"description":"References the configured name of the interface","type":"string","example":"Some name"},"state":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_state"},"subinterfaces":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces"},"config":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_config"},"hold-time":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time"}},"required":["config"],"xml":{"name":"interface","namespace":"http://openconfig.net/yang/interfaces"}},"openconfig-interfaces_interfaces_interface_config":{"title":"openconfig-interfaces_interfaces_interface_config","type":"object","description":"Configurable items at the global, physical interface\nlevel","properties":{"name":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.  The 'config false'\nlist interfaces/interface[name]/state contains the currently\nexisting interfaces on the device.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\ncorresponding state list, the server MAY reject\nthe request if the implementation does not support\npre-provisioning of interfaces or if the name refers to\nan interface that can never exist in the system.  A\nNETCONF server MUST reply with an rpc-error with the\nerror-tag 'invalid-value' in this case.\n\nThe IETF model in RFC 7223 provides YANG features for the\nfollowing (i.e., pre-provisioning and arbitrary-names),\nhowever they are omitted here:\n\n If the device supports pre-provisioning of interface\n configuration, the 'pre-provisioning' feature is\n advertised.\n\n If the device allows arbitrarily named user-controlled\n interfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\n/interfaces/interface[name]/state list.","type":"string","example":"Some name"},"description":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nA textual description of the interface.\n\nA server implementation MAY map this leaf to the ifAlias\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifAlias.  The definition of\nsuch a mechanism is outside the scope of this document.\n\nSince ifAlias is defined to be stored in non-volatile\nstorage, the MIB implementation MUST map ifAlias to the\nvalue of 'description' in the persistently stored\ndatastore.\n\nSpecifically, if the device supports ':startup', when\nifAlias is read the device MUST return the value of\n'description' in the 'startup' datastore, and when it is\nwritten, it MUST be written to the 'running' and 'startup'\ndatastores.  Note that it is up to the implementation to\n\ndecide whether to modify this single leaf in 'startup' or\nperform an implicit copy-config from 'running' to\n'startup'.\n\nIf the device does not support ':startup', ifAlias MUST\nbe mapped to the 'description' leaf in the 'running'\ndatastore.","type":"string","example":"Some description"},"type":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe type of the interface.\n\nWhen an interface entry is created, a server MAY\ninitialize the type leaf with a valid value, e.g., if it\nis possible to derive the type from the name of the\ninterface.\n\nIf a client tries to set the type of an interface to a\nvalue that can never be used by the system, e.g., if the\ntype is not supported or if the type does not match the\nname of the interface, the server MUST reject the request.\nA NETCONF server MUST reply with an rpc-error with the\nerror-tag 'invalid-value' in this case.","type":"string","enum":["interface-type"],"example":"interface-type"},"enabled":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThis leaf contains the configured, desired state of the\ninterface.\n\nSystems that implement the IF-MIB use the value of this\nleaf in the 'running' datastore to set\nIF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry\nhas been initialized, as described in RFC 2863.\n\nChanges in this leaf in the 'running' datastore are\nreflected in ifAdminStatus, but if ifAdminStatus is\nchanged over SNMP, this leaf is not affected.","type":"boolean","default":true,"example":true},"mtu":{"description":"Set the max transmission unit size in octets\nfor the physical interface.  If this is not set, the mtu is\nset to the operational default -- e.g., 1514 bytes on an\nEthernet interface.","type":"integer","format":"int32","example":0}},"required":["type"],"xml":{"name":"config","namespace":"http://openconfig.net/yang/interfaces"}},"openconfig-interfaces_interfaces_interface_state":{"title":"openconfig-interfaces_interfaces_interface_state","type":"object","description":"Operational state data at the global interface level","properties":{"ifindex":{"description":"System assigned number for each interface.  Corresponds to\nifIndex object in SNMP Interface MIB","type":"integer","format":"int64","example":0},"admin-status":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe desired state of the interface.  In RFC 7223 this leaf\nhas the same read semantics as ifAdminStatus.  Here, it\nreflects the administrative state as set by enabling or\ndisabling the interface.","type":"string","enum":["UP","DOWN","TESTING"],"example":"UP"},"last-change":{"description":"Date and time of the last state change of the interface\n(e.g., up-to-down transition).   This corresponds to the\nifLastChange object in the standard interface MIB.","type":"integer","format":"int64","example":0},"counters":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_state_counters"},"oper-status":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe current operational state of the interface.\n\nThis leaf has the same semantics as ifOperStatus.","type":"string","enum":["UP","DOWN","TESTING","UNKNOWN","DORMANT","NOT_PRESENT","LOWER_LAYER_DOWN"],"example":"UP"},"name":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.  The 'config false'\nlist interfaces/interface[name]/state contains the currently\nexisting interfaces on the device.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\ncorresponding state list, the server MAY reject\nthe request if the implementation does not support\npre-provisioning of interfaces or if the name refers to\nan interface that can never exist in the system.  A\nNETCONF server MUST reply with an rpc-error with the\nerror-tag 'invalid-value' in this case.\n\nThe IETF model in RFC 7223 provides YANG features for the\nfollowing (i.e., pre-provisioning and arbitrary-names),\nhowever they are omitted here:\n\n If the device supports pre-provisioning of interface\n configuration, the 'pre-provisioning' feature is\n advertised.\n\n If the device allows arbitrarily named user-controlled\n interfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\n/interfaces/interface[name]/state list.","type":"string","example":"Some name"},"description":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nA textual description of the interface.\n\nA server implementation MAY map this leaf to the ifAlias\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifAlias.  The definition of\nsuch a mechanism is outside the scope of this document.\n\nSince ifAlias is defined to be stored in non-volatile\nstorage, the MIB implementation MUST map ifAlias to the\nvalue of 'description' in the persistently stored\ndatastore.\n\nSpecifically, if the device supports ':startup', when\nifAlias is read the device MUST return the value of\n'description' in the 'startup' datastore, and when it is\nwritten, it MUST be written to the 'running' and 'startup'\ndatastores.  Note that it is up to the implementation to\n\ndecide whether to modify this single leaf in 'startup' or\nperform an implicit copy-config from 'running' to\n'startup'.\n\nIf the device does not support ':startup', ifAlias MUST\nbe mapped to the 'description' leaf in the 'running'\ndatastore.","type":"string","example":"Some description"},"type":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe type of the interface.\n\nWhen an interface entry is created, a server MAY\ninitialize the type leaf with a valid value, e.g., if it\nis possible to derive the type from the name of the\ninterface.\n\nIf a client tries to set the type of an interface to a\nvalue that can never be used by the system, e.g., if the\ntype is not supported or if the type does not match the\nname of the interface, the server MUST reject the request.\nA NETCONF server MUST reply with an rpc-error with the\nerror-tag 'invalid-value' in this case.","type":"string","enum":["interface-type"],"example":"interface-type"},"enabled":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThis leaf contains the configured, desired state of the\ninterface.\n\nSystems that implement the IF-MIB use the value of this\nleaf in the 'running' datastore to set\nIF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry\nhas been initialized, as described in RFC 2863.\n\nChanges in this leaf in the 'running' datastore are\nreflected in ifAdminStatus, but if ifAdminStatus is\nchanged over SNMP, this leaf is not affected.","type":"boolean","default":true,"example":true},"mtu":{"description":"Set the max transmission unit size in octets\nfor the physical interface.  If this is not set, the mtu is\nset to the operational default -- e.g., 1514 bytes on an\nEthernet interface.","type":"integer","format":"int32","example":0}},"required":["admin-status","oper-status","type"],"xml":{"name":"state","namespace":"http://openconfig.net/yang/interfaces"}},"openconfig-interfaces_interfaces_interface_state_counters":{"title":"openconfig-interfaces_interfaces_interface_state_counters","type":"object","description":"A collection of interface-related statistics objects.","properties":{"in-unknown-protos":{"description":"[adapted from IETF interfaces model (RFC 7223)]\nChanged the counter type to counter64.\n\nFor packet-oriented interfaces, the number of packets\nreceived via the interface that were discarded because\nof an unknown or unsupported protocol.  For\ncharacter-oriented or fixed-length interfaces that\nsupport protocol multiplexing, the number of\ntransmission units received via the interface that were\ndiscarded because of an unknown or unsupported protocol.\nFor any interface that does not support protocol\nmultiplexing, this counter is not present.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","format":"int64","example":0},"last-clear":{"description":"Indicates the last time the interface counters were\ncleared.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"out-broadcast-pkts":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe total number of packets that higher-level protocols\nrequested be transmitted, and that were addressed to a\nbroadcast address at this sub-layer, including those\nthat were discarded or not sent.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-multicast-pkts":{"description":"[adapted from IETF interfaces model (RFC 7223)]\nChanged the counter type to counter64.\n\nThe total number of packets that higher-level protocols\nrequested be transmitted, and that were addressed to a\nmulticast address at this sub-layer, including those\nthat were discarded or not sent.  For a MAC-layer\nprotocol, this includes both Group and Functional\naddresses.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-discards":{"description":"[adapted from IETF interfaces model (RFC 7223)]\nChanged the counter type to counter64.\n\nThe number of outbound packets that were chosen to be\ndiscarded even though no errors had been detected to\nprevent their being transmitted.  One possible reason\nfor discarding such a packet could be to free up buffer\nspace.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-broadcast-pkts":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe number of packets, delivered by this sub-layer to a\nhigher (sub-)layer, that were addressed to a broadcast\naddress at this sub-layer.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-unicast-pkts":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe total number of packets that higher-level protocols\nrequested be transmitted, and that were not addressed\nto a multicast or broadcast address at this sub-layer,\nincluding those that were discarded or not sent.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-octets":{"description":"[adapted from IETF interfaces model (RFC 7223)]\nChanged the counter type to counter64.\n\nThe total number of octets transmitted out of the\ninterface, including framing characters.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-octets":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe total number of octets received on the interface,\nincluding framing characters.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-multicast-pkts":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\n\nThe number of packets, delivered by this sub-layer to a\nhigher (sub-)layer, that were addressed to a multicast\naddress at this sub-layer.  For a MAC-layer protocol,\nthis includes both Group and Functional addresses.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-errors":{"description":"[adapted from IETF interfaces model (RFC 7223)]\nChanged the counter type to counter64.\n\nFor packet-oriented interfaces, the number of inbound\npackets that contained errors preventing them from being\ndeliverable to a higher-layer protocol.  For character-\noriented or fixed-length interfaces, the number of\ninbound transmission units that contained errors\npreventing them from being deliverable to a higher-layer\nprotocol.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-discards":{"description":"[adapted from IETF interfaces model (RFC 7223)]\nChanged the counter type to counter64.\n\nThe number of inbound packets that were chosen to be\ndiscarded even though no errors had been detected to\nprevent their being deliverable to a higher-layer\nprotocol.  One possible reason for discarding such a\npacket could be to free up buffer space.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-unicast-pkts":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe number of packets, delivered by this sub-layer to a\nhigher (sub-)layer, that were not addressed to a\nmulticast or broadcast address at this sub-layer.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-errors":{"description":"[adapted from IETF interfaces model (RFC 7223)]\nChanged the counter type to counter64.\n\nFor packet-oriented interfaces, the number of outbound\npackets that could not be transmitted because of errors.\nFor character-oriented or fixed-length interfaces, the\nnumber of outbound transmission units that could not be\ntransmitted because of errors.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0}},"xml":{"name":"counters","namespace":"http://openconfig.net/yang/interfaces"}},"openconfig-interfaces_interfaces_interface_hold-time":{"title":"openconfig-interfaces_interfaces_interface_hold-time","type":"object","description":"Top-level container for hold-time settings to enable\ndampening advertisements of interface transitions.","properties":{"config":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_hold-time_config"}},"xml":{"name":"hold-time","namespace":"http://openconfig.net/yang/interfaces"}},"openconfig-interfaces_interfaces_interface_hold-time_config":{"title":"openconfig-interfaces_interfaces_interface_hold-time_config","type":"object","description":"Configuration data for interface hold-time settings.","properties":{"up":{"description":"Dampens advertisement when the interface\ntransitions from down to up.  A zero value means dampening\nis turned off, i.e., immediate notification.","type":"string","default":"0"},"down":{"description":"Dampens advertisement when the interface transitions from\nup to down.  A zero value means dampening is turned off,\ni.e., immediate notification.","type":"string","default":"0"}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/interfaces"}},"openconfig-interfaces_interfaces_interface_hold-time_state":{"title":"openconfig-interfaces_interfaces_interface_hold-time_state","type":"object","description":"Operational state data for interface hold-time.","properties":{"up":{"description":"Dampens advertisement when the interface\ntransitions from down to up.  A zero value means dampening\nis turned off, i.e., immediate notification.","type":"string","default":"0"},"down":{"description":"Dampens advertisement when the interface transitions from\nup to down.  A zero value means dampening is turned off,\ni.e., immediate notification.","type":"string","default":"0"}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/interfaces"}},"openconfig-interfaces_interfaces_interface_subinterfaces":{"title":"openconfig-interfaces_interfaces_interface_subinterfaces","type":"object","description":"Enclosing container for the list of subinterfaces associated\nwith a physical interface","properties":{"subinterface":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface"},"description":"The list of subinterfaces (logical interfaces) associated\nwith a physical interface"}},"xml":{"name":"subinterfaces","namespace":"http://openconfig.net/yang/interfaces"}},"openconfig-interfaces_interfaces_interface_subinterfaces_subinterface":{"title":"openconfig-interfaces_interfaces_interface_subinterfaces_subinterface","type":"object","description":"The list of subinterfaces (logical interfaces) associated\nwith a physical interface","properties":{"index":{"description":"The index number of the subinterface -- used to address\nthe logical interface","type":"string","default":"0"},"state":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_state"},"config":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_config"}},"xml":{"name":"subinterface","namespace":"http://openconfig.net/yang/interfaces"}},"openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_config":{"title":"openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_config","type":"object","description":"Configurable items at the subinterface level","properties":{"name":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.  The 'config false'\nlist interfaces/interface[name]/state contains the currently\nexisting interfaces on the device.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\ncorresponding state list, the server MAY reject\nthe request if the implementation does not support\npre-provisioning of interfaces or if the name refers to\nan interface that can never exist in the system.  A\nNETCONF server MUST reply with an rpc-error with the\nerror-tag 'invalid-value' in this case.\n\nThe IETF model in RFC 7223 provides YANG features for the\nfollowing (i.e., pre-provisioning and arbitrary-names),\nhowever they are omitted here:\n\n If the device supports pre-provisioning of interface\n configuration, the 'pre-provisioning' feature is\n advertised.\n\n If the device allows arbitrarily named user-controlled\n interfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\n/interfaces/interface[name]/state list.","type":"string","example":"Some name"},"index":{"description":"The index of the subinterface, or logical interface number.\nOn systems with no support for subinterfaces, or not using\nsubinterfaces, this value should default to 0, i.e., the\ndefault subinterface.","type":"string","default":"0"},"description":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nA textual description of the interface.\n\nA server implementation MAY map this leaf to the ifAlias\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifAlias.  The definition of\nsuch a mechanism is outside the scope of this document.\n\nSince ifAlias is defined to be stored in non-volatile\nstorage, the MIB implementation MUST map ifAlias to the\nvalue of 'description' in the persistently stored\ndatastore.\n\nSpecifically, if the device supports ':startup', when\nifAlias is read the device MUST return the value of\n'description' in the 'startup' datastore, and when it is\nwritten, it MUST be written to the 'running' and 'startup'\ndatastores.  Note that it is up to the implementation to\n\ndecide whether to modify this single leaf in 'startup' or\nperform an implicit copy-config from 'running' to\n'startup'.\n\nIf the device does not support ':startup', ifAlias MUST\nbe mapped to the 'description' leaf in the 'running'\ndatastore.","type":"string","example":"Some description"},"enabled":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThis leaf contains the configured, desired state of the\ninterface.\n\nSystems that implement the IF-MIB use the value of this\nleaf in the 'running' datastore to set\nIF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry\nhas been initialized, as described in RFC 2863.\n\nChanges in this leaf in the 'running' datastore are\nreflected in ifAdminStatus, but if ifAdminStatus is\nchanged over SNMP, this leaf is not affected.","type":"boolean","default":true,"example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/interfaces"}},"openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_state":{"title":"openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_state","type":"object","description":"Operational state data for logical interfaces","properties":{"ifindex":{"description":"System assigned number for each interface.  Corresponds to\nifIndex object in SNMP Interface MIB","type":"integer","format":"int64","example":0},"admin-status":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe desired state of the interface.  In RFC 7223 this leaf\nhas the same read semantics as ifAdminStatus.  Here, it\nreflects the administrative state as set by enabling or\ndisabling the interface.","type":"string","enum":["UP","DOWN","TESTING"],"example":"UP"},"last-change":{"description":"Date and time of the last state change of the interface\n(e.g., up-to-down transition).   This corresponds to the\nifLastChange object in the standard interface MIB.","type":"integer","format":"int64","example":0},"counters":{"$ref":"#/components/schemas/openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_state_counters"},"oper-status":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe current operational state of the interface.\n\nThis leaf has the same semantics as ifOperStatus.","type":"string","enum":["UP","DOWN","TESTING","UNKNOWN","DORMANT","NOT_PRESENT","LOWER_LAYER_DOWN"],"example":"UP"},"name":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe name of the interface.\n\nA device MAY restrict the allowed values for this leaf,\npossibly depending on the type of the interface.\nFor system-controlled interfaces, this leaf is the\ndevice-specific name of the interface.  The 'config false'\nlist interfaces/interface[name]/state contains the currently\nexisting interfaces on the device.\n\nIf a client tries to create configuration for a\nsystem-controlled interface that is not present in the\ncorresponding state list, the server MAY reject\nthe request if the implementation does not support\npre-provisioning of interfaces or if the name refers to\nan interface that can never exist in the system.  A\nNETCONF server MUST reply with an rpc-error with the\nerror-tag 'invalid-value' in this case.\n\nThe IETF model in RFC 7223 provides YANG features for the\nfollowing (i.e., pre-provisioning and arbitrary-names),\nhowever they are omitted here:\n\n If the device supports pre-provisioning of interface\n configuration, the 'pre-provisioning' feature is\n advertised.\n\n If the device allows arbitrarily named user-controlled\n interfaces, the 'arbitrary-names' feature is advertised.\n\nWhen a configured user-controlled interface is created by\nthe system, it is instantiated with the same name in the\n/interfaces/interface[name]/state list.","type":"string","example":"Some name"},"index":{"description":"The index of the subinterface, or logical interface number.\nOn systems with no support for subinterfaces, or not using\nsubinterfaces, this value should default to 0, i.e., the\ndefault subinterface.","type":"string","default":"0"},"description":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nA textual description of the interface.\n\nA server implementation MAY map this leaf to the ifAlias\nMIB object.  Such an implementation needs to use some\nmechanism to handle the differences in size and characters\nallowed between this leaf and ifAlias.  The definition of\nsuch a mechanism is outside the scope of this document.\n\nSince ifAlias is defined to be stored in non-volatile\nstorage, the MIB implementation MUST map ifAlias to the\nvalue of 'description' in the persistently stored\ndatastore.\n\nSpecifically, if the device supports ':startup', when\nifAlias is read the device MUST return the value of\n'description' in the 'startup' datastore, and when it is\nwritten, it MUST be written to the 'running' and 'startup'\ndatastores.  Note that it is up to the implementation to\n\ndecide whether to modify this single leaf in 'startup' or\nperform an implicit copy-config from 'running' to\n'startup'.\n\nIf the device does not support ':startup', ifAlias MUST\nbe mapped to the 'description' leaf in the 'running'\ndatastore.","type":"string","example":"Some description"},"enabled":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThis leaf contains the configured, desired state of the\ninterface.\n\nSystems that implement the IF-MIB use the value of this\nleaf in the 'running' datastore to set\nIF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry\nhas been initialized, as described in RFC 2863.\n\nChanges in this leaf in the 'running' datastore are\nreflected in ifAdminStatus, but if ifAdminStatus is\nchanged over SNMP, this leaf is not affected.","type":"boolean","default":true,"example":true}},"required":["admin-status","oper-status"],"xml":{"name":"state","namespace":"http://openconfig.net/yang/interfaces"}},"openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_state_counters":{"title":"openconfig-interfaces_interfaces_interface_subinterfaces_subinterface_state_counters","type":"object","description":"A collection of interface-related statistics objects.","properties":{"in-unknown-protos":{"description":"[adapted from IETF interfaces model (RFC 7223)]\nChanged the counter type to counter64.\n\nFor packet-oriented interfaces, the number of packets\nreceived via the interface that were discarded because\nof an unknown or unsupported protocol.  For\ncharacter-oriented or fixed-length interfaces that\nsupport protocol multiplexing, the number of\ntransmission units received via the interface that were\ndiscarded because of an unknown or unsupported protocol.\nFor any interface that does not support protocol\nmultiplexing, this counter is not present.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","format":"int64","example":0},"last-clear":{"description":"Indicates the last time the interface counters were\ncleared.","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"out-broadcast-pkts":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe total number of packets that higher-level protocols\nrequested be transmitted, and that were addressed to a\nbroadcast address at this sub-layer, including those\nthat were discarded or not sent.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-multicast-pkts":{"description":"[adapted from IETF interfaces model (RFC 7223)]\nChanged the counter type to counter64.\n\nThe total number of packets that higher-level protocols\nrequested be transmitted, and that were addressed to a\nmulticast address at this sub-layer, including those\nthat were discarded or not sent.  For a MAC-layer\nprotocol, this includes both Group and Functional\naddresses.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-discards":{"description":"[adapted from IETF interfaces model (RFC 7223)]\nChanged the counter type to counter64.\n\nThe number of outbound packets that were chosen to be\ndiscarded even though no errors had been detected to\nprevent their being transmitted.  One possible reason\nfor discarding such a packet could be to free up buffer\nspace.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-broadcast-pkts":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe number of packets, delivered by this sub-layer to a\nhigher (sub-)layer, that were addressed to a broadcast\naddress at this sub-layer.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-unicast-pkts":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe total number of packets that higher-level protocols\nrequested be transmitted, and that were not addressed\nto a multicast or broadcast address at this sub-layer,\nincluding those that were discarded or not sent.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-octets":{"description":"[adapted from IETF interfaces model (RFC 7223)]\nChanged the counter type to counter64.\n\nThe total number of octets transmitted out of the\ninterface, including framing characters.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-octets":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe total number of octets received on the interface,\nincluding framing characters.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-multicast-pkts":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\n\nThe number of packets, delivered by this sub-layer to a\nhigher (sub-)layer, that were addressed to a multicast\naddress at this sub-layer.  For a MAC-layer protocol,\nthis includes both Group and Functional addresses.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-errors":{"description":"[adapted from IETF interfaces model (RFC 7223)]\nChanged the counter type to counter64.\n\nFor packet-oriented interfaces, the number of inbound\npackets that contained errors preventing them from being\ndeliverable to a higher-layer protocol.  For character-\noriented or fixed-length interfaces, the number of\ninbound transmission units that contained errors\npreventing them from being deliverable to a higher-layer\nprotocol.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-discards":{"description":"[adapted from IETF interfaces model (RFC 7223)]\nChanged the counter type to counter64.\n\nThe number of inbound packets that were chosen to be\ndiscarded even though no errors had been detected to\nprevent their being deliverable to a higher-layer\nprotocol.  One possible reason for discarding such a\npacket could be to free up buffer space.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"in-unicast-pkts":{"description":"[adapted from IETF interfaces model (RFC 7223)]\n\nThe number of packets, delivered by this sub-layer to a\nhigher (sub-)layer, that were not addressed to a\nmulticast or broadcast address at this sub-layer.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0},"out-errors":{"description":"[adapted from IETF interfaces model (RFC 7223)]\nChanged the counter type to counter64.\n\nFor packet-oriented interfaces, the number of outbound\npackets that could not be transmitted because of errors.\nFor character-oriented or fixed-length interfaces, the\nnumber of outbound transmission units that could not be\ntransmitted because of errors.\n\nDiscontinuities in the value of this counter can occur\nat re-initialization of the management system, and at\nother times as indicated by the value of\n'discontinuity-time'.","type":"integer","example":0}},"xml":{"name":"counters","namespace":"http://openconfig.net/yang/interfaces"}},"openconfig-local-routing_local-routes":{"title":"openconfig-local-routing_local-routes","type":"object","description":"Top-level container for local routes","properties":{"static-routes":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes"},"config":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_config"},"local-aggregates":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates"}},"xml":{"name":"local-routes","namespace":"http://openconfig.net/yang/local-routing"}},"openconfig-local-routing_local-routes_config":{"title":"openconfig-local-routing_local-routes_config","type":"object","description":"Configuration data for locally defined routes","properties":{},"xml":{"name":"config","namespace":"http://openconfig.net/yang/local-routing"}},"openconfig-local-routing_local-routes_state":{"title":"openconfig-local-routing_local-routes_state","type":"object","description":"Operational state data for locally defined routes","properties":{},"xml":{"name":"state","namespace":"http://openconfig.net/yang/local-routing"}},"openconfig-local-routing_local-routes_static-routes":{"title":"openconfig-local-routing_local-routes_static-routes","type":"object","description":"Enclosing container for the list of static routes","properties":{"static":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static"},"description":"List of locally configured static routes"}},"xml":{"name":"static-routes","namespace":"http://openconfig.net/yang/local-routing"}},"openconfig-local-routing_local-routes_static-routes_static":{"title":"openconfig-local-routing_local-routes_static-routes_static","type":"object","description":"List of locally configured static routes","properties":{"prefix":{"description":"Reference to the destination prefix for the static\nroute","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"config":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_static-routes_static_config"}},"xml":{"name":"static","namespace":"http://openconfig.net/yang/local-routing"}},"openconfig-local-routing_local-routes_static-routes_static_config":{"title":"openconfig-local-routing_local-routes_static-routes_static_config","type":"object","description":"Configuration data for static routes","properties":{"set-tag":{"description":"Set a generic tag value on the route. This tag can be\nused for filtering routes that are distributed to other\nrouting protocols.","type":"integer","format":"int64","example":0},"prefix":{"description":"Destination prefix for the static route, either IPv4 or\nIPv6.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"next-hop":{"type":"array","items":{"type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"description":"Specify a set of next hops.  Each entry may be an IP\naddress, interface, or a single pre-defined next-hop can be\nused, e.g., drop"}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/local-routing"}},"openconfig-local-routing_local-routes_static-routes_static_state":{"title":"openconfig-local-routing_local-routes_static-routes_static_state","type":"object","description":"Operational state data for static routes","properties":{"set-tag":{"description":"Set a generic tag value on the route. This tag can be\nused for filtering routes that are distributed to other\nrouting protocols.","type":"integer","format":"int64","example":0},"prefix":{"description":"Destination prefix for the static route, either IPv4 or\nIPv6.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"next-hop":{"type":"array","items":{"type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"description":"Specify a set of next hops.  Each entry may be an IP\naddress, interface, or a single pre-defined next-hop can be\nused, e.g., drop"}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/local-routing"}},"openconfig-local-routing_local-routes_local-aggregates":{"title":"openconfig-local-routing_local-routes_local-aggregates","type":"object","description":"Enclosing container for locally-defined aggregate\nroutes","properties":{"aggregate":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate"},"description":"List of aggregates"}},"xml":{"name":"local-aggregates","namespace":"http://openconfig.net/yang/local-routing"}},"openconfig-local-routing_local-routes_local-aggregates_aggregate":{"title":"openconfig-local-routing_local-routes_local-aggregates_aggregate","type":"object","description":"List of aggregates","properties":{"prefix":{"description":"Reference to the configured prefix for this aggregate","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"config":{"$ref":"#/components/schemas/openconfig-local-routing_local-routes_local-aggregates_aggregate_config"}},"xml":{"name":"aggregate","namespace":"http://openconfig.net/yang/local-routing"}},"openconfig-local-routing_local-routes_local-aggregates_aggregate_config":{"title":"openconfig-local-routing_local-routes_local-aggregates_aggregate_config","type":"object","description":"Configuration data for aggregate advertisements","properties":{"discard":{"description":"When true, install the aggregate route with a discard\nnext-hop -- traffic destined to the aggregate will be\ndiscarded with no ICMP message generated.  When false,\ntraffic destined to an aggregate address when no\nconstituent routes are present will generate an ICMP\nunreachable message.","type":"boolean","default":false,"example":true},"set-tag":{"description":"Set a generic tag value on the route. This tag can be\nused for filtering routes that are distributed to other\nrouting protocols.","type":"integer","format":"int64","example":0},"prefix":{"description":"Aggregate prefix to be advertised","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/local-routing"}},"openconfig-local-routing_local-routes_local-aggregates_aggregate_state":{"title":"openconfig-local-routing_local-routes_local-aggregates_aggregate_state","type":"object","description":"Operational state data for aggregate\nadvertisements","properties":{"discard":{"description":"When true, install the aggregate route with a discard\nnext-hop -- traffic destined to the aggregate will be\ndiscarded with no ICMP message generated.  When false,\ntraffic destined to an aggregate address when no\nconstituent routes are present will generate an ICMP\nunreachable message.","type":"boolean","default":false,"example":true},"set-tag":{"description":"Set a generic tag value on the route. This tag can be\nused for filtering routes that are distributed to other\nrouting protocols.","type":"integer","format":"int64","example":0},"prefix":{"description":"Aggregate prefix to be advertised","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/local-routing"}},"openconfig-network-instance_network-instances":{"title":"openconfig-network-instance_network-instances","type":"object","description":"The L2, L3, or L2+L3 forwarding instances that are\nconfigured on the local system","properties":{"network-instance":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance"},"description":"Network instances configured on the local system"}},"xml":{"name":"network-instances","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance":{"title":"openconfig-network-instance_network-instances_network-instance","type":"object","description":"Network instances configured on the local system","properties":{"table-connections":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections"},"tables":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables"},"interfaces":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces"},"name":{"description":"A unique name identifying the network instance","type":"string","example":"Some name"},"connection-points":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points"},"protocols":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_config"},"inter-instance-policies":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies"}},"xml":{"name":"network-instance","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_config":{"title":"openconfig-network-instance_network-instances_network-instance_config","type":"object","description":"Configuration parameters relating to a network\ninstance","properties":{"router-id":{"description":"A identifier for the local network instance - typically\nused within associated routing protocols or signalling\nrouting information in another network instance","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"name":{"description":"An operator-assigned unique name for the forwarding\ninstance","type":"string","example":"Some name"},"description":{"description":"A free-form string to be used by the network operator to\ndescribe the function of this network instance","type":"string","example":"Some description"},"type":{"description":"The type of network instance. The value of this leaf\nindicates the type of forwarding entries that should be\nsupported by this network instance","type":"string","enum":["network-instance-type","L3VRF","DEFAULT-INSTANCE","L2P2P","L2VSI"],"example":"network-instance-type"},"enabled":{"description":"Whether the network instance should be configured to be\nactive on the network element","type":"boolean","example":true},"route-distinguisher":{"description":"The route distinguisher that should be used for the local\nVRF or VSI instance when it is signalled via BGP.","type":"string","example":"1:1","minLength":0,"maxLength":2147483647}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_state":{"title":"openconfig-network-instance_network-instances_network-instance_state","type":"object","description":"Operational state parameters relating to a network\ninstance","properties":{"router-id":{"description":"A identifier for the local network instance - typically\nused within associated routing protocols or signalling\nrouting information in another network instance","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"name":{"description":"An operator-assigned unique name for the forwarding\ninstance","type":"string","example":"Some name"},"description":{"description":"A free-form string to be used by the network operator to\ndescribe the function of this network instance","type":"string","example":"Some description"},"type":{"description":"The type of network instance. The value of this leaf\nindicates the type of forwarding entries that should be\nsupported by this network instance","type":"string","enum":["network-instance-type","L3VRF","DEFAULT-INSTANCE","L2P2P","L2VSI"],"example":"network-instance-type"},"enabled":{"description":"Whether the network instance should be configured to be\nactive on the network element","type":"boolean","example":true},"route-distinguisher":{"description":"The route distinguisher that should be used for the local\nVRF or VSI instance when it is signalled via BGP.","type":"string","example":"1:1","minLength":0,"maxLength":2147483647}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_inter-instance-policies":{"title":"openconfig-network-instance_network-instances_network-instance_inter-instance-policies","type":"object","description":"Policies dictating how RIB or FIB entries are imported\nto and exported from this instance","properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy"}},"xml":{"name":"inter-instance-policies","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy":{"title":"openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy","type":"object","description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_config"}},"xml":{"name":"apply-policy","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_config":{"title":"openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_config","type":"object","description":"Policy configuration data.","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_state":{"title":"openconfig-network-instance_network-instances_network-instance_inter-instance-policies_apply-policy_state","type":"object","description":"Operational state for routing policy","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_table-connections":{"title":"openconfig-network-instance_network-instances_network-instance_table-connections","type":"object","description":"Policies dictating how RIB or FIB entries are propagated\nbetween tables","properties":{"table-connection":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection"},"description":"A list of connections between pairs of routing or\nforwarding tables, the leaking of entries between\nwhich is specified by the import and export policy"}},"xml":{"name":"table-connections","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_table-connections_table-connection":{"title":"openconfig-network-instance_network-instances_network-instance_table-connections_table-connection","type":"object","description":"A list of connections between pairs of routing or\nforwarding tables, the leaking of entries between\nwhich is specified by the import and export policy","properties":{"src-table":{"description":"The name of the table which should be utilised\nas the source of forwarding or routing information","type":"string","example":"Some src-table"},"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy"},"dst-table":{"description":"The table to which routing entries should be\nexported","type":"string","example":"Some dst-table"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_config"}},"xml":{"name":"table-connection","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_config":{"title":"openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_config","type":"object","description":"Configuration parameters relating to the connection\nbetween tables","properties":{"src-table":{"description":"The source protocol for the table connection","type":"string","example":"Some src-table"},"dst-table":{"description":"The destination protocol for the table connection","type":"string","example":"Some dst-table"}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_state":{"title":"openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_state","type":"object","description":"State parameters relating to the connection between\ntables","properties":{"src-table":{"description":"The source protocol for the table connection","type":"string","example":"Some src-table"},"dst-table":{"description":"The destination protocol for the table connection","type":"string","example":"Some dst-table"}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy":{"title":"openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy","type":"object","description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_config"}},"xml":{"name":"apply-policy","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_config":{"title":"openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_config","type":"object","description":"Policy configuration data.","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_state":{"title":"openconfig-network-instance_network-instances_network-instance_table-connections_table-connection_apply-policy_state","type":"object","description":"Operational state for routing policy","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_tables":{"title":"openconfig-network-instance_network-instances_network-instance_tables","type":"object","description":"The routing tables that are managed by this network\ninstance","properties":{"table":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table"},"description":"A network instance manages one or more forwarding or\nrouting tables. These may reflect the Layer 2\nforwarding information base, the Layer 3 routing\ninformation base of the MPLS LFIB. Protocols may be\nexplictly associated with a particular table into\nwhich they populate entries. Multiple protocols may\ninstall entries into a single table, or there may be a\n1:1 relationship between a routing protocol and a\ntable .The import-policy and export-policy lists are\nused to specify how routes leak between different\ntables within the same forwarding instance."}},"xml":{"name":"tables","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_tables_table":{"title":"openconfig-network-instance_network-instances_network-instance_tables_table","type":"object","description":"A network instance manages one or more forwarding or\nrouting tables. These may reflect the Layer 2\nforwarding information base, the Layer 3 routing\ninformation base of the MPLS LFIB. Protocols may be\nexplictly associated with a particular table into\nwhich they populate entries. Multiple protocols may\ninstall entries into a single table, or there may be a\n1:1 relationship between a routing protocol and a\ntable .The import-policy and export-policy lists are\nused to specify how routes leak between different\ntables within the same forwarding instance.","properties":{"table-name":{"description":"A name for the table","type":"string","example":"Some table-name"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_tables_table_config"}},"xml":{"name":"table","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_tables_table_config":{"title":"openconfig-network-instance_network-instances_network-instance_tables_table_config","type":"object","description":"Configuration parameters related to the table","properties":{"table-name":{"description":"A human-readable name for the table","type":"string","example":"Some table-name"}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_tables_table_state":{"title":"openconfig-network-instance_network-instances_network-instance_tables_table_state","type":"object","description":"State parameters related to the table","properties":{"table-name":{"description":"A human-readable name for the table","type":"string","example":"Some table-name"}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_interfaces":{"title":"openconfig-network-instance_network-instances_network-instance_interfaces","type":"object","description":"Interfaces associated with this network intance","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_interfaces_config"}},"xml":{"name":"interfaces","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_interfaces_config":{"title":"openconfig-network-instance_network-instances_network-instance_interfaces_config","type":"object","description":"Configuration parameters relating to interfaces\nassociated with the instance","properties":{"interface":{"type":"array","items":{"type":"string","example":"Some interface"},"description":"Interfaces that are associated with the network instance"}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_interfaces_state":{"title":"openconfig-network-instance_network-instances_network-instance_interfaces_state","type":"object","description":"State parameters relating to interfaces associated\nwith the instance","properties":{"interface":{"type":"array","items":{"type":"string","example":"Some interface"},"description":"Interfaces that are associated with the network instance"}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_connection-points":{"title":"openconfig-network-instance_network-instances_network-instance_connection-points","type":"object","description":"The set of connection points within a forwarding\ninstance","properties":{"connection-point":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point"},"description":"A connection point within a Layer 2 network instance.\nEach connection-point consists of a set of interfaces\nonly one of which is active at any one time. Other than\nthe specification of whether an interface is local\n(i.e., exists within this network-instance), or remote,\nall configuration and state parameters are common"}},"xml":{"name":"connection-points","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_connection-points_connection-point":{"title":"openconfig-network-instance_network-instances_network-instance_connection-points_connection-point","type":"object","description":"A connection point within a Layer 2 network instance.\nEach connection-point consists of a set of interfaces\nonly one of which is active at any one time. Other than\nthe specification of whether an interface is local\n(i.e., exists within this network-instance), or remote,\nall configuration and state parameters are common","properties":{"endpoints":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_config"},"connection-point-id":{"description":"A locally significant reference for the\nconnection-point","type":"string","example":"Some connection-point-id"}},"xml":{"name":"connection-point","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_config":{"title":"openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_config","type":"object","description":"Configuration parameters relating to a Layer 2\nnetwork instance connection point","properties":{"connection-point-id":{"description":"An identifier for a connection point","type":"string","example":"Some connection-point-id"}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_state":{"title":"openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_state","type":"object","description":"Operational state parameters relating to a Layer 2\nnetwork instance connection point","properties":{"connection-point-id":{"description":"An identifier for a connection point","type":"string","example":"Some connection-point-id"}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints":{"title":"openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints","type":"object","description":"The set of endpoints which are grouped within the\nconnection point","properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint"},"description":"A list of the endpoints (interfaces or remote\nconnection points that can be used for this\nconnection point). The active endpoint is selected\nbased on the precedence that it is configured\nwith"}},"xml":{"name":"endpoints","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint":{"title":"openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint","type":"object","description":"A list of the endpoints (interfaces or remote\nconnection points that can be used for this\nconnection point). The active endpoint is selected\nbased on the precedence that it is configured\nwith","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint_config"},"endpoint-id":{"description":"A pointer to the configured identifier for the\nendpoint","type":"string","example":"Some endpoint-id"}},"xml":{"name":"endpoint","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint_config":{"title":"openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint_config","type":"object","description":"Configuration parameters relating to the\nendpoint","properties":{"interface":{"description":"Reference to the local interface that is a member of\nthe forwarding-instance","type":"string","example":"Some interface"},"precedence":{"description":"The precedence of the endpoint - the lowest precendence\nviable endpoint will be utilised as the active endpoint\nwithin a connection","type":"integer","format":"int32","example":0},"endpoint-id":{"description":"An identifier for the endpoint","type":"string","example":"Some endpoint-id"}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint_state":{"title":"openconfig-network-instance_network-instances_network-instance_connection-points_connection-point_endpoints_endpoint_state","type":"object","description":"Operational state parameters relating to the\nendpoint","properties":{"active":{"description":"When the backup endpoint is active, the value of this\nparameter is set to true","type":"boolean","example":true},"interface":{"description":"Reference to the local interface that is a member of\nthe forwarding-instance","type":"string","example":"Some interface"},"precedence":{"description":"The precedence of the endpoint - the lowest precendence\nviable endpoint will be utilised as the active endpoint\nwithin a connection","type":"integer","format":"int32","example":0},"endpoint-id":{"description":"An identifier for the endpoint","type":"string","example":"Some endpoint-id"}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols":{"title":"openconfig-network-instance_network-instances_network-instance_protocols","type":"object","description":"The routing protocols that are enabled for this\nnetwork-instance.","properties":{"protocol":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol"},"description":"A process (instance) of a routing protocol. Some\nsystems may not support more than one instance of\na particular routing protocol"}},"xml":{"name":"protocols","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol","type":"object","description":"A process (instance) of a routing protocol. Some\nsystems may not support more than one instance of\na particular routing protocol","properties":{"identifier":{"description":"The protocol name for the routing or forwarding\nprotocol to be instantiated","type":"string","enum":["install-protocol-type","ISIS","OSPF3","STATIC","OSPF","DIRECTLY-CONNECTED","LOCAL-AGGREGATE","BGP"],"example":"install-protocol-type"},"static":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static"},"name":{"description":"An operator-assigned identifier for the routing\nor forwarding protocol. For some processes this\nleaf may be system defined.","type":"string","example":"Some name"},"bgp-openconfig-extensions:bgp":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_config"},"aggregate":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate"}},"xml":{"name":"protocol","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_config","type":"object","description":"Configuration parameters relating to the routing\nprotocol instance","properties":{"identifier":{"description":"The protocol identifier for the instance","type":"string","enum":["install-protocol-type","ISIS","OSPF3","STATIC","OSPF","DIRECTLY-CONNECTED","LOCAL-AGGREGATE","BGP"],"example":"install-protocol-type"},"target-table":{"description":"The table (RIB, FIB, or LFIB) that the protocol should\npopulate its entries in.","type":"string","example":"Some target-table"},"name":{"description":"A unique name for the protocol instance","type":"string","example":"Some name"},"enabled":{"description":"A boolean value indicating whether the local protocol\ninstance is enabled.","type":"boolean","example":true}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_state","type":"object","description":"State parameters relating to the routing protocol\ninstance","properties":{"identifier":{"description":"The protocol identifier for the instance","type":"string","enum":["install-protocol-type","ISIS","OSPF3","STATIC","OSPF","DIRECTLY-CONNECTED","LOCAL-AGGREGATE","BGP"],"example":"install-protocol-type"},"target-table":{"description":"The table (RIB, FIB, or LFIB) that the protocol should\npopulate its entries in.","type":"string","example":"Some target-table"},"name":{"description":"A unique name for the protocol instance","type":"string","example":"Some name"},"enabled":{"description":"A boolean value indicating whether the local protocol\ninstance is enabled.","type":"boolean","example":true}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_static":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_static","type":"object","description":"Configuration and state parameters relating to\nstatic routes","properties":{"static-routes":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes"}},"xml":{"name":"static","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes","type":"object","description":"Enclosing container for the list of static routes","properties":{"static":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static"},"description":"List of locally configured static routes"}},"xml":{"name":"static-routes","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static","type":"object","description":"List of locally configured static routes","properties":{"prefix":{"description":"Reference to the destination prefix for the static\nroute","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static_config"}},"xml":{"name":"static","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static_config","type":"object","description":"Configuration data for static routes","properties":{"set-tag":{"description":"Set a generic tag value on the route. This tag can be\nused for filtering routes that are distributed to other\nrouting protocols.","type":"integer","format":"int64","example":0},"prefix":{"description":"Destination prefix for the static route, either IPv4 or\nIPv6.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"next-hop":{"type":"array","items":{"type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"description":"Specify a set of next hops.  Each entry may be an IP\naddress, interface, or a single pre-defined next-hop can be\nused, e.g., drop"}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_static_static-routes_static_state","type":"object","description":"Operational state data for static routes","properties":{"set-tag":{"description":"Set a generic tag value on the route. This tag can be\nused for filtering routes that are distributed to other\nrouting protocols.","type":"integer","format":"int64","example":0},"prefix":{"description":"Destination prefix for the static route, either IPv4 or\nIPv6.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"next-hop":{"type":"array","items":{"type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"description":"Specify a set of next hops.  Each entry may be an IP\naddress, interface, or a single pre-defined next-hop can be\nused, e.g., drop"}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate","type":"object","description":"Configuration and state parameters relating to\nlocally generated aggregate routes","properties":{"local-aggregates":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates"}},"xml":{"name":"aggregate","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates","type":"object","description":"Enclosing container for locally-defined aggregate\nroutes","properties":{"aggregate":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate"},"description":"List of aggregates"}},"xml":{"name":"local-aggregates","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate","type":"object","description":"List of aggregates","properties":{"prefix":{"description":"Reference to the configured prefix for this aggregate","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate_config"}},"xml":{"name":"aggregate","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate_config","type":"object","description":"Configuration data for aggregate advertisements","properties":{"discard":{"description":"When true, install the aggregate route with a discard\nnext-hop -- traffic destined to the aggregate will be\ndiscarded with no ICMP message generated.  When false,\ntraffic destined to an aggregate address when no\nconstituent routes are present will generate an ICMP\nunreachable message.","type":"boolean","default":false,"example":true},"set-tag":{"description":"Set a generic tag value on the route. This tag can be\nused for filtering routes that are distributed to other\nrouting protocols.","type":"integer","format":"int64","example":0},"prefix":{"description":"Aggregate prefix to be advertised","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"xml":{"name":"config","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_aggregate_local-aggregates_aggregate_state","type":"object","description":"Operational state data for aggregate\nadvertisements","properties":{"discard":{"description":"When true, install the aggregate route with a discard\nnext-hop -- traffic destined to the aggregate will be\ndiscarded with no ICMP message generated.  When false,\ntraffic destined to an aggregate address when no\nconstituent routes are present will generate an ICMP\nunreachable message.","type":"boolean","default":false,"example":true},"set-tag":{"description":"Set a generic tag value on the route. This tag can be\nused for filtering routes that are distributed to other\nrouting protocols.","type":"integer","format":"int64","example":0},"prefix":{"description":"Aggregate prefix to be advertised","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"xml":{"name":"state","namespace":"http://openconfig.net/yang/network-instance"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp","type":"object","description":"Top-level configuration and state for the BGP router","properties":{"neighbors":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors"},"global":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global"},"peer-groups":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups"}},"xml":{"name":"bgp","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global","type":"object","description":"Global configuration for the BGP router","properties":{"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy"},"use-multiple-paths":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths"},"route-selection-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options"},"afi-safis":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis"},"graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart"},"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_state"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_config"},"default-route-distance":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance"},"confederation":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation"}},"xml":{"name":"global","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy","type":"object","description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_config"}},"xml":{"name":"apply-policy","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_config","type":"object","description":"Policy configuration data.","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_apply-policy_state","type":"object","description":"Operational state for routing policy","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_config","type":"object","description":"Configuration parameters relating to the global BGP router","properties":{"as":{"description":"Local autonomous system number of the router.  Uses\nthe 32-bit as-number type from the model in RFC 6991.","type":"integer","format":"int64","example":0},"router-id":{"description":"Router id of the router, expressed as an\n32-bit value, IPv4 address.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"route-reflector-cluster-id":{"description":"Route-reflector cluster id to use when local router is\nconfigured as a route reflector.","type":"integer","format":"int64","example":0}},"required":["as"],"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_state","type":"object","description":"State information relating to the global BGP router","properties":{"total-prefixes":{"description":"","type":"integer","format":"int64","example":0},"as":{"description":"Local autonomous system number of the router.  Uses\nthe 32-bit as-number type from the model in RFC 6991.","type":"integer","format":"int64","example":0},"total-paths":{"description":"Total number of BGP paths within the context","type":"integer","format":"int64","example":0},"router-id":{"description":"Router id of the router, expressed as an\n32-bit value, IPv4 address.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"required":["as"],"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance","type":"object","description":"Administrative distance (or preference) assigned to\nroutes received from different sources\n(external, internal, and local).","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_config"}},"xml":{"name":"default-route-distance","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_config","type":"object","description":"Configuration parameters relating to the default route\ndistance","properties":{"external-route-distance":{"description":"Administrative distance for routes learned from external\nBGP (eBGP).","type":"integer","format":"int32","example":1},"internal-route-distance":{"description":"Administrative distance for routes learned from internal\nBGP (iBGP).","type":"integer","format":"int32","example":1}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_default-route-distance_state","type":"object","description":"State information relating to the default route distance","properties":{"external-route-distance":{"description":"Administrative distance for routes learned from external\nBGP (eBGP).","type":"integer","format":"int32","example":1},"internal-route-distance":{"description":"Administrative distance for routes learned from internal\nBGP (iBGP).","type":"integer","format":"int32","example":1}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation","type":"object","description":"Parameters indicating whether the local system acts as part\nof a BGP confederation","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_config"}},"xml":{"name":"confederation","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_config","type":"object","description":"Configuration parameters relating to BGP confederations","properties":{"identifier":{"description":"Confederation identifier for the autonomous system.","type":"integer","format":"int64","example":0},"member-as":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":"Remote autonomous systems that are to be treated\nas part of the local confederation."},"enabled":{"description":"When this leaf is set to true it indicates that\nthe local-AS is part of a BGP confederation","type":"boolean","example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_confederation_state","type":"object","description":"State information relating to the BGP confederations","properties":{"identifier":{"description":"Confederation identifier for the autonomous system.","type":"integer","format":"int64","example":0},"member-as":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":"Remote autonomous systems that are to be treated\nas part of the local confederation."},"enabled":{"description":"When this leaf is set to true it indicates that\nthe local-AS is part of a BGP confederation","type":"boolean","example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis","type":"object","description":"Address family specific configuration","properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi"},"description":"AFI,SAFI configuration available for the\nneighbour or group"}},"xml":{"name":"afi-safis","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi","type":"object","description":"AFI,SAFI configuration available for the\nneighbour or group","properties":{"receive":{"description":"Enable ability to receive multiple path advertisements\nfor an NLRI from the neighbor or group","type":"boolean","default":false,"example":true},"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy"},"ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast"},"ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast"},"l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls"},"ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast"},"l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast"},"l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn"},"ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast"},"l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast"},"l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast"},"afi-safi-name":{"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"send-max":{"description":"The maximum number of paths to advertise to neighbors\nfor a single NLRI","type":"integer","format":"int32","example":0},"graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_config"},"l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast"}},"xml":{"name":"afi-safi","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart","type":"object","description":"Parameters relating to BGP graceful-restart","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_config"}},"xml":{"name":"graceful-restart","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_config","type":"object","description":"Configuration options for BGP graceful-restart","properties":{"enabled":{"description":"This leaf indicates whether graceful-restart is enabled for\nthis AFI-SAFI","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_graceful-restart_state","type":"object","description":"State information for BGP graceful-restart","properties":{"enabled":{"description":"This leaf indicates whether graceful-restart is enabled for\nthis AFI-SAFI","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_config","type":"object","description":"Configuration parameters for the AFI-SAFI","properties":{"afi-safi-name":{"description":"AFI,SAFI","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"enabled":{"description":"This leaf indicates whether the IPv4 Unicast AFI,SAFI is\nenabled for the neighbour or group","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_state","type":"object","description":"State information relating to the AFI-SAFI","properties":{"total-prefixes":{"description":"","type":"integer","format":"int64","example":0},"total-paths":{"description":"Total number of BGP paths within the context","type":"integer","format":"int64","example":0},"afi-safi-name":{"description":"AFI,SAFI","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"enabled":{"description":"This leaf indicates whether the IPv4 Unicast AFI,SAFI is\nenabled for the neighbour or group","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy","type":"object","description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_config"}},"xml":{"name":"apply-policy","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_config","type":"object","description":"Policy configuration data.","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_apply-policy_state","type":"object","description":"Operational state for routing policy","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast","type":"object","description":"IPv4 unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_config"}},"xml":{"name":"ipv4-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_config","type":"object","description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_state","type":"object","description":"State information for common IPv4 and IPv6 unicast\nparameters","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast","type":"object","description":"IPv6 unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_config"}},"xml":{"name":"ipv6-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_config","type":"object","description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_state","type":"object","description":"State information for common IPv4 and IPv6 unicast\nparameters","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object","description":"IPv4 Labelled Unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}},"xml":{"name":"ipv4-labelled-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object","description":"IPv6 Labelled Unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}},"xml":{"name":"ipv6-labelled-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object","description":"Unicast IPv4 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv4-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object","description":"Unicast IPv6 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv6-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object","description":"Multicast IPv4 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv4-multicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object","description":"Multicast IPv6 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv6-multicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls","type":"object","description":"BGP-signalled VPLS configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}},"xml":{"name":"l2vpn-vpls","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn","type":"object","description":"BGP EVPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}},"xml":{"name":"l2vpn-evpn","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options","type":"object","description":"Parameters relating to options for route selection","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_config"}},"xml":{"name":"route-selection-options","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_config","type":"object","description":"Configuration parameters relating to route selection\noptions","properties":{"always-compare-med":{"description":"Compare multi-exit discriminator (MED) value from\ndifferent ASes when selecting the best route.  The\ndefault behavior is to only compare MEDs for paths\nreceived from the same AS.","type":"boolean","default":false,"example":true},"advertise-inactive-routes":{"description":"Advertise inactive routes to external peers.  The\ndefault is to only advertise active routes.","type":"boolean","default":false,"example":true},"ignore-as-path-length":{"description":"Ignore the AS path length when selecting the best path.\nThe default is to use the AS path length and prefer paths\nwith shorter length.","type":"boolean","default":false,"example":true},"enable-aigp":{"description":"Flag to enable sending / receiving accumulated IGP\nattribute in routing updates","type":"boolean","default":false,"example":true},"ignore-next-hop-igp-metric":{"description":"Ignore the IGP metric to the next-hop when calculating\nBGP best-path. The default is to select the route for\nwhich the metric to the next-hop is lowest","type":"boolean","default":false,"example":true},"external-compare-router-id":{"description":"When comparing similar routes received from external\nBGP peers, use the router-id as a criterion to select\nthe active path.","type":"boolean","default":true,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_route-selection-options_state","type":"object","description":"State information for the route selection options","properties":{"always-compare-med":{"description":"Compare multi-exit discriminator (MED) value from\ndifferent ASes when selecting the best route.  The\ndefault behavior is to only compare MEDs for paths\nreceived from the same AS.","type":"boolean","default":false,"example":true},"advertise-inactive-routes":{"description":"Advertise inactive routes to external peers.  The\ndefault is to only advertise active routes.","type":"boolean","default":false,"example":true},"ignore-as-path-length":{"description":"Ignore the AS path length when selecting the best path.\nThe default is to use the AS path length and prefer paths\nwith shorter length.","type":"boolean","default":false,"example":true},"enable-aigp":{"description":"Flag to enable sending / receiving accumulated IGP\nattribute in routing updates","type":"boolean","default":false,"example":true},"ignore-next-hop-igp-metric":{"description":"Ignore the IGP metric to the next-hop when calculating\nBGP best-path. The default is to select the route for\nwhich the metric to the next-hop is lowest","type":"boolean","default":false,"example":true},"external-compare-router-id":{"description":"When comparing similar routes received from external\nBGP peers, use the router-id as a criterion to select\nthe active path.","type":"boolean","default":true,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths","type":"object","description":"Parameters related to the use of multiple paths for the\nsame NLRI","properties":{"ibgp":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp"},"ebgp":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp"},"state":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_state"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_config"}},"xml":{"name":"use-multiple-paths","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_config","type":"object","description":"Configuration parameters relating to multipath","properties":{"enabled":{"description":"Whether the use of multiple paths for the same NLRI is\nenabled for the neighbor. This value is overridden by\nany more specific configuration value.","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_state","type":"object","description":"State parameters relating to multipath","properties":{"enabled":{"description":"Whether the use of multiple paths for the same NLRI is\nenabled for the neighbor. This value is overridden by\nany more specific configuration value.","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp","type":"object","description":"Multipath parameters for eBGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_config"}},"xml":{"name":"ebgp","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_config","type":"object","description":"Configuration parameters relating to eBGP multipath","properties":{"allow-multiple-as":{"description":"Allow multipath to use paths from different neighbouring\nASes.  The default is to only consider multiple paths from\nthe same neighbouring AS.","type":"boolean","default":false,"example":true},"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\nBGP multipath. The default is use a single path.","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ebgp_state","type":"object","description":"State information relating to eBGP multipath","properties":{"allow-multiple-as":{"description":"Allow multipath to use paths from different neighbouring\nASes.  The default is to only consider multiple paths from\nthe same neighbouring AS.","type":"boolean","default":false,"example":true},"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\nBGP multipath. The default is use a single path.","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp","type":"object","description":"Multipath parameters for iBGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_config"}},"xml":{"name":"ibgp","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_config","type":"object","description":"Configuration parameters relating to iBGP multipath","properties":{"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\niBGP multipath. The default is to use a single path","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_use-multiple-paths_ibgp_state","type":"object","description":"State information relating to iBGP multipath","properties":{"maximum-paths":{"description":"Maximum number of parallel paths to consider when using\niBGP multipath. The default is to use a single path","type":"integer","format":"int64","default":1,"example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart","type":"object","description":"Parameters relating the graceful restart mechanism for BGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_config"}},"xml":{"name":"graceful-restart","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_config","type":"object","description":"Configuration parameters relating to graceful-restart","properties":{"stale-routes-time":{"description":"An upper-bound on the time thate stale routes will be\nretained by a router after a session is restarted. If an\nEnd-of-RIB (EOR) marker is received prior to this timer\nexpiring stale-routes will be flushed upon its receipt - if\nno EOR is received, then when this timer expires stale paths\nwill be purged. This timer is referred to as the\nSelection_Deferral_Timer in RFC4724","type":"number","example":-92233720368547758.08},"restart-time":{"description":"Estimated time (in seconds) for the local BGP speaker to\nrestart a session. This value is advertise in the graceful\nrestart BGP capability.  This is a 12-bit value, referred to\nas Restart Time in RFC4724.  Per RFC4724, the suggested\ndefault value is &lt;= the hold-time value.","type":"integer","format":"int32","example":0},"helper-only":{"description":"Enable graceful-restart in helper mode only. When this\nleaf is set, the local system does not retain forwarding\nits own state during a restart, but supports procedures\nfor the receiving speaker, as defined in RFC4724.","type":"boolean","example":true},"enabled":{"description":"Enable or disable the graceful-restart capability.","type":"boolean","example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_global_graceful-restart_state","type":"object","description":"State information associated with graceful-restart","properties":{"stale-routes-time":{"description":"An upper-bound on the time thate stale routes will be\nretained by a router after a session is restarted. If an\nEnd-of-RIB (EOR) marker is received prior to this timer\nexpiring stale-routes will be flushed upon its receipt - if\nno EOR is received, then when this timer expires stale paths\nwill be purged. This timer is referred to as the\nSelection_Deferral_Timer in RFC4724","type":"number","example":-92233720368547758.08},"restart-time":{"description":"Estimated time (in seconds) for the local BGP speaker to\nrestart a session. This value is advertise in the graceful\nrestart BGP capability.  This is a 12-bit value, referred to\nas Restart Time in RFC4724.  Per RFC4724, the suggested\ndefault value is &lt;= the hold-time value.","type":"integer","format":"int32","example":0},"helper-only":{"description":"Enable graceful-restart in helper mode only. When this\nleaf is set, the local system does not retain forwarding\nits own state during a restart, but supports procedures\nfor the receiving speaker, as defined in RFC4724.","type":"boolean","example":true},"enabled":{"description":"Enable or disable the graceful-restart capability.","type":"boolean","example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors","type":"object","description":"Configuration for BGP neighbors","properties":{"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor"},"description":"List of BGP neighbors configured on the local system,\nuniquely identified by peer IPv[46] address"}},"xml":{"name":"neighbors","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor","type":"object","description":"List of BGP neighbors configured on the local system,\nuniquely identified by peer IPv[46] address","properties":{"timers":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers"},"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy"},"route-reflector":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector"},"transport":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport"},"as-path-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options"},"ebgp-multihop":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop"},"error-handling":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling"},"add-paths":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths"},"afi-safis":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis"},"graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart"},"neighbor-address":{"description":"Reference to the address of the BGP neighbor used as\na key in the neighbor list","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"logging-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_config"}},"xml":{"name":"neighbor","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_config","type":"object","description":"Configuration parameters relating to the BGP neighbor or\ngroup","properties":{"peer-type":{"description":"Explicitly designate the peer or peer group as internal\n(iBGP) or external (eBGP).","type":"string","enum":["INTERNAL","EXTERNAL"],"example":"INTERNAL"},"remove-private-as":{"description":"Remove private AS numbers from updates sent to peers.","type":"string","enum":["ALL","REPLACE"],"example":"ALL"},"send-community":{"description":"Specify which types of community should be sent to the\nneighbor or group. The default is to not send the\ncommunity attribute","type":"string","enum":["STANDARD","EXTENDED","BOTH","NONE"],"default":"NONE","example":"STANDARD"},"description":{"description":"An optional textual description (intended primarily for use\nwith a peer or group","type":"string","example":"Some description"},"peer-as":{"description":"AS number of the peer.","type":"integer","format":"int64","example":0},"route-flap-damping":{"description":"Enable route flap damping.","type":"boolean","default":false,"example":true},"peer-group":{"description":"The peer-group with which this neighbor is associated","type":"string","example":"Some peer-group"},"auth-password":{"description":"Configures an MD5 authentication password for use with\nneighboring devices.","type":"string","example":"Some auth-password"},"local-as":{"description":"The local autonomous system number that is to be used\nwhen establishing sessions with the remote peer or peer\ngroup, if this differs from the global BGP router\nautonomous system number.","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state","type":"object","description":"State information relating to the BGP neighbor or group","properties":{"peer-type":{"description":"Explicitly designate the peer or peer group as internal\n(iBGP) or external (eBGP).","type":"string","enum":["INTERNAL","EXTERNAL"],"example":"INTERNAL"},"remove-private-as":{"description":"Remove private AS numbers from updates sent to peers.","type":"string","enum":["ALL","REPLACE"],"example":"ALL"},"queues":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_queues"},"supported-capabilities":{"type":"array","items":{"type":"string","enum":["bgp-capability","MPBGP","ADD-PATHS","ROUTE-REFRESH","ASN32","GRACEFUL-RESTART"],"example":"bgp-capability"},"description":"BGP capabilities negotiated as supported with the peer"},"send-community":{"description":"Specify which types of community should be sent to the\nneighbor or group. The default is to not send the\ncommunity attribute","type":"string","enum":["STANDARD","EXTENDED","BOTH","NONE"],"default":"NONE","example":"STANDARD"},"session-state":{"description":"Operational state of the BGP peer","type":"string","enum":["IDLE","CONNECT","ACTIVE","OPENSENT","OPENCONFIRM","ESTABLISHED"],"example":"IDLE"},"description":{"description":"An optional textual description (intended primarily for use\nwith a peer or group","type":"string","example":"Some description"},"messages":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages"},"peer-as":{"description":"AS number of the peer.","type":"integer","format":"int64","example":0},"route-flap-damping":{"description":"Enable route flap damping.","type":"boolean","default":false,"example":true},"auth-password":{"description":"Configures an MD5 authentication password for use with\nneighboring devices.","type":"string","example":"Some auth-password"},"local-as":{"description":"The local autonomous system number that is to be used\nwhen establishing sessions with the remote peer or peer\ngroup, if this differs from the global BGP router\nautonomous system number.","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages","type":"object","properties":{"received":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages_received"},"sent":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages_sent"}},"xml":{"name":"messages","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages_sent":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages_sent","type":"object","properties":{"NOTIFICATION":{"description":"Number of BGP NOTIFICATION messages indicating an\nerror condition has occurred exchanged.","type":"integer","example":0},"UPDATE":{"description":"Number of BGP UPDATE messages announcing, withdrawing\nor modifying paths exchanged.","type":"integer","example":0}},"xml":{"name":"sent","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages_received":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_messages_received","type":"object","properties":{"NOTIFICATION":{"description":"Number of BGP NOTIFICATION messages indicating an\nerror condition has occurred exchanged.","type":"integer","example":0},"UPDATE":{"description":"Number of BGP UPDATE messages announcing, withdrawing\nor modifying paths exchanged.","type":"integer","example":0}},"xml":{"name":"received","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_queues":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_state_queues","type":"object","properties":{"output":{"description":"The number of messages queued to be sent to the peer","type":"integer","format":"int64","example":0},"input":{"description":"The number of messages received from the peer currently\nqueued","type":"integer","format":"int64","example":0}},"xml":{"name":"queues","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers","type":"object","description":"Timers related to a BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_config"}},"xml":{"name":"timers","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_config","type":"object","description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","properties":{"minimum-advertisement-interval":{"description":"Minimum time which must elapse between subsequent UPDATE\nmessages relating to a common set of NLRI being transmitted\nto a peer. This timer is referred to as\nMinRouteAdvertisementIntervalTimer by RFC 4721 and serves to\nreduce the number of UPDATE messages transmitted when a\nparticular set of NLRI exhibit instability.","type":"number","default":30,"example":-92233720368547758.08},"connect-retry":{"description":"Time interval in seconds between attempts to establish a\nsession with the peer.","type":"number","default":30,"example":-92233720368547758.08},"keepalive-interval":{"description":"Time interval in seconds between transmission of keepalive\nmessages to the neighbor.  Typically set to 1/3 the\nhold-time.","type":"number","default":30,"example":-92233720368547758.08},"hold-time":{"description":"Time interval in seconds that a BGP session will be\nconsidered active in the absence of keepalive or other\nmessages from the peer.  The hold-time is typically\nset to 3x the keepalive-interval.","type":"number","default":90,"example":-92233720368547758.08}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_timers_state","type":"object","description":"State information relating to the timers used for the BGP\nneighbor or group","properties":{"minimum-advertisement-interval":{"description":"Minimum time which must elapse between subsequent UPDATE\nmessages relating to a common set of NLRI being transmitted\nto a peer. This timer is referred to as\nMinRouteAdvertisementIntervalTimer by RFC 4721 and serves to\nreduce the number of UPDATE messages transmitted when a\nparticular set of NLRI exhibit instability.","type":"number","default":30,"example":-92233720368547758.08},"negotiated-hold-time":{"description":"The negotiated hold-time for the BGP session","type":"number","example":-92233720368547758.08},"connect-retry":{"description":"Time interval in seconds between attempts to establish a\nsession with the peer.","type":"number","default":30,"example":-92233720368547758.08},"keepalive-interval":{"description":"Time interval in seconds between transmission of keepalive\nmessages to the neighbor.  Typically set to 1/3 the\nhold-time.","type":"number","default":30,"example":-92233720368547758.08},"hold-time":{"description":"Time interval in seconds that a BGP session will be\nconsidered active in the absence of keepalive or other\nmessages from the peer.  The hold-time is typically\nset to 3x the keepalive-interval.","type":"number","default":90,"example":-92233720368547758.08},"uptime":{"description":"This timer determines the amount of time since the\nBGP last transitioned in or out of the Established\nstate","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport","type":"object","description":"Transport session parameters for the BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_config"}},"xml":{"name":"transport","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_config","type":"object","description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","properties":{"tcp-mss":{"description":"Sets the max segment size for BGP TCP sessions.","type":"integer","format":"int32","example":0},"passive-mode":{"description":"Wait for peers to issue requests to open a BGP session,\nrather than initiating sessions from the local router.","type":"boolean","default":false,"example":true},"remote-port":{"description":"Remote port being used by the peer for the TCP session\nsupporting the BGP session","type":"integer","format":"int32","default":179,"example":0},"mtu-discovery":{"description":"Turns path mtu discovery for BGP TCP sessions on (true)\nor off (false)","type":"boolean","default":false,"example":true},"local-address":{"description":"Set the local IP (either IPv4 or IPv6) address to use\nfor the session when sending BGP update messages.  This\nmay be expressed as either an IP address or reference\nto the name of an interface.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_transport_state","type":"object","description":"State information relating to the transport session(s)\nused for the BGP neighbor or group","properties":{"local-port":{"description":"Local TCP port being used for the TCP session supporting\nthe BGP session","type":"integer","format":"int32","example":0},"tcp-mss":{"description":"Sets the max segment size for BGP TCP sessions.","type":"integer","format":"int32","example":0},"passive-mode":{"description":"Wait for peers to issue requests to open a BGP session,\nrather than initiating sessions from the local router.","type":"boolean","default":false,"example":true},"remote-address":{"description":"Remote address to which the BGP session has been\nestablished","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"remote-port":{"description":"Remote port being used by the peer for the TCP session\nsupporting the BGP session","type":"integer","format":"int32","example":0},"mtu-discovery":{"description":"Turns path mtu discovery for BGP TCP sessions on (true)\nor off (false)","type":"boolean","default":false,"example":true},"local-address":{"description":"Set the local IP (either IPv4 or IPv6) address to use\nfor the session when sending BGP update messages.  This\nmay be expressed as either an IP address or reference\nto the name of an interface.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling","type":"object","description":"Error handling parameters used for the BGP neighbor or\ngroup","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_config"}},"xml":{"name":"error-handling","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_config","type":"object","description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","properties":{"treat-as-withdraw":{"description":"Specify whether erroneous UPDATE messages for which the\nNLRI can be extracted are treated as though the NLRI is\nwithdrawn - avoiding session reset","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_error-handling_state","type":"object","description":"State information relating to enhanced error handling\nmechanisms for the BGP neighbor or group","properties":{"treat-as-withdraw":{"description":"Specify whether erroneous UPDATE messages for which the\nNLRI can be extracted are treated as though the NLRI is\nwithdrawn - avoiding session reset","type":"boolean","default":false,"example":true},"erroneous-update-messages":{"description":"The number of BGP UPDATE messages for which the\ntreat-as-withdraw mechanism has been applied based\non erroneous message contents","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options","type":"object","description":"Logging options for events related to the BGP neighbor or\ngroup","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_config"}},"xml":{"name":"logging-options","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_config","type":"object","description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","properties":{"log-neighbor-state-changes":{"description":"Configure logging of peer state changes.  Default is\nto enable logging of peer state changes.","type":"boolean","default":true,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_logging-options_state","type":"object","description":"State information relating to logging for the BGP neighbor\nor group","properties":{"log-neighbor-state-changes":{"description":"Configure logging of peer state changes.  Default is\nto enable logging of peer state changes.","type":"boolean","default":true,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop","type":"object","description":"eBGP multi-hop parameters for the BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_config"}},"xml":{"name":"ebgp-multihop","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_config","type":"object","description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","properties":{"multihop-ttl":{"description":"Time-to-live value to use when packets are sent to the\nreferenced group or neighbors and ebgp-multihop is enabled","type":"integer","format":"int32","example":0},"enabled":{"description":"When enabled the referenced group or neighbors are permitted\nto be indirectly connected - including cases where the TTL\ncan be decremented between the BGP peers","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_ebgp-multihop_state","type":"object","description":"State information for eBGP multihop, for the BGP neighbor\nor group","properties":{"multihop-ttl":{"description":"Time-to-live value to use when packets are sent to the\nreferenced group or neighbors and ebgp-multihop is enabled","type":"integer","format":"int32","example":0},"enabled":{"description":"When enabled the referenced group or neighbors are permitted\nto be indirectly connected - including cases where the TTL\ncan be decremented between the BGP peers","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector","type":"object","description":"Route reflector parameters for the BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_config"}},"xml":{"name":"route-reflector","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_config","type":"object","description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","properties":{"route-reflector-cluster-id":{"description":"route-reflector cluster id to use when local router is\nconfigured as a route reflector.  Commonly set at the group\nlevel, but allows a different cluster\nid to be set for each neighbor.","type":"integer","format":"int64","example":0},"route-reflector-client":{"description":"Configure the neighbor as a route reflector client.","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_route-reflector_state","type":"object","description":"State information relating to route reflection for the\nBGP neighbor or group","properties":{"route-reflector-cluster-id":{"description":"route-reflector cluster id to use when local router is\nconfigured as a route reflector.  Commonly set at the group\nlevel, but allows a different cluster\nid to be set for each neighbor.","type":"integer","format":"int64","example":0},"route-reflector-client":{"description":"Configure the neighbor as a route reflector client.","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options","type":"object","description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_config"}},"xml":{"name":"as-path-options","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_config","type":"object","description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","properties":{"replace-peer-as":{"description":"Replace occurrences of the peer's AS in the AS_PATH\nwith the local autonomous system number","type":"boolean","default":false,"example":true},"allow-own-as":{"description":"Specify the number of occurrences of the local BGP speaker's\nAS that can occur within the AS_PATH before it is rejected.","type":"string","default":"0"}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_as-path-options_state","type":"object","description":"State information relating to the AS_PATH manipulation\nmechanisms for the BGP peer or group","properties":{"replace-peer-as":{"description":"Replace occurrences of the peer's AS in the AS_PATH\nwith the local autonomous system number","type":"boolean","default":false,"example":true},"allow-own-as":{"description":"Specify the number of occurrences of the local BGP speaker's\nAS that can occur within the AS_PATH before it is rejected.","type":"string","default":"0"}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths","type":"object","description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_config"}},"xml":{"name":"add-paths","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_config","type":"object","description":"Configuration parameters relating to ADD_PATHS","properties":{"receive":{"description":"Enable ability to receive multiple path advertisements\nfor an NLRI from the neighbor or group","type":"boolean","default":false,"example":true},"send-max":{"description":"The maximum number of paths to advertise to neighbors\nfor a single NLRI","type":"integer","format":"int32","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_add-paths_state","type":"object","description":"State information associated with ADD_PATHS","properties":{"receive":{"description":"Enable ability to receive multiple path advertisements\nfor an NLRI from the neighbor or group","type":"boolean","default":false,"example":true},"send-max":{"description":"The maximum number of paths to advertise to neighbors\nfor a single NLRI","type":"integer","format":"int32","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis","type":"object","description":"Per-address-family configuration parameters associated with\nthe neighbor or group","properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi"},"description":"AFI,SAFI configuration available for the\nneighbour or group"}},"xml":{"name":"afi-safis","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi","type":"object","description":"AFI,SAFI configuration available for the\nneighbour or group","properties":{"receive":{"description":"Enable ability to receive multiple path advertisements\nfor an NLRI from the neighbor or group","type":"boolean","default":false,"example":true},"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy"},"ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast"},"ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast"},"l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls"},"ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast"},"l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast"},"l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn"},"ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast"},"l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast"},"l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast"},"afi-safi-name":{"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"send-max":{"description":"The maximum number of paths to advertise to neighbors\nfor a single NLRI","type":"integer","format":"int32","example":0},"graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_config"},"l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast"}},"xml":{"name":"afi-safi","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart","type":"object","description":"Parameters relating to BGP graceful-restart","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config"}},"xml":{"name":"graceful-restart","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config","type":"object","description":"Configuration options for BGP graceful-restart","properties":{"bgp-ll-graceful-restart:ll-graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart"},"enabled":{"description":"This leaf indicates whether graceful-restart is enabled for\nthis AFI-SAFI","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart","type":"object","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config"}},"xml":{"name":"ll-graceful-restart","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config","type":"object","properties":{"long-lived-stale-time":{"description":"Value of time in second which we keep routes of given af-safi after\ngraceful restart timer expired. If zero value afi-safi wil not be advertised\nin long-lived graceful restart capability","type":"string","default":"0"}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_graceful-restart_state","type":"object","description":"State information for BGP graceful-restart","properties":{"ll-stale-timer":{"description":"Value of timer used during long-lived graceful restart in nseconds.\nIf table is both advertised and received use lower value. Zero value\nmeans table is not supported by any side","type":"integer","format":"int64","example":0},"ll-received":{"description":"This leaf indicates whether the neighbor advertised the\nability to support long-lived graceful-restart for this AFI-SAFI","type":"boolean","example":true},"advertised":{"description":"This leaf indicates whether the ability to support\ngraceful-restart has been advertised to the peer","type":"boolean","example":true},"received":{"description":"This leaf indicates whether the neighbor advertised the\nability to support graceful-restart for this AFI-SAFI","type":"boolean","example":true},"ll-advertised":{"description":"This leaf indicates whether the ability to support\nlong-lived graceful-restart has been advertised to the peer","type":"boolean","example":true},"enabled":{"description":"This leaf indicates whether graceful-restart is enabled for\nthis AFI-SAFI","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_config","type":"object","description":"Configuration parameters for the AFI-SAFI","properties":{"afi-safi-name":{"description":"AFI,SAFI","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"enabled":{"description":"This leaf indicates whether the IPv4 Unicast AFI,SAFI is\nenabled for the neighbour or group","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_state","type":"object","description":"State information relating to the AFI-SAFI","properties":{"prefixes":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_state_prefixes"},"afi-safi-name":{"description":"AFI,SAFI","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"active":{"description":"This value indicates whether a particular AFI-SAFI has\nbeen succesfully negotiated with the peer. An AFI-SAFI\nmay be enabled in the current running configuration, but a\nsession restart may be required in order to negotiate the new\ncapability.","type":"boolean","example":true},"enabled":{"description":"This leaf indicates whether the IPv4 Unicast AFI,SAFI is\nenabled for the neighbour or group","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_state_prefixes":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_state_prefixes","type":"object","description":"Prefix counters for the BGP session","properties":{"installed":{"description":"The number of advertised prefixes installed in the\nLoc-RIB","type":"integer","format":"int64","example":0},"received":{"description":"The number of prefixes received from the neighbor","type":"integer","format":"int64","example":0},"sent":{"description":"The number of prefixes advertised to the neighbor","type":"integer","format":"int64","example":0}},"xml":{"name":"prefixes","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy","type":"object","description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config"}},"xml":{"name":"apply-policy","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_config","type":"object","description":"Policy configuration data.","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_apply-policy_state","type":"object","description":"Operational state for routing policy","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast","type":"object","description":"IPv4 unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config"}},"xml":{"name":"ipv4-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_config","type":"object","description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_state","type":"object","description":"State information for common IPv4 and IPv6 unicast\nparameters","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast","type":"object","description":"IPv6 unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config"}},"xml":{"name":"ipv6-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_config","type":"object","description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_state","type":"object","description":"State information for common IPv4 and IPv6 unicast\nparameters","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object","description":"IPv4 Labelled Unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}},"xml":{"name":"ipv4-labelled-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object","description":"IPv6 Labelled Unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}},"xml":{"name":"ipv6-labelled-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object","description":"Unicast IPv4 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv4-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object","description":"Unicast IPv6 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv6-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object","description":"Multicast IPv4 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv4-multicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object","description":"Multicast IPv6 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv6-multicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls","type":"object","description":"BGP-signalled VPLS configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}},"xml":{"name":"l2vpn-vpls","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn","type":"object","description":"BGP EVPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}},"xml":{"name":"l2vpn-evpn","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy","type":"object","description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_config"}},"xml":{"name":"apply-policy","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_config","type":"object","description":"Policy configuration data.","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_apply-policy_state","type":"object","description":"Operational state for routing policy","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart","type":"object","description":"Parameters relating the graceful restart mechanism for BGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_config"}},"xml":{"name":"graceful-restart","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_config","type":"object","description":"Configuration parameters relating to graceful-restart","properties":{"stale-routes-time":{"description":"An upper-bound on the time thate stale routes will be\nretained by a router after a session is restarted. If an\nEnd-of-RIB (EOR) marker is received prior to this timer\nexpiring stale-routes will be flushed upon its receipt - if\nno EOR is received, then when this timer expires stale paths\nwill be purged. This timer is referred to as the\nSelection_Deferral_Timer in RFC4724","type":"number","example":-92233720368547758.08},"restart-time":{"description":"Estimated time (in seconds) for the local BGP speaker to\nrestart a session. This value is advertise in the graceful\nrestart BGP capability.  This is a 12-bit value, referred to\nas Restart Time in RFC4724.  Per RFC4724, the suggested\ndefault value is &lt;= the hold-time value.","type":"integer","format":"int32","example":0},"helper-only":{"description":"Enable graceful-restart in helper mode only. When this\nleaf is set, the local system does not retain forwarding\nits own state during a restart, but supports procedures\nfor the receiving speaker, as defined in RFC4724.","type":"boolean","example":true},"enabled":{"description":"Enable or disable the graceful-restart capability.","type":"boolean","example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_neighbors_neighbor_graceful-restart_state","type":"object","description":"State information associated with graceful-restart","properties":{"mode":{"description":"Ths leaf indicates the mode of operation of BGP graceful\nrestart with the peer","type":"string","enum":["HELPER-ONLY","BILATERAL","REMOTE-HELPER"],"example":"HELPER-ONLY"},"stale-routes-time":{"description":"An upper-bound on the time thate stale routes will be\nretained by a router after a session is restarted. If an\nEnd-of-RIB (EOR) marker is received prior to this timer\nexpiring stale-routes will be flushed upon its receipt - if\nno EOR is received, then when this timer expires stale paths\nwill be purged. This timer is referred to as the\nSelection_Deferral_Timer in RFC4724","type":"number","example":-92233720368547758.08},"local-restarting":{"description":"This flag indicates whether the local neighbor is currently\nrestarting. The flag is unset after all NLRI have been\nadvertised to the peer, and the End-of-RIB (EOR) marker has\nbeen unset","type":"boolean","example":true},"restart-time":{"description":"Estimated time (in seconds) for the local BGP speaker to\nrestart a session. This value is advertise in the graceful\nrestart BGP capability.  This is a 12-bit value, referred to\nas Restart Time in RFC4724.  Per RFC4724, the suggested\ndefault value is &lt;= the hold-time value.","type":"integer","format":"int32","example":0},"helper-only":{"description":"Enable graceful-restart in helper mode only. When this\nleaf is set, the local system does not retain forwarding\nits own state during a restart, but supports procedures\nfor the receiving speaker, as defined in RFC4724.","type":"boolean","example":true},"peer-restart-time":{"description":"The period of time (advertised by the peer) that\nthe peer expects a restart of a BGP session to\ntake","type":"integer","format":"int32","example":0},"enabled":{"description":"Enable or disable the graceful-restart capability.","type":"boolean","example":true},"peer-restarting":{"description":"This flag indicates whether the remote neighbor is currently\nin the process of restarting, and hence received routes are\ncurrently stale","type":"boolean","example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups","type":"object","description":"Configuration for BGP peer-groups","properties":{"peer-group":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group"},"description":"List of BGP peer-groups configured on the local system -\nuniquely identified by peer-group name"}},"xml":{"name":"peer-groups","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group","type":"object","description":"List of BGP peer-groups configured on the local system -\nuniquely identified by peer-group name","properties":{"timers":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers"},"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy"},"route-reflector":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector"},"peer-group-name":{"description":"Reference to the name of the BGP peer-group used as a\nkey in the peer-group list","type":"string","example":"Some peer-group-name"},"transport":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport"},"as-path-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options"},"ebgp-multihop":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop"},"error-handling":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling"},"add-paths":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths"},"afi-safis":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis"},"graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart"},"logging-options":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_config"}},"xml":{"name":"peer-group","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_config","type":"object","description":"Configuration parameters relating to the BGP neighbor or\ngroup","properties":{"peer-type":{"description":"Explicitly designate the peer or peer group as internal\n(iBGP) or external (eBGP).","type":"string","enum":["INTERNAL","EXTERNAL"],"example":"INTERNAL"},"remove-private-as":{"description":"Remove private AS numbers from updates sent to peers.","type":"string","enum":["ALL","REPLACE"],"example":"ALL"},"send-community":{"description":"Specify which types of community should be sent to the\nneighbor or group. The default is to not send the\ncommunity attribute","type":"string","enum":["STANDARD","EXTENDED","BOTH","NONE"],"default":"NONE","example":"STANDARD"},"description":{"description":"An optional textual description (intended primarily for use\nwith a peer or group","type":"string","example":"Some description"},"peer-as":{"description":"AS number of the peer.","type":"integer","format":"int64","example":0},"route-flap-damping":{"description":"Enable route flap damping.","type":"boolean","default":false,"example":true},"auth-password":{"description":"Configures an MD5 authentication password for use with\nneighboring devices.","type":"string","example":"Some auth-password"},"local-as":{"description":"The local autonomous system number that is to be used\nwhen establishing sessions with the remote peer or peer\ngroup, if this differs from the global BGP router\nautonomous system number.","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_state","type":"object","description":"State information relating to the BGP neighbor or group","properties":{"peer-type":{"description":"Explicitly designate the peer or peer group as internal\n(iBGP) or external (eBGP).","type":"string","enum":["INTERNAL","EXTERNAL"],"example":"INTERNAL"},"total-prefixes":{"description":"","type":"integer","format":"int64","example":0},"total-paths":{"description":"Total number of BGP paths within the context","type":"integer","format":"int64","example":0},"remove-private-as":{"description":"Remove private AS numbers from updates sent to peers.","type":"string","enum":["ALL","REPLACE"],"example":"ALL"},"send-community":{"description":"Specify which types of community should be sent to the\nneighbor or group. The default is to not send the\ncommunity attribute","type":"string","enum":["STANDARD","EXTENDED","BOTH","NONE"],"default":"NONE","example":"STANDARD"},"description":{"description":"An optional textual description (intended primarily for use\nwith a peer or group","type":"string","example":"Some description"},"peer-as":{"description":"AS number of the peer.","type":"integer","format":"int64","example":0},"route-flap-damping":{"description":"Enable route flap damping.","type":"boolean","default":false,"example":true},"auth-password":{"description":"Configures an MD5 authentication password for use with\nneighboring devices.","type":"string","example":"Some auth-password"},"local-as":{"description":"The local autonomous system number that is to be used\nwhen establishing sessions with the remote peer or peer\ngroup, if this differs from the global BGP router\nautonomous system number.","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers","type":"object","description":"Timers related to a BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_config"}},"xml":{"name":"timers","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_config","type":"object","description":"Configuration parameters relating to timers used for the\nBGP neighbor or group","properties":{"minimum-advertisement-interval":{"description":"Minimum time which must elapse between subsequent UPDATE\nmessages relating to a common set of NLRI being transmitted\nto a peer. This timer is referred to as\nMinRouteAdvertisementIntervalTimer by RFC 4721 and serves to\nreduce the number of UPDATE messages transmitted when a\nparticular set of NLRI exhibit instability.","type":"number","default":30,"example":-92233720368547758.08},"connect-retry":{"description":"Time interval in seconds between attempts to establish a\nsession with the peer.","type":"number","default":30,"example":-92233720368547758.08},"keepalive-interval":{"description":"Time interval in seconds between transmission of keepalive\nmessages to the neighbor.  Typically set to 1/3 the\nhold-time.","type":"number","default":30,"example":-92233720368547758.08},"hold-time":{"description":"Time interval in seconds that a BGP session will be\nconsidered active in the absence of keepalive or other\nmessages from the peer.  The hold-time is typically\nset to 3x the keepalive-interval.","type":"number","default":90,"example":-92233720368547758.08}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_timers_state","type":"object","description":"State information relating to the timers used for the BGP\nneighbor or group","properties":{"minimum-advertisement-interval":{"description":"Minimum time which must elapse between subsequent UPDATE\nmessages relating to a common set of NLRI being transmitted\nto a peer. This timer is referred to as\nMinRouteAdvertisementIntervalTimer by RFC 4721 and serves to\nreduce the number of UPDATE messages transmitted when a\nparticular set of NLRI exhibit instability.","type":"number","default":30,"example":-92233720368547758.08},"connect-retry":{"description":"Time interval in seconds between attempts to establish a\nsession with the peer.","type":"number","default":30,"example":-92233720368547758.08},"keepalive-interval":{"description":"Time interval in seconds between transmission of keepalive\nmessages to the neighbor.  Typically set to 1/3 the\nhold-time.","type":"number","default":30,"example":-92233720368547758.08},"hold-time":{"description":"Time interval in seconds that a BGP session will be\nconsidered active in the absence of keepalive or other\nmessages from the peer.  The hold-time is typically\nset to 3x the keepalive-interval.","type":"number","default":90,"example":-92233720368547758.08}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport","type":"object","description":"Transport session parameters for the BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_config"}},"xml":{"name":"transport","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_config","type":"object","description":"Configuration parameters relating to the transport\nsession(s) used for the BGP neighbor or group","properties":{"tcp-mss":{"description":"Sets the max segment size for BGP TCP sessions.","type":"integer","format":"int32","example":0},"passive-mode":{"description":"Wait for peers to issue requests to open a BGP session,\nrather than initiating sessions from the local router.","type":"boolean","default":false,"example":true},"remote-port":{"description":"Remote port being used by the peer for the TCP session\nsupporting the BGP session","type":"integer","format":"int32","default":179,"example":0},"mtu-discovery":{"description":"Turns path mtu discovery for BGP TCP sessions on (true)\nor off (false)","type":"boolean","default":false,"example":true},"local-address":{"description":"Set the local IP (either IPv4 or IPv6) address to use\nfor the session when sending BGP update messages.  This\nmay be expressed as either an IP address or reference\nto the name of an interface.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_transport_state","type":"object","description":"State information relating to the transport session(s)\nused for the BGP neighbor or group","properties":{"tcp-mss":{"description":"Sets the max segment size for BGP TCP sessions.","type":"integer","format":"int32","example":0},"passive-mode":{"description":"Wait for peers to issue requests to open a BGP session,\nrather than initiating sessions from the local router.","type":"boolean","default":false,"example":true},"mtu-discovery":{"description":"Turns path mtu discovery for BGP TCP sessions on (true)\nor off (false)","type":"boolean","default":false,"example":true},"local-address":{"description":"Set the local IP (either IPv4 or IPv6) address to use\nfor the session when sending BGP update messages.  This\nmay be expressed as either an IP address or reference\nto the name of an interface.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling","type":"object","description":"Error handling parameters used for the BGP neighbor or\ngroup","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_config"}},"xml":{"name":"error-handling","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_config","type":"object","description":"Configuration parameters enabling or modifying the\nbehavior or enhanced error handling mechanisms for the BGP\nneighbor or group","properties":{"treat-as-withdraw":{"description":"Specify whether erroneous UPDATE messages for which the\nNLRI can be extracted are treated as though the NLRI is\nwithdrawn - avoiding session reset","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_error-handling_state","type":"object","description":"State information relating to enhanced error handling\nmechanisms for the BGP neighbor or group","properties":{"treat-as-withdraw":{"description":"Specify whether erroneous UPDATE messages for which the\nNLRI can be extracted are treated as though the NLRI is\nwithdrawn - avoiding session reset","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options","type":"object","description":"Logging options for events related to the BGP neighbor or\ngroup","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_config"}},"xml":{"name":"logging-options","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_config","type":"object","description":"Configuration parameters enabling or modifying logging\nfor events relating to the BGP neighbor or group","properties":{"log-neighbor-state-changes":{"description":"Configure logging of peer state changes.  Default is\nto enable logging of peer state changes.","type":"boolean","default":true,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_logging-options_state","type":"object","description":"State information relating to logging for the BGP neighbor\nor group","properties":{"log-neighbor-state-changes":{"description":"Configure logging of peer state changes.  Default is\nto enable logging of peer state changes.","type":"boolean","default":true,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop","type":"object","description":"eBGP multi-hop parameters for the BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_config"}},"xml":{"name":"ebgp-multihop","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_config","type":"object","description":"Configuration parameters relating to eBGP multihop for the\nBGP neighbor or group","properties":{"multihop-ttl":{"description":"Time-to-live value to use when packets are sent to the\nreferenced group or neighbors and ebgp-multihop is enabled","type":"integer","format":"int32","example":0},"enabled":{"description":"When enabled the referenced group or neighbors are permitted\nto be indirectly connected - including cases where the TTL\ncan be decremented between the BGP peers","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_ebgp-multihop_state","type":"object","description":"State information for eBGP multihop, for the BGP neighbor\nor group","properties":{"multihop-ttl":{"description":"Time-to-live value to use when packets are sent to the\nreferenced group or neighbors and ebgp-multihop is enabled","type":"integer","format":"int32","example":0},"enabled":{"description":"When enabled the referenced group or neighbors are permitted\nto be indirectly connected - including cases where the TTL\ncan be decremented between the BGP peers","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector","type":"object","description":"Route reflector parameters for the BGP neighbor or group","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_config"}},"xml":{"name":"route-reflector","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_config","type":"object","description":"Configuraton parameters relating to route reflection\nfor the BGP neighbor or group","properties":{"route-reflector-cluster-id":{"description":"route-reflector cluster id to use when local router is\nconfigured as a route reflector.  Commonly set at the group\nlevel, but allows a different cluster\nid to be set for each neighbor.","type":"integer","format":"int64","example":0},"route-reflector-client":{"description":"Configure the neighbor as a route reflector client.","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_route-reflector_state","type":"object","description":"State information relating to route reflection for the\nBGP neighbor or group","properties":{"route-reflector-cluster-id":{"description":"route-reflector cluster id to use when local router is\nconfigured as a route reflector.  Commonly set at the group\nlevel, but allows a different cluster\nid to be set for each neighbor.","type":"integer","format":"int64","example":0},"route-reflector-client":{"description":"Configure the neighbor as a route reflector client.","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options","type":"object","description":"AS_PATH manipulation parameters for the BGP neighbor or\ngroup","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_config"}},"xml":{"name":"as-path-options","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_config","type":"object","description":"Configuration parameters relating to AS_PATH manipulation\nfor the BGP peer or group","properties":{"replace-peer-as":{"description":"Replace occurrences of the peer's AS in the AS_PATH\nwith the local autonomous system number","type":"boolean","default":false,"example":true},"allow-own-as":{"description":"Specify the number of occurrences of the local BGP speaker's\nAS that can occur within the AS_PATH before it is rejected.","type":"string","default":"0"}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_as-path-options_state","type":"object","description":"State information relating to the AS_PATH manipulation\nmechanisms for the BGP peer or group","properties":{"replace-peer-as":{"description":"Replace occurrences of the peer's AS in the AS_PATH\nwith the local autonomous system number","type":"boolean","default":false,"example":true},"allow-own-as":{"description":"Specify the number of occurrences of the local BGP speaker's\nAS that can occur within the AS_PATH before it is rejected.","type":"string","default":"0"}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths","type":"object","description":"Parameters relating to the advertisement and receipt of\nmultiple paths for a single NLRI (add-paths)","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_config"}},"xml":{"name":"add-paths","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_config","type":"object","description":"Configuration parameters relating to ADD_PATHS","properties":{"receive":{"description":"Enable ability to receive multiple path advertisements\nfor an NLRI from the neighbor or group","type":"boolean","default":false,"example":true},"send-max":{"description":"The maximum number of paths to advertise to neighbors\nfor a single NLRI","type":"integer","format":"int32","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_add-paths_state","type":"object","description":"State information associated with ADD_PATHS","properties":{"receive":{"description":"Enable ability to receive multiple path advertisements\nfor an NLRI from the neighbor or group","type":"boolean","default":false,"example":true},"send-max":{"description":"The maximum number of paths to advertise to neighbors\nfor a single NLRI","type":"integer","format":"int32","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis","type":"object","description":"Per-address-family configuration parameters associated with\nthe neighbor or group","properties":{"afi-safi":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi"},"description":"AFI,SAFI configuration available for the\nneighbour or group"}},"xml":{"name":"afi-safis","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi","type":"object","description":"AFI,SAFI configuration available for the\nneighbour or group","properties":{"receive":{"description":"Enable ability to receive multiple path advertisements\nfor an NLRI from the neighbor or group","type":"boolean","default":false,"example":true},"apply-policy":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy"},"ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast"},"ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast"},"l2vpn-vpls":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls"},"ipv6-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast"},"l3vpn-ipv4-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast"},"l2vpn-evpn":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn"},"ipv4-labelled-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast"},"l3vpn-ipv6-unicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast"},"l3vpn-ipv4-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast"},"afi-safi-name":{"description":"Reference to the AFI-SAFI name used as a key\nfor the AFI-SAFI list","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"send-max":{"description":"The maximum number of paths to advertise to neighbors\nfor a single NLRI","type":"integer","format":"int32","example":0},"graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_config"},"l3vpn-ipv6-multicast":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast"}},"xml":{"name":"afi-safi","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart","type":"object","description":"Parameters relating to BGP graceful-restart","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config"}},"xml":{"name":"graceful-restart","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config","type":"object","description":"Configuration options for BGP graceful-restart","properties":{"bgp-ll-graceful-restart:ll-graceful-restart":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart"},"enabled":{"description":"This leaf indicates whether graceful-restart is enabled for\nthis AFI-SAFI","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart","type":"object","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config"}},"xml":{"name":"ll-graceful-restart","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_config_ll-graceful-restart_config","type":"object","properties":{"long-lived-stale-time":{"description":"Value of time in second which we keep routes of given af-safi after\ngraceful restart timer expired. If zero value afi-safi wil not be advertised\nin long-lived graceful restart capability","type":"string","default":"0"}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_graceful-restart_state","type":"object","description":"State information for BGP graceful-restart","properties":{"enabled":{"description":"This leaf indicates whether graceful-restart is enabled for\nthis AFI-SAFI","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_config","type":"object","description":"Configuration parameters for the AFI-SAFI","properties":{"afi-safi-name":{"description":"AFI,SAFI","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"enabled":{"description":"This leaf indicates whether the IPv4 Unicast AFI,SAFI is\nenabled for the neighbour or group","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_state","type":"object","description":"State information relating to the AFI-SAFI","properties":{"afi-safi-name":{"description":"AFI,SAFI","type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"enabled":{"description":"This leaf indicates whether the IPv4 Unicast AFI,SAFI is\nenabled for the neighbour or group","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy","type":"object","description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config"}},"xml":{"name":"apply-policy","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_config","type":"object","description":"Policy configuration data.","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_apply-policy_state","type":"object","description":"Operational state for routing policy","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast","type":"object","description":"IPv4 unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config"}},"xml":{"name":"ipv4-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_config","type":"object","description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_state","type":"object","description":"State information for common IPv4 and IPv6 unicast\nparameters","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast","type":"object","description":"IPv6 unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit"},"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config"}},"xml":{"name":"ipv6-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_config","type":"object","description":"Configuration parameters for common IPv4 and IPv6 unicast\nAFI-SAFI options","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_state","type":"object","description":"State information for common IPv4 and IPv6 unicast\nparameters","properties":{"send-default-route":{"description":"If set to true, send the default-route to the neighbour(s)","type":"boolean","default":false,"example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast","type":"object","description":"IPv4 Labelled Unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit"}},"xml":{"name":"ipv4-labelled-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv4-labelled-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast","type":"object","description":"IPv6 Labelled Unicast configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit"}},"xml":{"name":"ipv6-labelled-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_ipv6-labelled-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast","type":"object","description":"Unicast IPv4 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv4-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast","type":"object","description":"Unicast IPv6 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv6-unicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-unicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast","type":"object","description":"Multicast IPv4 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv4-multicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv4-multicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast","type":"object","description":"Multicast IPv6 L3VPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit"}},"xml":{"name":"l3vpn-ipv6-multicast","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l3vpn-ipv6-multicast_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls","type":"object","description":"BGP-signalled VPLS configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit"}},"xml":{"name":"l2vpn-vpls","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-vpls_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn","type":"object","description":"BGP EVPN configuration options","properties":{"prefix-limit":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit"}},"xml":{"name":"l2vpn-evpn","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit","type":"object","description":"Configure the maximum number of prefixes that will be\naccepted from a peer","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config"}},"xml":{"name":"prefix-limit","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_config","type":"object","description":"Configuration parameters relating to the prefix\nlimit for the AFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_afi-safis_afi-safi_l2vpn-evpn_prefix-limit_state","type":"object","description":"State information relating to the prefix-limit for the\nAFI-SAFI","properties":{"restart-timer":{"description":"Time interval in seconds after which the BGP session\nis re-established after being torn down due to exceeding\nthe max-prefix limit.","type":"number","example":-92233720368547758.08},"shutdown-threshold-pct":{"description":"Threshold on number of prefixes that can be received\nfrom a neighbour before generation of warning messages\nor log entries. Expressed as a percentage of\nmax-prefixes","type":"integer","format":"int32","example":0},"max-prefixes":{"description":"Maximum number of prefixes that will be accepted\nfrom the neighbour","type":"integer","format":"int64","example":0}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy","type":"object","description":"Anchor point for routing policies in the model.\nImport and export policies are with respect to the local\nrouting table, i.e., export (send) and import (receive),\ndepending on the context.","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_config"}},"xml":{"name":"apply-policy","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_config","type":"object","description":"Policy configuration data.","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_apply-policy_state","type":"object","description":"Operational state for routing policy","properties":{"default-export-policy":{"description":"explicitly set a default policy if no policy definition\nin the export policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"import-policy":{"type":"array","items":{"type":"string","example":"Some import-policy"},"description":"list of policy names in sequence to be applied on\nreceiving a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."},"default-import-policy":{"description":"explicitly set a default policy if no policy definition\nin the import policy chain is satisfied.","type":"string","enum":["ACCEPT-ROUTE","REJECT-ROUTE"],"default":"REJECT-ROUTE","example":"ACCEPT-ROUTE"},"export-policy":{"type":"array","items":{"type":"string","example":"Some export-policy"},"description":"list of policy names in sequence to be applied on\nsending a routing update in the current context, e.g.,\nfor the current peer group, neighbor, address family,\netc."}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart","type":"object","description":"Parameters relating the graceful restart mechanism for BGP","properties":{"config":{"$ref":"#/components/schemas/openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_config"}},"xml":{"name":"graceful-restart","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_config":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_config","type":"object","description":"Configuration parameters relating to graceful-restart","properties":{"stale-routes-time":{"description":"An upper-bound on the time thate stale routes will be\nretained by a router after a session is restarted. If an\nEnd-of-RIB (EOR) marker is received prior to this timer\nexpiring stale-routes will be flushed upon its receipt - if\nno EOR is received, then when this timer expires stale paths\nwill be purged. This timer is referred to as the\nSelection_Deferral_Timer in RFC4724","type":"number","example":-92233720368547758.08},"restart-time":{"description":"Estimated time (in seconds) for the local BGP speaker to\nrestart a session. This value is advertise in the graceful\nrestart BGP capability.  This is a 12-bit value, referred to\nas Restart Time in RFC4724.  Per RFC4724, the suggested\ndefault value is &lt;= the hold-time value.","type":"integer","format":"int32","example":0},"helper-only":{"description":"Enable graceful-restart in helper mode only. When this\nleaf is set, the local system does not retain forwarding\nits own state during a restart, but supports procedures\nfor the receiving speaker, as defined in RFC4724.","type":"boolean","example":true},"enabled":{"description":"Enable or disable the graceful-restart capability.","type":"boolean","example":true}},"xml":{"name":"config","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_state":{"title":"openconfig-network-instance_network-instances_network-instance_protocols_protocol_bgp_peer-groups_peer-group_graceful-restart_state","type":"object","description":"State information associated with graceful-restart","properties":{"stale-routes-time":{"description":"An upper-bound on the time thate stale routes will be\nretained by a router after a session is restarted. If an\nEnd-of-RIB (EOR) marker is received prior to this timer\nexpiring stale-routes will be flushed upon its receipt - if\nno EOR is received, then when this timer expires stale paths\nwill be purged. This timer is referred to as the\nSelection_Deferral_Timer in RFC4724","type":"number","example":-92233720368547758.08},"restart-time":{"description":"Estimated time (in seconds) for the local BGP speaker to\nrestart a session. This value is advertise in the graceful\nrestart BGP capability.  This is a 12-bit value, referred to\nas Restart Time in RFC4724.  Per RFC4724, the suggested\ndefault value is &lt;= the hold-time value.","type":"integer","format":"int32","example":0},"helper-only":{"description":"Enable graceful-restart in helper mode only. When this\nleaf is set, the local system does not retain forwarding\nits own state during a restart, but supports procedures\nfor the receiving speaker, as defined in RFC4724.","type":"boolean","example":true},"enabled":{"description":"Enable or disable the graceful-restart capability.","type":"boolean","example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"}},"openconfig-routing-policy_routing-policy":{"title":"openconfig-routing-policy_routing-policy","type":"object","description":"top-level container for all routing policy configuration","properties":{"policy-definitions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions"},"defined-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets"}},"xml":{"name":"routing-policy","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_defined-sets":{"title":"openconfig-routing-policy_routing-policy_defined-sets","type":"object","description":"Predefined sets of attributes used in policy match\nstatements","properties":{"prefix-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets"},"tag-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets"},"neighbor-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets"},"openconfig-bgp-policy:bgp-defined-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets"}},"xml":{"name":"defined-sets","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_prefix-sets":{"title":"openconfig-routing-policy_routing-policy_defined-sets_prefix-sets","type":"object","description":"Enclosing container for defined prefix sets for matching","properties":{"prefix-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set"},"description":"List of the defined prefix sets"}},"xml":{"name":"prefix-sets","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set":{"title":"openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set","type":"object","description":"List of the defined prefix sets","properties":{"prefix":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set_prefix"},"description":"List of prefix expressions that are part of the set"},"prefix-set-name":{"description":"name / label of the prefix set -- this is used to\nreference the set in match conditions","type":"string","example":"Some prefix-set-name"}},"xml":{"name":"prefix-set","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set_prefix":{"title":"openconfig-routing-policy_routing-policy_defined-sets_prefix-sets_prefix-set_prefix","type":"object","description":"List of prefix expressions that are part of the set","properties":{"masklength-range":{"description":"Defines a range for the masklength, or 'exact' if\nthe prefix has an exact length.\n\nExample: 10.3.192.0/21 through 10.3.192.0/24 would be\nexpressed as prefix: 10.3.192.0/21,\nmasklength-range: 21..24.\n\nExample: 10.3.192.0/21 would be expressed as\nprefix: 10.3.192.0/21,\nmasklength-range: exact","type":"string","example":"0..0","minLength":0,"maxLength":2147483647},"ip-prefix":{"description":"The prefix member in CIDR notation -- while the\nprefix may be either IPv4 or IPv6, most\nimplementations require all members of the prefix set\nto be the same address family.  Mixing address types in\nthe same prefix set is likely to cause an error.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647}},"required":["ip-prefix"],"xml":{"name":"prefix","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets":{"title":"openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets","type":"object","description":"Enclosing container for defined neighbor sets for matching","properties":{"neighbor-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set"},"description":"Definitions for neighbor sets"}},"xml":{"name":"neighbor-sets","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set":{"title":"openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set","type":"object","description":"Definitions for neighbor sets","properties":{"neighbor-set-name":{"description":"name / label of the neighbor set -- this is used to\nreference the set in match conditions","type":"string","example":"Some neighbor-set-name"},"neighbor":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set_neighbor"},"description":"list of addresses that are part of the neighbor set"}},"xml":{"name":"neighbor-set","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set_neighbor":{"title":"openconfig-routing-policy_routing-policy_defined-sets_neighbor-sets_neighbor-set_neighbor","type":"object","description":"list of addresses that are part of the neighbor set","properties":{"address":{"description":"IP address of the neighbor set member","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"neighbor","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_tag-sets":{"title":"openconfig-routing-policy_routing-policy_defined-sets_tag-sets","type":"object","description":"Enclosing container for defined tag sets for matching","properties":{"tag-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set"},"description":"Definitions for tag sets"}},"xml":{"name":"tag-sets","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set":{"title":"openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set","type":"object","description":"Definitions for tag sets","properties":{"tag":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set_tag"},"description":"list of tags that are part of the tag set"},"tag-set-name":{"description":"name / label of the tag set -- this is used to reference\nthe set in match conditions","type":"string","example":"Some tag-set-name"}},"xml":{"name":"tag-set","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set_tag":{"title":"openconfig-routing-policy_routing-policy_defined-sets_tag-sets_tag-set_tag","type":"object","description":"list of tags that are part of the tag set","properties":{"value":{"description":"Value of the tag set member","type":"integer","format":"int64","example":0}},"xml":{"name":"tag","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets","type":"object","description":"BGP-related set definitions for policy match conditions","properties":{"ext-community-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets"},"odl-bgp-policy:originator-id-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets"},"odl-bgp-policy:cluster-id-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets"},"community-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets"},"as-path-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets"},"odl-bgp-policy:role-sets":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets"}},"xml":{"name":"bgp-defined-sets","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets","type":"object","description":"Enclosing container for community sets","properties":{"community-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set"},"description":"Definitions for community sets"}},"xml":{"name":"community-sets","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set","type":"object","description":"Definitions for community sets","properties":{"community-set-name":{"description":"name / label of the community set -- this is used to\nreference the set in match conditions","type":"string","example":"Some community-set-name"},"communities":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set_communities"},"description":"members of the community set"}},"required":["community-set-name"],"xml":{"name":"community-set","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set_communities":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_community-sets_community-set_communities","type":"object","description":"members of the community set","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"semantics":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"communities","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets","type":"object","description":"Enclosing container for extended community sets","properties":{"ext-community-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set"},"description":"Definitions for extended community sets"}},"xml":{"name":"ext-community-sets","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set","type":"object","description":"Definitions for extended community sets","properties":{"ext-community-member":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set_ext-community-member"},"description":"members of the extended community set"},"ext-community-set-name":{"description":"name / label of the extended community set -- this is\nused to reference the set in match conditions","type":"string","example":"Some ext-community-set-name"}},"xml":{"name":"ext-community-set","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set_ext-community-member":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set_ext-community-member","type":"object","description":"members of the extended community set","properties":{"as-specific-extended-community":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set_ext-community-member_as-specific-extended-community"},"transitive":{"description":"","type":"boolean","example":true}},"xml":{"name":"ext-community-member","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set_ext-community-member_as-specific-extended-community":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_ext-community-sets_ext-community-set_ext-community-member_as-specific-extended-community","type":"object","properties":{"global-administrator":{"description":"","type":"integer","format":"int64","example":0},"local-administrator":{"description":"","type":"string","format":"byte"}},"xml":{"name":"as-specific-extended-community","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets","type":"object","description":"Enclosing container for AS path sets","properties":{"as-path-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets_as-path-set"},"description":"Definitions for AS path sets"}},"xml":{"name":"as-path-sets","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets_as-path-set":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_as-path-sets_as-path-set","type":"object","description":"Definitions for AS path sets","properties":{"as-path-set-name":{"description":"name of the AS path set -- this is used to reference\nthe set in match conditions","type":"string","example":"Some as-path-set-name"},"as-path-set-member":{"type":"array","items":{"type":"integer","format":"int64","example":0},"description":"AS path expression -- list of ASes in the set"}},"xml":{"name":"as-path-set","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets","type":"object","description":"Enclosing container for defined role sets for matching","properties":{"originator-id-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set"},"description":"List of the defined Originators Ids sets"}},"xml":{"name":"originator-id-sets","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set","type":"object","description":"List of the defined Originators Ids sets","properties":{"originator-id":{"type":"array","items":{"type":"string","example":"","minLength":0,"maxLength":2147483647},"description":"List of role expressions that are part of the set"},"originator-id-set-name":{"description":"name / label of the set -- this is used to\nreference the set in match conditions","type":"string","example":"Some originator-id-set-name"},"local":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set_local"}},"xml":{"name":"originator-id-set","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set_local":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_originator-id-sets_originator-id-set_local","type":"object","description":"Validates also Local Originator Id","properties":{},"xml":{"name":"local","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets","type":"object","description":"Enclosing container for defined cluster-id sets for matching","properties":{"cluster-id-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set"},"description":"List of the defined cluster Ids sets"}},"xml":{"name":"cluster-id-sets","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set","type":"object","description":"List of the defined cluster Ids sets","properties":{"cluster-id-set-name":{"description":"name / label of the set -- this is used to\nreference the set in match conditions","type":"string","example":"Some cluster-id-set-name"},"local":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set_local"},"cluster-id":{"type":"array","items":{"type":"string","example":"","minLength":0,"maxLength":2147483647},"description":"List of role expressions that are part of the set"}},"xml":{"name":"cluster-id-set","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set_local":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_cluster-id-sets_cluster-id-set_local","type":"object","description":"Validates also cluster Originator Id","properties":{},"xml":{"name":"local","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets","type":"object","description":"Enclosing container for defined role sets for matching","properties":{"role-set":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets_role-set"},"description":"List of the defined role sets"}},"xml":{"name":"role-sets","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets_role-set":{"title":"openconfig-routing-policy_routing-policy_defined-sets_bgp-defined-sets_role-sets_role-set","type":"object","description":"List of the defined role sets","properties":{"role":{"type":"array","items":{"type":"string","enum":["ebgp","ibgp","rr-client","internal"],"example":"ebgp"},"description":"List of role expressions that are part of the set"},"role-set-name":{"description":"name / label of the role set -- this is used to\nreference the set in match conditions","type":"string","example":"Some role-set-name"}},"xml":{"name":"role-set","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions":{"title":"openconfig-routing-policy_routing-policy_policy-definitions","type":"object","description":"Enclosing container for the list of top-level policy\ndefinitions","properties":{"policy-definition":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition"},"description":"List of top-level policy definitions, keyed by unique\nname.  These policy definitions are expected to be\nreferenced (by name) in policy chains specified in import\nor export configuration statements."}},"xml":{"name":"policy-definitions","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition","type":"object","description":"List of top-level policy definitions, keyed by unique\nname.  These policy definitions are expected to be\nreferenced (by name) in policy chains specified in import\nor export configuration statements.","properties":{"name":{"description":"Name of the top-level policy definition -- this name\n is used in references to the current policy","type":"string","example":"Some name"},"statements":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements"}},"xml":{"name":"policy-definition","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements","type":"object","description":"Enclosing container for policy statements","properties":{"statement":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement"},"description":"Policy statements group conditions and actions\nwithin a policy definition.  They are evaluated in\nthe order specified (see the description of policy\nevaluation at the top of this module."}},"xml":{"name":"statements","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement","type":"object","description":"Policy statements group conditions and actions\nwithin a policy definition.  They are evaluated in\nthe order specified (see the description of policy\nevaluation at the top of this module.","properties":{"name":{"description":"name of the policy statement","type":"string","example":"Some name"},"conditions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions"},"actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions"}},"xml":{"name":"statement","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions","type":"object","description":"Condition statements for this\npolicy statement","properties":{"openconfig-bgp-policy:bgp-conditions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions"},"match-neighbor-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-neighbor-set"},"call-policy":{"description":"Applies the statements from the specified policy\ndefinition and then returns control the current\npolicy statement. Note that the called policy may\nitself call other policies (subject to\nimplementation limitations). This is intended to\nprovide a policy 'subroutine' capability.  The\ncalled policy should contain an explicit or a\ndefault route disposition that returns an\neffective true (accept-route) or false\n(reject-route), otherwise the behavior may be\nambiguous and implementation dependent","type":"string","example":"Some call-policy"},"install-protocol-eq":{"description":"Condition to check the protocol / method used to install\nwhich installed the route into the local routing table","type":"string","enum":["install-protocol-type","ISIS","OSPF3","STATIC","OSPF","DIRECTLY-CONNECTED","LOCAL-AGGREGATE","BGP"],"example":"install-protocol-type"},"match-tag-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-tag-set"},"igp-conditions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_igp-conditions"},"match-prefix-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-prefix-set"}},"xml":{"name":"conditions","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_igp-conditions":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_igp-conditions","type":"object","description":"Policy conditions for IGP attributes","properties":{},"xml":{"name":"igp-conditions","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-prefix-set":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-prefix-set","type":"object","description":"Match a referenced prefix-set according to the logic\ndefined in the match-set-options leaf","properties":{"match-set-options":{"description":"Optional parameter that governs the behaviour of the\nmatch operation.  This leaf only supports matching on ANY\nmember of the set or inverting the match.  Matching on ALL is\nnot supported)","type":"string","enum":["ANY","INVERT"],"default":"ANY","example":"ANY"},"prefix-set":{"description":"References a defined prefix set","type":"string","example":"Some prefix-set"}},"xml":{"name":"match-prefix-set","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-neighbor-set":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-neighbor-set","type":"object","description":"Match a referenced neighbor set according to the logic\ndefined in the match-set-options-leaf","properties":{"match-set-options":{"description":"Optional parameter that governs the behaviour of the\nmatch operation.  This leaf only supports matching on ANY\nmember of the set or inverting the match.  Matching on ALL is\nnot supported)","type":"string","enum":["ANY","INVERT"],"default":"ANY","example":"ANY"},"neighbor-set":{"description":"References a defined neighbor set","type":"string","example":"Some neighbor-set"}},"xml":{"name":"match-neighbor-set","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-tag-set":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_match-tag-set","type":"object","description":"Match a referenced tag set according to the logic defined\nin the match-options-set leaf","properties":{"tag-set":{"description":"References a defined tag set","type":"string","example":"Some tag-set"},"match-set-options":{"description":"Optional parameter that governs the behaviour of the\nmatch operation.  This leaf only supports matching on ANY\nmember of the set or inverting the match.  Matching on ALL is\nnot supported)","type":"string","enum":["ANY","INVERT"],"default":"ANY","example":"ANY"}},"xml":{"name":"match-tag-set","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions","type":"object","description":"Policy conditions for matching\nBGP-specific defined sets or comparing BGP-specific\nattributes","properties":{"match-as-path-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-as-path-set"},"match-community-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-community-set"},"community-count":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_community-count"},"afi-safi-in":{"type":"array","items":{"type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"description":"List of address families which the NLRI may be\nwithin"},"odl-bgp-policy:match-originator-id-set-condition":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-originator-id-set-condition"},"origin-eq":{"description":"Condition to check if the route origin is equal to the\nspecified value","type":"string","enum":["IGP","EGP","INCOMPLETE"],"example":"IGP"},"med-eq":{"description":"Condition to check if the received MED value is equal to\nthe specified value","type":"integer","format":"int64","example":0},"match-ext-community-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-ext-community-set"},"local-pref-eq":{"description":"Condition to check if the local pref attribute is equal to\nthe specified value","type":"integer","format":"int64","example":0},"odl-bgp-policy:match-cluster-id-set-condition":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-cluster-id-set-condition"},"as-path-length":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_as-path-length"},"next-hop-in":{"type":"array","items":{"type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"description":"List of next hop addresses to check for in the route\nupdate"},"route-type":{"description":"Condition to check the route type in the route update","type":"string","enum":["INTERNAL","EXTERNAL"],"example":"INTERNAL"},"odl-bgp-policy:match-bgp-neighbor-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set"},"odl-bgp-policy:afi-safi-not-in":{"type":"array","items":{"type":"string","enum":["afi-safi-type","IPV4-FLOW","L3VPN-IPV6-UNICAST","L3VPN-IPV4-MULTICAST","IPV4-LABELLED-UNICAST","L3VPN-IPV4-UNICAST","L2VPN-VPLS","LINKSTATE","L3VPN-IPV6-MULTICAST","IPV4-MCAST-VPN","IPV6-FLOW","IPV6-UNICAST","IPV4-L3VPN-FLOW","ROUTE-TARGET-CONSTRAIN","IPV6-LABELLED-UNICAST","IPV6-MCAST-VPN","IPV4-UNICAST","L2VPN-EVPN","IPV6-L3VPN-FLOW"],"example":"afi-safi-type"},"description":"List of address families which the NLRI must not be within"},"odl-bgp-policy:vpn-non-member":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_vpn-non-member"},"odl-bgp-policy:match-role-set":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set"}},"xml":{"name":"bgp-conditions","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-community-set":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-community-set","type":"object","description":"Match a referenced community-set according to the logic\ndefined in the match-set-options leaf","properties":{"community-set":{"description":"References a defined community set","type":"string","example":"Some community-set"},"match-set-options":{"description":"Optional parameter that governs the behaviour of the\nmatch operation","type":"string","enum":["ANY","ALL","INVERT"],"default":"ANY","example":"ANY"}},"xml":{"name":"match-community-set","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-ext-community-set":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-ext-community-set","type":"object","description":"Match a referenced extended community-set according to the\nlogic defined in the match-set-options leaf","properties":{"match-set-options":{"description":"Optional parameter that governs the behaviour of the\nmatch operation","type":"string","enum":["ANY","ALL","INVERT"],"default":"ANY","example":"ANY"},"ext-community-set":{"description":"References a defined extended community set","type":"string","example":"Some ext-community-set"}},"xml":{"name":"match-ext-community-set","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-as-path-set":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-as-path-set","type":"object","description":"Match a referenced as-path set according to the logic\ndefined in the match-set-options leaf","properties":{"match-set-options":{"description":"Optional parameter that governs the behaviour of the\nmatch operation","type":"string","enum":["ANY","ALL","INVERT"],"default":"ANY","example":"ANY"},"as-path-set":{"description":"References a defined AS path set","type":"string","example":"Some as-path-set"}},"xml":{"name":"match-as-path-set","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_community-count":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_community-count","type":"object","description":"Value and comparison operations for conditions based on the\nnumber of communities in the route update","properties":{"value":{"description":"value to compare with the community count","type":"integer","format":"int64","example":0},"operator":{"description":"type of comparison to be performed","type":"string","enum":["attribute-comparison","attribute-ge","attribute-le","attribute-eq"],"example":"attribute-comparison"}},"xml":{"name":"community-count","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_as-path-length":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_as-path-length","type":"object","description":"Value and comparison operations for conditions based on the\nlength of the AS path in the route update","properties":{"value":{"description":"value to compare with the community count","type":"integer","format":"int64","example":0},"operator":{"description":"type of comparison to be performed","type":"string","enum":["attribute-comparison","attribute-ge","attribute-le","attribute-eq"],"example":"attribute-comparison"}},"xml":{"name":"as-path-length","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_vpn-non-member":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_vpn-non-member","type":"object","properties":{},"xml":{"name":"vpn-non-member","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set","type":"object","description":"Match a list of referenced role-set according to the logic\ndefined in the match-set-options leaf","properties":{"from-role":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_from-role"},"to-role":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_to-role"}},"xml":{"name":"match-role-set","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_from-role":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_from-role","type":"object","properties":{"role-set":{"description":"References a defined neighbor roles set","type":"string","example":"Some role-set"},"match-set-options":{"description":"Optional parameter that governs the behaviour of the\nmatch operation.  This leaf only supports matching on ANY\nmember of the set or inverting the match.  Matching on ALL is\nnot supported)","type":"string","enum":["ANY","INVERT"],"default":"ANY","example":"ANY"}},"xml":{"name":"from-role","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_to-role":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-role-set_to-role","type":"object","properties":{"role-set":{"description":"References a defined neighbor roles set","type":"string","example":"Some role-set"},"match-set-options":{"description":"Optional parameter that governs the behaviour of the\nmatch operation.  This leaf only supports matching on ANY\nmember of the set or inverting the match.  Matching on ALL is\nnot supported)","type":"string","enum":["ANY","INVERT"],"default":"ANY","example":"ANY"}},"xml":{"name":"to-role","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-originator-id-set-condition":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-originator-id-set-condition","type":"object","properties":{"originator-id-set":{"description":"References a defined Originator Id set","type":"string","example":"Some originator-id-set"},"match-set-options":{"description":"Optional parameter that governs the behaviour of the\nmatch operation.  This leaf only supports matching on ANY\nmember of the set or inverting the match.  Matching on ALL is\nnot supported)","type":"string","enum":["ANY","INVERT"],"default":"ANY","example":"ANY"}},"xml":{"name":"match-originator-id-set-condition","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-cluster-id-set-condition":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-cluster-id-set-condition","type":"object","properties":{"cluster-id-set":{"description":"References a defined cluster Id set","type":"string","example":"Some cluster-id-set"},"match-set-options":{"description":"Optional parameter that governs the behaviour of the\nmatch operation","type":"string","enum":["ANY","ALL","INVERT"],"default":"ANY","example":"ANY"}},"xml":{"name":"match-cluster-id-set-condition","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set","type":"object","description":"Match a referenced neighbor set according to the logic\ndefined in the match-set-options-leaf","properties":{"from-neighbor":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_from-neighbor"},"to-neighbor":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_to-neighbor"}},"xml":{"name":"match-bgp-neighbor-set","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_from-neighbor":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_from-neighbor","type":"object","properties":{"match-set-options":{"description":"Optional parameter that governs the behaviour of the\nmatch operation.  This leaf only supports matching on ANY\nmember of the set or inverting the match.  Matching on ALL is\nnot supported)","type":"string","enum":["ANY","INVERT"],"default":"ANY","example":"ANY"},"neighbor-set":{"description":"References a defined neighbor set","type":"string","example":"Some neighbor-set"}},"xml":{"name":"from-neighbor","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_to-neighbor":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_conditions_bgp-conditions_match-bgp-neighbor-set_to-neighbor","type":"object","properties":{"match-set-options":{"description":"Optional parameter that governs the behaviour of the\nmatch operation.  This leaf only supports matching on ANY\nmember of the set or inverting the match.  Matching on ALL is\nnot supported)","type":"string","enum":["ANY","INVERT"],"default":"ANY","example":"ANY"},"neighbor-set":{"description":"References a defined neighbor set","type":"string","example":"Some neighbor-set"}},"xml":{"name":"to-neighbor","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions","type":"object","description":"Action statements for this policy\nstatement","properties":{"openconfig-bgp-policy:bgp-actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions"},"igp-actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_igp-actions"},"accept-route":{"description":"accepts the route into the routing table","type":"object"}},"xml":{"name":"actions","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_igp-actions":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_igp-actions","type":"object","description":"Actions to set IGP route attributes; these actions\napply to multiple IGPs","properties":{"set-tag":{"description":"Set the tag value for OSPF or IS-IS routes.","type":"integer","format":"int64","example":0}},"xml":{"name":"igp-actions","namespace":"http://openconfig.net/yang/routing-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions","type":"object","description":"Definitions for policy action statements that\nchange BGP-specific attributes of the route","properties":{"odl-bgp-policy:set-cluster-id-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-cluster-id-prepend"},"set-as-path-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-as-path-prepend"},"odl-bgp-policy:non-transitive-attributes-filter":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_non-transitive-attributes-filter"},"set-local-pref":{"description":"set the local pref attribute on the route\nupdate","type":"integer","format":"int64","example":0},"odl-bgp-policy:reflect-attributes-actions":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_reflect-attributes-actions"},"set-next-hop":{"description":"set the next-hop attribute in the route update","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"odl-bgp-policy:set-originator-id-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-originator-id-prepend"},"bgp-route-target-constrain:client-attribute-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_client-attribute-prepend"},"odl-bgp-policy:local-as-path-prepend":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_local-as-path-prepend"},"set-ext-community":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community"},"set-route-origin":{"description":"set the origin attribute to the specified\nvalue","type":"string","enum":["IGP","EGP","INCOMPLETE"],"example":"IGP"},"set-community":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-community"},"set-med":{"description":"set the med metric attribute in the route\nupdate","type":"integer","format":"int64","example":0}},"xml":{"name":"bgp-actions","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-as-path-prepend":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-as-path-prepend","type":"object","description":"action to prepend local AS number to the AS-path a\nspecified number of times","properties":{"repeat-n":{"description":"number of times to prepend the local AS\nnumber","type":"integer","format":"int32","example":0}},"xml":{"name":"set-as-path-prepend","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-community":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-community","type":"object","description":"action to set the community attributes of the route, along\nwith options to modify how the community is modified","properties":{"options":{"description":"Options for modifying the community attribute with\nthe specified values.  These options apply to both\nmethods of setting the community attribute.","type":"string","enum":["ADD","REMOVE","REPLACE"],"example":"ADD"},"communities":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-community_communities"},"description":"Set the community values for the update inline with\na list."}},"xml":{"name":"set-community","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-community_communities":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-community_communities","type":"object","description":"Set the community values for the update inline with\na list.","properties":{"as-number":{"description":"","type":"integer","format":"int64","example":0},"semantics":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"communities","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community","type":"object","description":"Action to set the extended community attributes of the\nroute, along with options to modify how the community is\nmodified","properties":{"options":{"description":"options for modifying the extended community\nattribute with the specified values. These options\napply to both methods of setting the community\nattribute.","type":"string","enum":["ADD","REMOVE","REPLACE"],"example":"ADD"},"ext-community-member":{"type":"array","items":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community_ext-community-member"},"description":"Set the community values for the update inline with\na list."}},"xml":{"name":"set-ext-community","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community_ext-community-member":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community_ext-community-member","type":"object","description":"Set the community values for the update inline with\na list.","properties":{"as-specific-extended-community":{"$ref":"#/components/schemas/openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community_ext-community-member_as-specific-extended-community"},"transitive":{"description":"","type":"boolean","example":true}},"xml":{"name":"ext-community-member","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community_ext-community-member_as-specific-extended-community":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-ext-community_ext-community-member_as-specific-extended-community","type":"object","properties":{"global-administrator":{"description":"","type":"integer","format":"int64","example":0},"local-administrator":{"description":"","type":"string","format":"byte"}},"xml":{"name":"as-specific-extended-community","namespace":"http://openconfig.net/yang/bgp-policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-originator-id-prepend":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-originator-id-prepend","type":"object","description":"action to prepend Originator Id if non Originator Id is present. If no Originator Idis defined, local Originator Id is used.","properties":{"originator-id":{"description":"Originator Id","type":"string","example":"","minLength":0,"maxLength":2147483647}},"xml":{"name":"set-originator-id-prepend","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_non-transitive-attributes-filter":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_non-transitive-attributes-filter","type":"object","properties":{},"xml":{"name":"non-transitive-attributes-filter","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_reflect-attributes-actions":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_reflect-attributes-actions","type":"object","properties":{},"xml":{"name":"reflect-attributes-actions","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_local-as-path-prepend":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_local-as-path-prepend","type":"object","properties":{},"xml":{"name":"local-as-path-prepend","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-cluster-id-prepend":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_set-cluster-id-prepend","type":"object","description":"action to prepend local Cluster Id to the Cluster Id List","properties":{},"xml":{"name":"set-cluster-id-prepend","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"}},"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_client-attribute-prepend":{"title":"openconfig-routing-policy_routing-policy_policy-definitions_policy-definition_statements_statement_actions_bgp-actions_client-attribute-prepend","type":"object","description":"action to use attribute from advertized from a client(rfc4684)","properties":{},"xml":{"name":"client-attribute-prepend","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain"}},"opendaylight-action-types_action-types":{"title":"opendaylight-action-types_action-types","type":"object","properties":{"action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-action-types_action-types_action"},"description":""}},"xml":{"name":"action-types","namespace":"urn:opendaylight:action:types"}},"opendaylight-action-types_action-types_action":{"title":"opendaylight-action-types_action-types_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/opendaylight-action-types_action-types_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:action:types"}},"opendaylight-action-types_action-types_action_output-action":{"title":"opendaylight-action-types_action-types_action_output-action","type":"object","properties":{"output-node-connector":{"description":"","type":"string","example":"Some output-node-connector"},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:action:types"}},"opendaylight-direct-statistics_get-flow-statistics_input":{"title":"opendaylight-direct-statistics_get-flow-statistics_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"store-stats":{"description":"","type":"boolean","default":false,"example":true},"match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match"},"instructions":{"$ref":"#/components/schemas/opendaylight-direct-statistics_instructions"},"container-name":{"description":"","type":"string","example":"Some container-name"},"cookie_mask":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"out_port":{"description":"","type":"integer","example":0},"out_group":{"description":"","type":"integer","format":"int64","example":0},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"strict":{"description":"","type":"boolean","default":false,"example":true},"priority":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"cookie":{"description":"","type":"integer","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match":{"title":"opendaylight-direct-statistics_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_ethernet-match"},"packet-type-match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_packet-type-match":{"title":"opendaylight-direct-statistics_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_metadata":{"title":"opendaylight-direct-statistics_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_tunnel":{"title":"opendaylight-direct-statistics_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_ethernet-match":{"title":"opendaylight-direct-statistics_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_ethernet-match_ethernet-source":{"title":"opendaylight-direct-statistics_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_ethernet-match_ethernet-destination":{"title":"opendaylight-direct-statistics_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_ethernet-match_ethernet-type":{"title":"opendaylight-direct-statistics_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_vlan-match":{"title":"opendaylight-direct-statistics_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_vlan-match_vlan-id":{"title":"opendaylight-direct-statistics_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_ip-match":{"title":"opendaylight-direct-statistics_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_icmpv4-match":{"title":"opendaylight-direct-statistics_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_icmpv6-match":{"title":"opendaylight-direct-statistics_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_protocol-match-fields":{"title":"opendaylight-direct-statistics_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/opendaylight-direct-statistics_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_protocol-match-fields_pbb":{"title":"opendaylight-direct-statistics_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_match_tcp-flags-match":{"title":"opendaylight-direct-statistics_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_instructions":{"title":"opendaylight-direct-statistics_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-direct-statistics_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_instructions_instruction":{"title":"opendaylight-direct-statistics_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/opendaylight-direct-statistics_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_instructions_instruction_go-to-table":{"title":"opendaylight-direct-statistics_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_get-flow-statistics_output":{"title":"opendaylight-direct-statistics_get-flow-statistics_output","type":"object","properties":{"flow-and-statistics-map-list":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_instructions"},"flow-id":{"description":"","type":"string","example":"Some flow-id"},"cookie":{"description":"","type":"integer","example":0},"match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match"},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"container-name":{"description":"","type":"string","example":"Some container-name"},"out_group":{"description":"","type":"integer","format":"int64","example":0},"priority":{"description":"","type":"integer","format":"int32","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0},"byte-count":{"description":"","type":"integer","example":0},"cookie_mask":{"description":"","type":"integer","example":0},"out_port":{"description":"","type":"integer","example":0},"duration":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_duration"},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"packet-count":{"description":"","type":"integer","example":0},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"strict":{"description":"","type":"boolean","default":false,"example":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"}},"xml":{"name":"flow-and-statistics-map-list","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_duration":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_ethernet-match"},"openflowplugin-extension-general:extension-list":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list"},"description":""},"packet-type-match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_packet-type-match":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_metadata":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_tunnel":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_ethernet-match":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-source":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-destination":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-type":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_vlan-match":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_vlan-match_vlan-id":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_ip-match":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_icmpv4-match":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_icmpv6-match":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_protocol-match-fields":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_protocol-match-fields_pbb":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_tcp-flags-match":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list","type":"object","properties":{"extension":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension"},"extension-key":{"description":"","type":"string","enum":["extension-key","nxm-nx-tun-ipv4-dst-key","nxm-of-eth-dst-key","nxm-of-tcp-dst-key","nxm-of-icmp-type-key","nxm-of-eth-type-key","nxm-nx-ct-mark-key","nxm-nx-nshc-3-key","nxm-nx-ct-tp-src-key","nxm-nx-reg0-key","nxm-nx-pkt-mark-key","nxm-nx-reg4-key","nxm-nx-reg7-key","nxm-nx-nshc-2-key","nxm-of-ip-dst-key","nxm-nx-reg3-key","nx-action-reg-move-key","nxm-of-arp-op-key","nxm-nx-tun-ipv4-src-key","nxm-of-udp-src-key","nxm-nx-arp-tha-key","nxm-nx-nsh-mdtype-key","nxm-nx-nsi-key","nxm-of-in-port-key","nxm-nx-nsp-key","nx-action-reg-load-key","nxm-nx-reg5-key","nxm-nx-nshc-1-key","nxm-nx-arp-sha-key","nxm-nx-nsh-ttl-key","nxm-of-tcp-src-key","nxm-nx-nsh-np-key","nxm-of-ip-src-key","nxm-nx-nsh-flags-key","nxm-nx-ct-state-key","nxm-nx-reg1-key","nxm-nx-ct-zone-key","nxm-nx-reg6-key","nxm-of-arp-tpa-key","nxm-nx-reg2-key","nxm-nx-nshc-4-key","nxm-nx-ct-tp-dst-key","nxm-nx-tun-id-key","nxm-of-arp-spa-key","nxm-of-udp-dst-key","nxm-of-eth-src-key"],"example":"extension-key"}},"xml":{"name":"extension-list","namespace":"urn:opendaylight:openflowplugin:extension:general"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension","type":"object","description":"A vendor has to augment this container.","properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-dst":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-tun-ipv4-dst"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-flags":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsh-flags"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-np":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsh-np"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-ttl":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsh-ttl"},"openflowplugin-extension-nicira-match:nxm-nx-tun-id":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-tun-id"},"openflowplugin-extension-nicira-match:nxm-nx-nsi":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsi"},"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-src":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-tp-src"},"openflowplugin-extension-nicira-match:nxm-of-tcp-dst":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-tcp-dst"},"openflowplugin-extension-nicira-match:nxm-of-ip-dst":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-ip-dst"},"openflowplugin-extension-nicira-match:nxm-of-udp-src":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-udp-src"},"openflowplugin-extension-nicira-match:nxm-of-eth-dst":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-eth-dst"},"openflowplugin-extension-nicira-match:nxm-nx-nsp":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsp"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-mdtype":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsh-mdtype"},"openflowplugin-extension-nicira-match:nxm-nx-ct-state":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-state"},"openflowplugin-extension-nicira-match:nxm-nx-reg":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-reg"},"openflowplugin-extension-nicira-match:nxm-nx-ct-zone":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-zone"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-2":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nshc-2"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-3":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nshc-3"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-1":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nshc-1"},"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-src":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-tun-ipv4-src"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-4":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nshc-4"},"openflowplugin-extension-nicira-match:nxm-nx-pkt-mark":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-pkt-mark"},"openflowplugin-extension-nicira-match:nxm-of-arp-op":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-arp-op"},"openflowplugin-extension-nicira-match:nxm-nx-arp-tha":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-arp-tha"},"openflowplugin-extension-nicira-match:nxm-nx-arp-sha":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-arp-sha"},"openflowplugin-extension-nicira-match:nxm-of-tcp-src":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-tcp-src"},"openflowplugin-extension-nicira-match:nxm-of-arp-tpa":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-arp-tpa"},"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-dst":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-tp-dst"},"openflowplugin-extension-nicira-match:nxm-of-arp-spa":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-arp-spa"},"openflowplugin-extension-nicira-match:nxm-of-ip-src":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-ip-src"},"openflowplugin-extension-nicira-match:of-in-port":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_of-in-port"},"openflowplugin-extension-nicira-match:nxm-of-udp-dst":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-udp-dst"},"openflowplugin-extension-nicira-match:nxm-of-eth-src":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-eth-src"},"openflowplugin-extension-nicira-match:nxm-of-eth-type":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-eth-type"},"openflowplugin-extension-nicira-match:nxm-of-icmp-type":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-icmp-type"},"openflowplugin-extension-nicira-match:nxm-nx-ct-mark":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-mark"}},"xml":{"name":"extension","namespace":"urn:opendaylight:openflowplugin:extension:general"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-reg":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-reg","type":"object","properties":{"reg":{"description":"","type":"string","enum":["nxm-nx-reg","nxm-nx-reg1","nxm-nx-reg4","nxm-nx-reg6","nxm-nx-reg7","nxm-nx-reg5","nxm-nx-reg2","nxm-nx-reg3","nxm-nx-reg0"],"example":"nxm-nx-reg"},"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-reg","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-tun-id":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-tun-id","type":"object","properties":{"value":{"description":"","type":"integer","example":0}},"xml":{"name":"nxm-nx-tun-id","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-arp-sha":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-arp-sha","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-arp-sha","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-arp-tha":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-arp-tha","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-arp-tha","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-arp-op":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-arp-op","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-arp-op","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-arp-spa":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-arp-spa","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-arp-spa","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_of-in-port":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_of-in-port","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"of-in-port","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-tcp-src":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-tcp-src","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-tcp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-tcp-dst":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-tcp-dst","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-tcp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-udp-src":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-udp-src","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-udp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-udp-dst":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-udp-dst","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-udp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-arp-tpa":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-arp-tpa","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-arp-tpa","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-tun-ipv4-dst":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-tun-ipv4-dst","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-tun-ipv4-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-tun-ipv4-src":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-tun-ipv4-src","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-tun-ipv4-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-eth-src":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-eth-src","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-eth-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-eth-dst":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-eth-dst","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-eth-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-eth-type":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-eth-type","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-eth-type","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsp":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsp","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nsp","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsi":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsi","type":"object","properties":{"nsi":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsi","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nshc-1":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nshc-1","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-1","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nshc-2":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nshc-2","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-2","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nshc-3":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nshc-3","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-3","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nshc-4":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nshc-4","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-4","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-state":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-state","type":"object","properties":{"ct-state":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-ct-state","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-zone":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-zone","type":"object","properties":{"ct-zone":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-zone","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-ip-dst":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-ip-dst","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-ip-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-ip-src":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-ip-src","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-ip-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-icmp-type":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-of-icmp-type","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-icmp-type","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsh-flags":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsh-flags","type":"object","properties":{"nsh-flags":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-flags","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsh-mdtype":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsh-mdtype","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-mdtype","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsh-np":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsh-np","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-np","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsh-ttl":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-nsh-ttl","type":"object","properties":{"nsh-ttl":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-ttl","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-mark":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-mark","type":"object","properties":{"ct-mark":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-ct-mark","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-tp-src":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-tp-src","type":"object","properties":{"ct-tp-src":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-tp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-tp-dst":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-ct-tp-dst","type":"object","properties":{"ct-tp-dst":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-tp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-pkt-mark":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_match_extension-list_extension_nxm-nx-pkt-mark","type":"object","properties":{"pkt-mark":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-pkt-mark","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_instructions":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_instructions_instruction":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/opendaylight-direct-statistics_flow-and-statistics-map-list_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_flow-and-statistics-map-list_instructions_instruction_go-to-table":{"title":"opendaylight-direct-statistics_flow-and-statistics-map-list_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_get-group-statistics_input":{"title":"opendaylight-direct-statistics_get-group-statistics_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"store-stats":{"description":"","type":"boolean","default":false,"example":true},"group-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_get-group-statistics_output":{"title":"opendaylight-direct-statistics_get-group-statistics_output","type":"object","properties":{"group-stats":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-direct-statistics_group-stats"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_group-stats":{"title":"opendaylight-direct-statistics_group-stats","type":"object","properties":{"duration":{"$ref":"#/components/schemas/opendaylight-direct-statistics_group-stats_duration"},"group-id":{"description":"","type":"integer","format":"int64","example":0},"packet-count":{"description":"","type":"integer","example":0},"buckets":{"$ref":"#/components/schemas/opendaylight-direct-statistics_group-stats_buckets"},"ref-count":{"description":"","type":"integer","format":"int64","example":0},"byte-count":{"description":"","type":"integer","example":0}},"xml":{"name":"group-stats","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_group-stats_duration":{"title":"opendaylight-direct-statistics_group-stats_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_group-stats_buckets":{"title":"opendaylight-direct-statistics_group-stats_buckets","type":"object","properties":{"bucket-counter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-direct-statistics_group-stats_buckets_bucket-counter"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_group-stats_buckets_bucket-counter":{"title":"opendaylight-direct-statistics_group-stats_buckets_bucket-counter","type":"object","properties":{"packet-count":{"description":"","type":"integer","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0},"byte-count":{"description":"","type":"integer","example":0}},"xml":{"name":"bucket-counter","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_get-meter-statistics_input":{"title":"opendaylight-direct-statistics_get-meter-statistics_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"store-stats":{"description":"","type":"boolean","default":false,"example":true},"meter-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_get-meter-statistics_output":{"title":"opendaylight-direct-statistics_get-meter-statistics_output","type":"object","properties":{"meter-stats":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-direct-statistics_meter-stats"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_meter-stats":{"title":"opendaylight-direct-statistics_meter-stats","type":"object","properties":{"byte-in-count":{"description":"","type":"integer","example":0},"duration":{"$ref":"#/components/schemas/opendaylight-direct-statistics_meter-stats_duration"},"meter-id":{"description":"","type":"integer","format":"int64","example":0},"meter-band-stats":{"$ref":"#/components/schemas/opendaylight-direct-statistics_meter-stats_meter-band-stats"},"flow-count":{"description":"","type":"integer","format":"int64","example":0},"packet-in-count":{"description":"","type":"integer","example":0}},"xml":{"name":"meter-stats","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_meter-stats_duration":{"title":"opendaylight-direct-statistics_meter-stats_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_meter-stats_meter-band-stats":{"title":"opendaylight-direct-statistics_meter-stats_meter-band-stats","type":"object","properties":{"band-stat":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-direct-statistics_meter-stats_meter-band-stats_band-stat"},"description":""}},"xml":{"name":"meter-band-stats","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_meter-stats_meter-band-stats_band-stat":{"title":"opendaylight-direct-statistics_meter-stats_meter-band-stats_band-stat","type":"object","properties":{"byte-band-count":{"description":"","type":"integer","example":0},"band-id":{"description":"","type":"integer","format":"int64","example":0},"packet-band-count":{"description":"","type":"integer","example":0}},"xml":{"name":"band-stat","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_get-node-connector-statistics_input":{"title":"opendaylight-direct-statistics_get-node-connector-statistics_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"store-stats":{"description":"","type":"boolean","default":false,"example":true},"node-connector-id":{"description":"Optional, if omitted, returns statistics for all ports","type":"string","example":"Some node-connector-id"}},"xml":{"name":"input","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_get-node-connector-statistics_output":{"title":"opendaylight-direct-statistics_get-node-connector-statistics_output","type":"object","properties":{"node-connector-statistics-and-port-number-map":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-direct-statistics_node-connector-statistics-and-port-number-map"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_node-connector-statistics-and-port-number-map":{"title":"opendaylight-direct-statistics_node-connector-statistics-and-port-number-map","type":"object","properties":{"duration":{"$ref":"#/components/schemas/opendaylight-direct-statistics_node-connector-statistics-and-port-number-map_duration"},"receive-crc-error":{"description":"","type":"integer","example":0},"receive-errors":{"description":"","type":"integer","example":0},"node-connector-id":{"description":"","type":"string","example":"Some node-connector-id"},"bytes":{"$ref":"#/components/schemas/opendaylight-direct-statistics_node-connector-statistics-and-port-number-map_bytes"},"receive-drops":{"description":"","type":"integer","example":0},"receive-frame-error":{"description":"","type":"integer","example":0},"transmit-drops":{"description":"","type":"integer","example":0},"transmit-errors":{"description":"","type":"integer","example":0},"receive-over-run-error":{"description":"","type":"integer","example":0},"packets":{"$ref":"#/components/schemas/opendaylight-direct-statistics_node-connector-statistics-and-port-number-map_packets"},"collision-count":{"description":"","type":"integer","example":0}},"xml":{"name":"node-connector-statistics-and-port-number-map","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_node-connector-statistics-and-port-number-map_packets":{"title":"opendaylight-direct-statistics_node-connector-statistics-and-port-number-map_packets","type":"object","properties":{"received":{"description":"","type":"integer","example":0},"transmitted":{"description":"","type":"integer","example":0}},"xml":{"name":"packets","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_node-connector-statistics-and-port-number-map_bytes":{"title":"opendaylight-direct-statistics_node-connector-statistics-and-port-number-map_bytes","type":"object","properties":{"received":{"description":"","type":"integer","example":0},"transmitted":{"description":"","type":"integer","example":0}},"xml":{"name":"bytes","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_node-connector-statistics-and-port-number-map_duration":{"title":"opendaylight-direct-statistics_node-connector-statistics-and-port-number-map_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_get-queue-statistics_input":{"title":"opendaylight-direct-statistics_get-queue-statistics_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"store-stats":{"description":"","type":"boolean","default":false,"example":true},"node-connector-id":{"description":"","type":"string","example":"Some node-connector-id"},"queue-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_get-queue-statistics_output":{"title":"opendaylight-direct-statistics_get-queue-statistics_output","type":"object","properties":{"queue-id-and-statistics-map":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-direct-statistics_queue-id-and-statistics-map"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_queue-id-and-statistics-map":{"title":"opendaylight-direct-statistics_queue-id-and-statistics-map","type":"object","properties":{"transmitted-bytes":{"description":"","type":"integer","example":0},"transmitted-packets":{"description":"","type":"integer","example":0},"duration":{"$ref":"#/components/schemas/opendaylight-direct-statistics_queue-id-and-statistics-map_duration"},"queue-id":{"description":"","type":"integer","format":"int64","example":0},"transmission-errors":{"description":"","type":"integer","example":0},"node-connector-id":{"description":"","type":"string","example":"Some node-connector-id"}},"xml":{"name":"queue-id-and-statistics-map","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-direct-statistics_queue-id-and-statistics-map_duration":{"title":"opendaylight-direct-statistics_queue-id-and-statistics-map_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:direct:statistics"}},"opendaylight-flow-statistics_get-all-flows-statistics-from-all-flow-tables_input":{"title":"opendaylight-flow-statistics_get-all-flows-statistics-from-all-flow-tables_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_get-all-flows-statistics-from-all-flow-tables_output":{"title":"opendaylight-flow-statistics_get-all-flows-statistics-from-all-flow-tables_output","type":"object","properties":{"flow-and-statistics-map-list":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_instructions"},"flow-id":{"description":"","type":"string","example":"Some flow-id"},"cookie":{"description":"","type":"integer","example":0},"match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match"},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"container-name":{"description":"","type":"string","example":"Some container-name"},"out_group":{"description":"","type":"integer","format":"int64","example":0},"priority":{"description":"","type":"integer","format":"int32","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0},"byte-count":{"description":"","type":"integer","example":0},"cookie_mask":{"description":"","type":"integer","example":0},"out_port":{"description":"","type":"integer","example":0},"duration":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_duration"},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"packet-count":{"description":"","type":"integer","example":0},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"strict":{"description":"","type":"boolean","default":false,"example":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"}},"xml":{"name":"flow-and-statistics-map-list","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_duration":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_ethernet-match"},"packet-type-match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_packet-type-match":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_metadata":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_tunnel":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_ethernet-match":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-source":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-destination":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-type":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_vlan-match":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_vlan-match_vlan-id":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_ip-match":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_icmpv4-match":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_icmpv6-match":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_protocol-match-fields":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_protocol-match-fields_pbb":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_match_tcp-flags-match":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_instructions":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_instructions_instruction":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_flow-and-statistics-map-list_instructions_instruction_go-to-table":{"title":"opendaylight-flow-statistics_flow-and-statistics-map-list_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_get-all-flow-statistics-from-flow-table_input":{"title":"opendaylight-flow-statistics_get-all-flow-statistics-from-flow-table_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"table-id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_get-all-flow-statistics-from-flow-table_output":{"title":"opendaylight-flow-statistics_get-all-flow-statistics-from-flow-table_output","type":"object","properties":{"flow-and-statistics-map-list":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_get-flow-statistics-from-flow-table_input":{"title":"opendaylight-flow-statistics_get-flow-statistics-from-flow-table_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match"},"instructions":{"$ref":"#/components/schemas/opendaylight-flow-statistics_instructions"},"container-name":{"description":"","type":"string","example":"Some container-name"},"cookie_mask":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"out_port":{"description":"","type":"integer","example":0},"out_group":{"description":"","type":"integer","format":"int64","example":0},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"strict":{"description":"","type":"boolean","default":false,"example":true},"priority":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"cookie":{"description":"","type":"integer","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match":{"title":"opendaylight-flow-statistics_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_ethernet-match"},"packet-type-match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_packet-type-match":{"title":"opendaylight-flow-statistics_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_metadata":{"title":"opendaylight-flow-statistics_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_tunnel":{"title":"opendaylight-flow-statistics_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_ethernet-match":{"title":"opendaylight-flow-statistics_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_ethernet-match_ethernet-source":{"title":"opendaylight-flow-statistics_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_ethernet-match_ethernet-destination":{"title":"opendaylight-flow-statistics_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_ethernet-match_ethernet-type":{"title":"opendaylight-flow-statistics_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_vlan-match":{"title":"opendaylight-flow-statistics_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_vlan-match_vlan-id":{"title":"opendaylight-flow-statistics_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_ip-match":{"title":"opendaylight-flow-statistics_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_icmpv4-match":{"title":"opendaylight-flow-statistics_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_icmpv6-match":{"title":"opendaylight-flow-statistics_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_protocol-match-fields":{"title":"opendaylight-flow-statistics_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_protocol-match-fields_pbb":{"title":"opendaylight-flow-statistics_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_match_tcp-flags-match":{"title":"opendaylight-flow-statistics_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_instructions":{"title":"opendaylight-flow-statistics_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-flow-statistics_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_instructions_instruction":{"title":"opendaylight-flow-statistics_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/opendaylight-flow-statistics_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_instructions_instruction_go-to-table":{"title":"opendaylight-flow-statistics_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_get-flow-statistics-from-flow-table_output":{"title":"opendaylight-flow-statistics_get-flow-statistics-from-flow-table_output","type":"object","properties":{"flow-and-statistics-map-list":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-flow-statistics_flow-and-statistics-map-list"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-all-flows_input":{"title":"opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-all-flows_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"table-id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-all-flows_output":{"title":"opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-all-flows_output","type":"object","properties":{"packet-count":{"description":"","type":"integer","example":0},"byte-count":{"description":"","type":"integer","example":0},"flow-count":{"description":"","type":"integer","format":"int64","example":0},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-given-match_input":{"title":"opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-given-match_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"match":{"$ref":"#/components/schemas/opendaylight-flow-statistics_match"},"instructions":{"$ref":"#/components/schemas/opendaylight-flow-statistics_instructions1"},"container-name":{"description":"","type":"string","example":"Some container-name"},"cookie_mask":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"out_port":{"description":"","type":"integer","example":0},"out_group":{"description":"","type":"integer","format":"int64","example":0},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"strict":{"description":"","type":"boolean","default":false,"example":true},"priority":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"cookie":{"description":"","type":"integer","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_instructions1":{"title":"opendaylight-flow-statistics_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-flow-statistics_instructions_instruction1"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_instructions_instruction1":{"title":"opendaylight-flow-statistics_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/opendaylight-flow-statistics_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-given-match_output":{"title":"opendaylight-flow-statistics_get-aggregate-flow-statistics-from-flow-table-for-given-match_output","type":"object","properties":{"aggregated-flow-statistics":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-flow-statistics_aggregated-flow-statistics"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-statistics_aggregated-flow-statistics":{"title":"opendaylight-flow-statistics_aggregated-flow-statistics","type":"object","properties":{"packet-count":{"description":"","type":"integer","example":0},"flow-count":{"description":"","type":"integer","format":"int64","example":0},"byte-count":{"description":"","type":"integer","example":0}},"xml":{"name":"aggregated-flow-statistics","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-flow-table-statistics_get-flow-tables-statistics_input":{"title":"opendaylight-flow-table-statistics_get-flow-tables-statistics_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:flow:table:statistics"}},"opendaylight-flow-table-statistics_get-flow-tables-statistics_output":{"title":"opendaylight-flow-table-statistics_get-flow-tables-statistics_output","type":"object","properties":{"flow-table-and-statistics-map":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-flow-table-statistics_flow-table-and-statistics-map"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:flow:table:statistics"}},"opendaylight-flow-table-statistics_flow-table-and-statistics-map":{"title":"opendaylight-flow-table-statistics_flow-table-and-statistics-map","type":"object","properties":{"packets-matched":{"description":"","type":"integer","example":0},"table-id":{"description":"","type":"integer","format":"int32","example":0},"packets-looked-up":{"description":"","type":"integer","example":0},"active-flows":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"flow-table-and-statistics-map","namespace":"urn:opendaylight:flow:table:statistics"}},"opendaylight-flow-types_flow-message":{"title":"opendaylight-flow-types_flow-message","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions"},"cookie":{"description":"","type":"integer","example":0},"match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match"},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"container-name":{"description":"","type":"string","example":"Some container-name"},"out_group":{"description":"","type":"integer","format":"int64","example":0},"priority":{"description":"","type":"integer","format":"int32","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"command":{"description":"","type":"string","enum":["OFPFC_ADD","OFPFC_MODIFY","OFPFC_MODIFY_STRICT","OFPFC_DELETE","OFPFC_DELETE_STRICT"],"example":"OFPFC_ADD"},"cookie_mask":{"description":"","type":"integer","example":0},"out_port":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"installHw":{"description":"","type":"boolean","example":true},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0},"barrier":{"description":"","type":"boolean","example":true},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"strict":{"description":"","type":"boolean","default":false,"example":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"}},"xml":{"name":"flow-message","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match":{"title":"opendaylight-flow-types_flow-message_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match"},"packet-type-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_packet-type-match":{"title":"opendaylight-flow-types_flow-message_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_metadata":{"title":"opendaylight-flow-types_flow-message_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_tunnel":{"title":"opendaylight-flow-types_flow-message_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_ethernet-match":{"title":"opendaylight-flow-types_flow-message_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-source":{"title":"opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-destination":{"title":"opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-type":{"title":"opendaylight-flow-types_flow-message_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_vlan-match":{"title":"opendaylight-flow-types_flow-message_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_vlan-match_vlan-id":{"title":"opendaylight-flow-types_flow-message_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_ip-match":{"title":"opendaylight-flow-types_flow-message_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_icmpv4-match":{"title":"opendaylight-flow-types_flow-message_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_icmpv6-match":{"title":"opendaylight-flow-types_flow-message_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_protocol-match-fields":{"title":"opendaylight-flow-types_flow-message_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_protocol-match-fields_pbb":{"title":"opendaylight-flow-types_flow-message_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_match_tcp-flags-match":{"title":"opendaylight-flow-types_flow-message_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_instructions":{"title":"opendaylight-flow-types_flow-message_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_instructions_instruction":{"title":"opendaylight-flow-types_flow-message_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/opendaylight-flow-types_flow-message_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flow:types"}},"opendaylight-flow-types_flow-message_instructions_instruction_go-to-table":{"title":"opendaylight-flow-types_flow-message_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:flow:types"}},"opendaylight-group-statistics_get-all-group-statistics_input":{"title":"opendaylight-group-statistics_get-all-group-statistics_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_get-all-group-statistics_output":{"title":"opendaylight-group-statistics_get-all-group-statistics_output","type":"object","properties":{"group-stats":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-statistics_group-stats"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_group-stats":{"title":"opendaylight-group-statistics_group-stats","type":"object","properties":{"duration":{"$ref":"#/components/schemas/opendaylight-group-statistics_group-stats_duration"},"group-id":{"description":"","type":"integer","format":"int64","example":0},"packet-count":{"description":"","type":"integer","example":0},"buckets":{"$ref":"#/components/schemas/opendaylight-group-statistics_group-stats_buckets"},"ref-count":{"description":"","type":"integer","format":"int64","example":0},"byte-count":{"description":"","type":"integer","example":0}},"xml":{"name":"group-stats","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_group-stats_duration":{"title":"opendaylight-group-statistics_group-stats_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_group-stats_buckets":{"title":"opendaylight-group-statistics_group-stats_buckets","type":"object","properties":{"bucket-counter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-statistics_group-stats_buckets_bucket-counter"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_group-stats_buckets_bucket-counter":{"title":"opendaylight-group-statistics_group-stats_buckets_bucket-counter","type":"object","properties":{"packet-count":{"description":"","type":"integer","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0},"byte-count":{"description":"","type":"integer","example":0}},"xml":{"name":"bucket-counter","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_get-group-statistics_input":{"title":"opendaylight-group-statistics_get-group-statistics_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"group-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_get-group-statistics_output":{"title":"opendaylight-group-statistics_get-group-statistics_output","type":"object","properties":{"group-stats":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-statistics_group-stats1"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_group-stats1":{"title":"opendaylight-group-statistics_group-stats","type":"object","properties":{"duration":{"$ref":"#/components/schemas/opendaylight-group-statistics_group-stats_duration"},"group-id":{"description":"","type":"integer","format":"int64","example":0},"packet-count":{"description":"","type":"integer","example":0},"buckets":{"$ref":"#/components/schemas/opendaylight-group-statistics_group-stats_buckets1"},"ref-count":{"description":"","type":"integer","format":"int64","example":0},"byte-count":{"description":"","type":"integer","example":0}},"xml":{"name":"group-stats","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_group-stats_buckets1":{"title":"opendaylight-group-statistics_group-stats_buckets","type":"object","properties":{"bucket-counter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-statistics_group-stats_buckets_bucket-counter1"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_group-stats_buckets_bucket-counter1":{"title":"opendaylight-group-statistics_group-stats_buckets_bucket-counter","type":"object","properties":{"packet-count":{"description":"","type":"integer","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0},"byte-count":{"description":"","type":"integer","example":0}},"xml":{"name":"bucket-counter","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_get-group-description_input":{"title":"opendaylight-group-statistics_get-group-description_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_get-group-description_output":{"title":"opendaylight-group-statistics_get-group-description_output","type":"object","properties":{"group-desc-stats":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-statistics_group-desc-stats"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_group-desc-stats":{"title":"opendaylight-group-statistics_group-desc-stats","type":"object","properties":{"barrier":{"description":"","type":"boolean","example":true},"group-id":{"description":"","type":"integer","format":"int64","example":0},"group-name":{"description":"","type":"string","example":"Some group-name"},"buckets":{"$ref":"#/components/schemas/opendaylight-group-statistics_group-desc-stats_buckets"},"group-type":{"description":"","type":"string","enum":["group-all","group-select","group-indirect","group-ff"],"example":"group-all"},"container-name":{"description":"","type":"string","example":"Some container-name"}},"xml":{"name":"group-desc-stats","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_group-desc-stats_buckets":{"title":"opendaylight-group-statistics_group-desc-stats_buckets","type":"object","properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-statistics_group-desc-stats_buckets_bucket"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_group-desc-stats_buckets_bucket":{"title":"opendaylight-group-statistics_group-desc-stats_buckets_bucket","type":"object","properties":{"watch_group":{"description":"","type":"integer","format":"int64","example":0},"weight":{"description":"","type":"integer","format":"int32","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-statistics_group-desc-stats_buckets_bucket_action"},"description":""},"watch_port":{"description":"","type":"integer","format":"int64","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"bucket","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_group-desc-stats_buckets_bucket_action":{"title":"opendaylight-group-statistics_group-desc-stats_buckets_bucket_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/opendaylight-group-statistics_group-desc-stats_buckets_bucket_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_group-desc-stats_buckets_bucket_action_output-action":{"title":"opendaylight-group-statistics_group-desc-stats_buckets_bucket_action_output-action","type":"object","properties":{"output-node-connector":{"description":"","type":"string","example":"Some output-node-connector"},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_get-group-features_input":{"title":"opendaylight-group-statistics_get-group-features_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-statistics_get-group-features_output":{"title":"opendaylight-group-statistics_get-group-features_output","type":"object","properties":{"group-types-supported":{"type":"array","items":{"type":"string","enum":["group-type","group-ff","group-indirect","group-select","group-all"],"example":"group-type"},"description":""},"group-capabilities-supported":{"type":"array","items":{"type":"string","enum":["group-capability","select-weight","chaining-checks","select-liveness","chaining"],"example":"group-capability"},"description":""},"max-groups":{"type":"array","maxItems":4,"items":{"type":"integer","format":"int64","example":0},"description":"Maximum number of groups for each type"},"actions":{"type":"array","maxItems":4,"items":{"type":"integer","format":"int64","example":0},"description":"Bitmap number OFPAT_* that are supported"},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-group-types_group-message":{"title":"opendaylight-group-types_group-message","type":"object","properties":{"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0},"barrier":{"description":"","type":"boolean","example":true},"group-id":{"description":"","type":"integer","format":"int64","example":0},"group-name":{"description":"","type":"string","example":"Some group-name"},"buckets":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets"},"group-type":{"description":"","type":"string","enum":["group-all","group-select","group-indirect","group-ff"],"example":"group-all"},"container-name":{"description":"","type":"string","example":"Some container-name"},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"command":{"description":"","type":"string","enum":["OFPGC_ADD","OFPGC_MODIFY","OFPGC_DELETE"],"example":"OFPGC_ADD"}},"xml":{"name":"group-message","namespace":"urn:opendaylight:group:types"}},"opendaylight-group-types_group-message_buckets":{"title":"opendaylight-group-types_group-message_buckets","type":"object","properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:group:types"}},"opendaylight-group-types_group-message_buckets_bucket":{"title":"opendaylight-group-types_group-message_buckets_bucket","type":"object","properties":{"watch_group":{"description":"","type":"integer","format":"int64","example":0},"weight":{"description":"","type":"integer","format":"int32","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket_action"},"description":""},"watch_port":{"description":"","type":"integer","format":"int64","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"bucket","namespace":"urn:opendaylight:group:types"}},"opendaylight-group-types_group-message_buckets_bucket_action":{"title":"opendaylight-group-types_group-message_buckets_bucket_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/opendaylight-group-types_group-message_buckets_bucket_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:group:types"}},"opendaylight-group-types_group-message_buckets_bucket_action_output-action":{"title":"opendaylight-group-types_group-message_buckets_bucket_action_output-action","type":"object","properties":{"output-node-connector":{"description":"","type":"string","example":"Some output-node-connector"},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:group:types"}},"opendaylight-inventory_nodes":{"title":"opendaylight-inventory_nodes","type":"object","description":"The root container of all nodes.","properties":{"node":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node"},"description":"A list of nodes (as defined by the 'grouping node')."}},"xml":{"name":"nodes","namespace":"urn:opendaylight:inventory"}},"opendaylight-inventory_nodes_node":{"title":"opendaylight-inventory_nodes_node","type":"object","description":"A list of nodes (as defined by the 'grouping node').","properties":{"opendaylight-meter-statistics:meter-features":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter-features"},"flow-node-inventory:software":{"description":"","type":"string","example":"Some software","xml":{"name":"software","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:serial-number":{"description":"","type":"string","example":"Some serial-number","xml":{"name":"serial-number","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:supported-match-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types"},"flow-node-inventory:meter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter"},"description":""},"flow-node-inventory:supported-actions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions"},"flow-node-inventory:description":{"description":"","type":"string","example":"Some description","xml":{"name":"description","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:snapshot-gathering-status-end":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_snapshot-gathering-status-end"},"flow-node-inventory:stale-meter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter"},"description":""},"flow-node-inventory:port-number":{"description":"Port number of a flow capable node.","type":"integer","format":"int32","example":0,"xml":{"name":"port-number","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:manufacturer":{"description":"","type":"string","example":"Some manufacturer","xml":{"name":"manufacturer","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:ip-address":{"description":"IP address of a flow capable node.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647,"xml":{"name":"ip-address","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:table-features":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features"},"description":""},"flow-node-inventory:supported-instructions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions"},"flow-node-inventory:snapshot-gathering-status-start":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_snapshot-gathering-status-start"},"flow-node-inventory:switch-features":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_switch-features"},"id":{"description":"The unique identifier for the node.","type":"string","example":"Some id"},"flow-node-inventory:stale-group":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group"},"description":""},"node-connector":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector"},"description":"A list of node connectors that belong this node."},"opendaylight-group-statistics:group-features":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group-features"},"flow-node-inventory:table":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table"},"description":""},"flow-node-inventory:hardware":{"description":"","type":"string","example":"Some hardware","xml":{"name":"hardware","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:group":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group"},"description":""}},"xml":{"name":"node","namespace":"urn:opendaylight:inventory"}},"opendaylight-inventory_nodes_node_node-connector":{"title":"opendaylight-inventory_nodes_node_node-connector","type":"object","description":"A list of node connectors that belong this node.","properties":{"flow-node-inventory:reason":{"description":"","type":"string","enum":["add","delete","update"],"example":"add","xml":{"name":"reason","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:peer-features":{"description":"Features advertised by peer","type":"string","enum":["ten-mb-hd","ten-mb-fd","hundred-mb-hd","hundred-mb-fd","one-gb-hd","one-gb-fd","ten-gb-fd","forty-gb-fd","hundred-gb-fd","one-tb-fd","other","copper","fiber","autoeng","pause","pause-asym"],"minItems":0,"default":"ten-mb-hd pause-asym","uniqueItems":true,"xml":{"name":"peer-features","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:configuration":{"description":"Bit map of OFPPC-* flags","type":"string","enum":["PORT-DOWN","NO-RECV","NO-FWD","NO-PACKET-IN"],"minItems":0,"default":"PORT-DOWN NO-PACKET-IN","uniqueItems":true,"xml":{"name":"configuration","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:maximum-speed":{"description":"Max port bit rate in kbps","type":"integer","format":"int64","example":0,"xml":{"name":"maximum-speed","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:current-feature":{"description":"Bit map of OFPPF-* flags","type":"string","enum":["ten-mb-hd","ten-mb-fd","hundred-mb-hd","hundred-mb-fd","one-gb-hd","one-gb-fd","ten-gb-fd","forty-gb-fd","hundred-gb-fd","one-tb-fd","other","copper","fiber","autoeng","pause","pause-asym"],"minItems":0,"default":"ten-mb-hd pause-asym","uniqueItems":true,"xml":{"name":"current-feature","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:port-number":{"description":"","type":"integer","format":"int64","example":0,"xml":{"name":"port-number","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:advertised-features":{"description":"Features being advertised by the port","type":"string","enum":["ten-mb-hd","ten-mb-fd","hundred-mb-hd","hundred-mb-fd","one-gb-hd","one-gb-fd","ten-gb-fd","forty-gb-fd","hundred-gb-fd","one-tb-fd","other","copper","fiber","autoeng","pause","pause-asym"],"minItems":0,"default":"ten-mb-hd pause-asym","uniqueItems":true,"xml":{"name":"advertised-features","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-port-statistics:flow-capable-node-connector-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics"},"flow-node-inventory:name":{"description":"Human readable name of the port","type":"string","example":"Some name","xml":{"name":"name","namespace":"urn:opendaylight:flow:inventory"}},"id":{"description":"The unique identifier for the node-connector.","type":"string","example":"Some id"},"flow-node-inventory:state":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_state"},"flow-node-inventory:current-speed":{"description":"Current port bit rate in kbps","type":"integer","format":"int64","example":0,"xml":{"name":"current-speed","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:hardware-address":{"description":"MAC Address of the port","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647,"xml":{"name":"hardware-address","namespace":"urn:opendaylight:flow:inventory"}},"flow-node-inventory:queue":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue"},"description":""},"flow-node-inventory:supported":{"description":"Features supported by the port","type":"string","enum":["ten-mb-hd","ten-mb-fd","hundred-mb-hd","hundred-mb-fd","one-gb-hd","one-gb-fd","ten-gb-fd","forty-gb-fd","hundred-gb-fd","one-tb-fd","other","copper","fiber","autoeng","pause","pause-asym"],"minItems":0,"default":"ten-mb-hd pause-asym","uniqueItems":true,"xml":{"name":"supported","namespace":"urn:opendaylight:flow:inventory"}}},"xml":{"name":"node-connector","namespace":"urn:opendaylight:inventory"}},"opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics":{"title":"opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics","type":"object","properties":{"duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_duration"},"receive-crc-error":{"description":"","type":"integer","example":0},"receive-errors":{"description":"","type":"integer","example":0},"bytes":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_bytes"},"receive-drops":{"description":"","type":"integer","example":0},"receive-frame-error":{"description":"","type":"integer","example":0},"transmit-drops":{"description":"","type":"integer","example":0},"transmit-errors":{"description":"","type":"integer","example":0},"receive-over-run-error":{"description":"","type":"integer","example":0},"packets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_packets"},"collision-count":{"description":"","type":"integer","example":0}},"xml":{"name":"flow-capable-node-connector-statistics","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_packets":{"title":"opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_packets","type":"object","properties":{"received":{"description":"","type":"integer","example":0},"transmitted":{"description":"","type":"integer","example":0}},"xml":{"name":"packets","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_bytes":{"title":"opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_bytes","type":"object","properties":{"received":{"description":"","type":"integer","example":0},"transmitted":{"description":"","type":"integer","example":0}},"xml":{"name":"bytes","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_duration":{"title":"opendaylight-inventory_nodes_node_node-connector_flow-capable-node-connector-statistics_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-inventory_nodes_node_node-connector_state":{"title":"opendaylight-inventory_nodes_node_node-connector_state","type":"object","description":"Description of state of port","properties":{"link-down":{"description":"","type":"boolean","example":true},"blocked":{"description":"","type":"boolean","example":true},"live":{"description":"","type":"boolean","example":true}},"xml":{"name":"state","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_node-connector_queue":{"title":"opendaylight-inventory_nodes_node_node-connector_queue","type":"object","properties":{"queue-id":{"description":"id for the specific queue.","type":"integer","format":"int64","example":0},"opendaylight-queue-statistics:flow-capable-node-connector-queue-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics"},"port":{"description":"Port this queue is attached to.","type":"integer","format":"int64","example":0},"property":{"description":"One of OFPQT_. TODO:: use queue-properties type.","type":"integer","format":"int32","example":0}},"xml":{"name":"queue","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics":{"title":"opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics","type":"object","properties":{"transmitted-bytes":{"description":"","type":"integer","example":0},"transmitted-packets":{"description":"","type":"integer","example":0},"duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics_duration"},"transmission-errors":{"description":"","type":"integer","example":0}},"xml":{"name":"flow-capable-node-connector-queue-statistics","namespace":"urn:opendaylight:queue:statistics"}},"opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics_duration":{"title":"opendaylight-inventory_nodes_node_node-connector_queue_flow-capable-node-connector-queue-statistics_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:queue:statistics"}},"opendaylight-inventory_nodes_node_group-features":{"title":"opendaylight-inventory_nodes_node_group-features","type":"object","properties":{"group-types-supported":{"type":"array","items":{"type":"string","enum":["group-type","group-ff","group-indirect","group-select","group-all"],"example":"group-type"},"description":""},"max-groups":{"type":"array","maxItems":4,"items":{"type":"integer","format":"int64","example":0},"description":"Maximum number of groups for each type"},"group-capabilities-supported":{"type":"array","items":{"type":"string","enum":["group-capability","select-weight","chaining-checks","select-liveness","chaining"],"example":"group-capability"},"description":""},"actions":{"type":"array","maxItems":4,"items":{"type":"integer","format":"int64","example":0},"description":"Bitmap number OFPAT_* that are supported"}},"xml":{"name":"group-features","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-inventory_nodes_node_snapshot-gathering-status-start":{"title":"opendaylight-inventory_nodes_node_snapshot-gathering-status-start","type":"object","description":"gathering start mark","properties":{"begin":{"description":"","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647}},"xml":{"name":"snapshot-gathering-status-start","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_snapshot-gathering-status-end":{"title":"opendaylight-inventory_nodes_node_snapshot-gathering-status-end","type":"object","description":"gathering end mark + result","properties":{"end":{"description":"","type":"string","example":"0000-00-00T00:00:00Z","minLength":0,"maxLength":2147483647},"succeeded":{"description":"","type":"boolean","example":true}},"xml":{"name":"snapshot-gathering-status-end","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_meter-features":{"title":"opendaylight-inventory_nodes_node_meter-features","type":"object","properties":{"meter-band-supported":{"type":"array","items":{"type":"string","enum":["meter-band","meter-band-dscp-remark","meter-band-drop","meter-band-experimenter"],"example":"meter-band"},"description":""},"max_meter":{"description":"","type":"integer","format":"int64","example":0},"max_bands":{"description":"","type":"integer","format":"int32","example":0},"meter-capabilities-supported":{"type":"array","items":{"type":"string","enum":["meter-capability","meter-burst","meter-pktps","meter-stats","meter-kbps"],"example":"meter-capability"},"description":""},"max_color":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"meter-features","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-inventory_nodes_node_supported-match-types":{"title":"opendaylight-inventory_nodes_node_supported-match-types","type":"object","properties":{"match-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-match-types_match-type"},"description":""}},"xml":{"name":"supported-match-types","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_supported-match-types_match-type":{"title":"opendaylight-inventory_nodes_node_supported-match-types_match-type","type":"object","properties":{"support-state":{"description":"","type":"string","enum":["native","emulated","not-supported"],"example":"native"},"match":{"description":"","type":"string","example":"Some match"}},"xml":{"name":"match-type","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_supported-instructions":{"title":"opendaylight-inventory_nodes_node_supported-instructions","type":"object","properties":{"instruction-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-instructions_instruction-type"},"description":""}},"xml":{"name":"supported-instructions","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_supported-instructions_instruction-type":{"title":"opendaylight-inventory_nodes_node_supported-instructions_instruction-type","type":"object","properties":{"support-state":{"description":"","type":"string","enum":["native","emulated","not-supported"],"example":"native"},"instruction":{"description":"","type":"string","example":"Some instruction"}},"xml":{"name":"instruction-type","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_supported-actions":{"title":"opendaylight-inventory_nodes_node_supported-actions","type":"object","properties":{"action-type":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_supported-actions_action-type"},"description":""}},"xml":{"name":"supported-actions","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_supported-actions_action-type":{"title":"opendaylight-inventory_nodes_node_supported-actions_action-type","type":"object","properties":{"support-state":{"description":"","type":"string","enum":["native","emulated","not-supported"],"example":"native"},"action":{"description":"","type":"string","example":"Some action"}},"xml":{"name":"action-type","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_switch-features":{"title":"opendaylight-inventory_nodes_node_switch-features","type":"object","properties":{"capabilities":{"type":"array","items":{"type":"string","enum":["feature-capability","flow-feature-capability-port-stats","flow-feature-capability-flow-stats","flow-feature-capability-table-stats","flow-feature-capability-port-blocked","flow-feature-capability-queue-stats","flow-feature-capability-arp-match-ip","flow-feature-capability-stp","flow-feature-capability-reserved","flow-feature-capability-ip-reasm","flow-feature-capability-group-stats"],"example":"feature-capability"},"description":""},"max_buffers":{"description":"","type":"integer","format":"int64","example":0},"max_tables":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"switch-features","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_meter":{"title":"opendaylight-inventory_nodes_node_meter","type":"object","properties":{"opendaylight-meter-statistics:meter-config-stats":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats"},"barrier":{"description":"If true, barrier message is sent","type":"boolean","example":true},"meter-id":{"description":"Meter instance","type":"integer","format":"int64","example":0},"meter-band-headers":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers"},"meter-name":{"description":"Name of meter instance","type":"string","example":"Some meter-name"},"flags":{"description":"Meter configuration flags","type":"string","enum":["meter-kbps","meter-pktps","meter-burst","meter-stats"],"minItems":0,"default":"meter-kbps meter-stats","uniqueItems":true},"container-name":{"description":"Name of container","type":"string","example":"Some container-name"},"opendaylight-meter-statistics:meter-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics"}},"xml":{"name":"meter","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_meter_meter-band-headers":{"title":"opendaylight-inventory_nodes_node_meter_meter-band-headers","type":"object","properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header"},"description":""}},"xml":{"name":"meter-band-headers","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header":{"title":"opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header","type":"object","properties":{"band-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"drop-rate":{"description":"Rate for dropping packets","type":"integer","format":"int64","example":0},"drop-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"band-id":{"description":"Meter band id","type":"integer","format":"int64","example":0},"meter-band-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header_meter-band-types"},"band-rate":{"description":"Rate for this band","type":"integer","format":"int64","example":0}},"xml":{"name":"meter-band-header","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header_meter-band-types":{"title":"opendaylight-inventory_nodes_node_meter_meter-band-headers_meter-band-header_meter-band-types","type":"object","properties":{"flags":{"description":"Meter band flags","type":"string","enum":["ofpmbt-drop","ofpmbt-dscp-remark","ofpmbt-experimenter"],"minItems":0,"default":"ofpmbt-drop ofpmbt-experimenter","uniqueItems":true}},"xml":{"name":"meter-band-types","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_meter_meter-config-stats":{"title":"opendaylight-inventory_nodes_node_meter_meter-config-stats","type":"object","properties":{"barrier":{"description":"If true, barrier message is sent","type":"boolean","example":true},"meter-id":{"description":"Meter instance","type":"integer","format":"int64","example":0},"meter-band-headers":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers"},"meter-name":{"description":"Name of meter instance","type":"string","example":"Some meter-name"},"flags":{"description":"Meter configuration flags","type":"string","enum":["meter-kbps","meter-pktps","meter-burst","meter-stats"],"minItems":0,"default":"meter-kbps meter-stats","uniqueItems":true},"container-name":{"description":"Name of container","type":"string","example":"Some container-name"}},"xml":{"name":"meter-config-stats","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers":{"title":"opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers","type":"object","properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header"},"description":""}},"xml":{"name":"meter-band-headers","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header":{"title":"opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header","type":"object","properties":{"band-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"drop-rate":{"description":"Rate for dropping packets","type":"integer","format":"int64","example":0},"drop-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"band-id":{"description":"Meter band id","type":"integer","format":"int64","example":0},"meter-band-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header_meter-band-types"},"band-rate":{"description":"Rate for this band","type":"integer","format":"int64","example":0}},"xml":{"name":"meter-band-header","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header_meter-band-types":{"title":"opendaylight-inventory_nodes_node_meter_meter-config-stats_meter-band-headers_meter-band-header_meter-band-types","type":"object","properties":{"flags":{"description":"Meter band flags","type":"string","enum":["ofpmbt-drop","ofpmbt-dscp-remark","ofpmbt-experimenter"],"minItems":0,"default":"ofpmbt-drop ofpmbt-experimenter","uniqueItems":true}},"xml":{"name":"meter-band-types","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-inventory_nodes_node_meter_meter-statistics":{"title":"opendaylight-inventory_nodes_node_meter_meter-statistics","type":"object","properties":{"byte-in-count":{"description":"","type":"integer","example":0},"duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_duration"},"meter-id":{"description":"","type":"integer","format":"int64","example":0},"meter-band-stats":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats"},"flow-count":{"description":"","type":"integer","format":"int64","example":0},"packet-in-count":{"description":"","type":"integer","example":0}},"xml":{"name":"meter-statistics","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-inventory_nodes_node_meter_meter-statistics_duration":{"title":"opendaylight-inventory_nodes_node_meter_meter-statistics_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats":{"title":"opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats","type":"object","properties":{"band-stat":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats_band-stat"},"description":""}},"xml":{"name":"meter-band-stats","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats_band-stat":{"title":"opendaylight-inventory_nodes_node_meter_meter-statistics_meter-band-stats_band-stat","type":"object","properties":{"byte-band-count":{"description":"","type":"integer","example":0},"band-id":{"description":"","type":"integer","format":"int64","example":0},"packet-band-count":{"description":"","type":"integer","example":0}},"xml":{"name":"band-stat","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-inventory_nodes_node_stale-meter":{"title":"opendaylight-inventory_nodes_node_stale-meter","type":"object","properties":{"barrier":{"description":"If true, barrier message is sent","type":"boolean","example":true},"meter-id":{"description":"Meter instance","type":"integer","format":"int64","example":0},"meter-band-headers":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers"},"meter-name":{"description":"Name of meter instance","type":"string","example":"Some meter-name"},"flags":{"description":"Meter configuration flags","type":"string","enum":["meter-kbps","meter-pktps","meter-burst","meter-stats"],"minItems":0,"default":"meter-kbps meter-stats","uniqueItems":true},"container-name":{"description":"Name of container","type":"string","example":"Some container-name"}},"xml":{"name":"stale-meter","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_stale-meter_meter-band-headers":{"title":"opendaylight-inventory_nodes_node_stale-meter_meter-band-headers","type":"object","properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header"},"description":""}},"xml":{"name":"meter-band-headers","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header":{"title":"opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header","type":"object","properties":{"band-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"drop-rate":{"description":"Rate for dropping packets","type":"integer","format":"int64","example":0},"drop-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"band-id":{"description":"Meter band id","type":"integer","format":"int64","example":0},"meter-band-types":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header_meter-band-types"},"band-rate":{"description":"Rate for this band","type":"integer","format":"int64","example":0}},"xml":{"name":"meter-band-header","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header_meter-band-types":{"title":"opendaylight-inventory_nodes_node_stale-meter_meter-band-headers_meter-band-header_meter-band-types","type":"object","properties":{"flags":{"description":"Meter band flags","type":"string","enum":["ofpmbt-drop","ofpmbt-dscp-remark","ofpmbt-experimenter"],"minItems":0,"default":"ofpmbt-drop ofpmbt-experimenter","uniqueItems":true}},"xml":{"name":"meter-band-types","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_group":{"title":"opendaylight-inventory_nodes_node_group","type":"object","properties":{"barrier":{"description":"","type":"boolean","example":true},"group-id":{"description":"","type":"integer","format":"int64","example":0},"group-name":{"description":"","type":"string","example":"Some group-name"},"opendaylight-group-statistics:group-desc":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc"},"buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets"},"group-type":{"description":"","type":"string","enum":["group-all","group-select","group-indirect","group-ff"],"example":"group-all"},"container-name":{"description":"","type":"string","example":"Some container-name"},"opendaylight-group-statistics:group-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics"}},"xml":{"name":"group","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_group_buckets":{"title":"opendaylight-inventory_nodes_node_group_buckets","type":"object","properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_group_buckets_bucket":{"title":"opendaylight-inventory_nodes_node_group_buckets_bucket","type":"object","properties":{"watch_group":{"description":"","type":"integer","format":"int64","example":0},"weight":{"description":"","type":"integer","format":"int32","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket_action"},"description":""},"watch_port":{"description":"","type":"integer","format":"int64","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"bucket","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_group_buckets_bucket_action":{"title":"opendaylight-inventory_nodes_node_group_buckets_bucket_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_buckets_bucket_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_group_buckets_bucket_action_output-action":{"title":"opendaylight-inventory_nodes_node_group_buckets_bucket_action_output-action","type":"object","properties":{"output-node-connector":{"description":"","type":"string","example":"Some output-node-connector"},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_group_group-desc":{"title":"opendaylight-inventory_nodes_node_group_group-desc","type":"object","properties":{"barrier":{"description":"","type":"boolean","example":true},"group-id":{"description":"","type":"integer","format":"int64","example":0},"group-name":{"description":"","type":"string","example":"Some group-name"},"buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets"},"group-type":{"description":"","type":"string","enum":["group-all","group-select","group-indirect","group-ff"],"example":"group-all"},"container-name":{"description":"","type":"string","example":"Some container-name"}},"xml":{"name":"group-desc","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-inventory_nodes_node_group_group-desc_buckets":{"title":"opendaylight-inventory_nodes_node_group_group-desc_buckets","type":"object","properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket":{"title":"opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket","type":"object","properties":{"watch_group":{"description":"","type":"integer","format":"int64","example":0},"weight":{"description":"","type":"integer","format":"int32","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket_action"},"description":""},"watch_port":{"description":"","type":"integer","format":"int64","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"bucket","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket_action":{"title":"opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket_action_output-action":{"title":"opendaylight-inventory_nodes_node_group_group-desc_buckets_bucket_action_output-action","type":"object","properties":{"output-node-connector":{"description":"","type":"string","example":"Some output-node-connector"},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-inventory_nodes_node_group_group-statistics":{"title":"opendaylight-inventory_nodes_node_group_group-statistics","type":"object","properties":{"duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_duration"},"group-id":{"description":"","type":"integer","format":"int64","example":0},"packet-count":{"description":"","type":"integer","example":0},"buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets"},"ref-count":{"description":"","type":"integer","format":"int64","example":0},"byte-count":{"description":"","type":"integer","example":0}},"xml":{"name":"group-statistics","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-inventory_nodes_node_group_group-statistics_duration":{"title":"opendaylight-inventory_nodes_node_group_group-statistics_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-inventory_nodes_node_group_group-statistics_buckets":{"title":"opendaylight-inventory_nodes_node_group_group-statistics_buckets","type":"object","properties":{"bucket-counter":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_group_group-statistics_buckets_bucket-counter"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-inventory_nodes_node_group_group-statistics_buckets_bucket-counter":{"title":"opendaylight-inventory_nodes_node_group_group-statistics_buckets_bucket-counter","type":"object","properties":{"packet-count":{"description":"","type":"integer","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0},"byte-count":{"description":"","type":"integer","example":0}},"xml":{"name":"bucket-counter","namespace":"urn:opendaylight:group:statistics"}},"opendaylight-inventory_nodes_node_stale-group":{"title":"opendaylight-inventory_nodes_node_stale-group","type":"object","properties":{"barrier":{"description":"","type":"boolean","example":true},"group-id":{"description":"","type":"integer","format":"int64","example":0},"group-name":{"description":"","type":"string","example":"Some group-name"},"buckets":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets"},"group-type":{"description":"","type":"string","enum":["group-all","group-select","group-indirect","group-ff"],"example":"group-all"},"container-name":{"description":"","type":"string","example":"Some container-name"}},"xml":{"name":"stale-group","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_stale-group_buckets":{"title":"opendaylight-inventory_nodes_node_stale-group_buckets","type":"object","properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_stale-group_buckets_bucket":{"title":"opendaylight-inventory_nodes_node_stale-group_buckets_bucket","type":"object","properties":{"watch_group":{"description":"","type":"integer","format":"int64","example":0},"weight":{"description":"","type":"integer","format":"int32","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket_action"},"description":""},"watch_port":{"description":"","type":"integer","format":"int64","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"bucket","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_stale-group_buckets_bucket_action":{"title":"opendaylight-inventory_nodes_node_stale-group_buckets_bucket_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_stale-group_buckets_bucket_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_stale-group_buckets_bucket_action_output-action":{"title":"opendaylight-inventory_nodes_node_stale-group_buckets_bucket_action_output-action","type":"object","properties":{"output-node-connector":{"description":"","type":"string","example":"Some output-node-connector"},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table-features":{"title":"opendaylight-inventory_nodes_node_table-features","type":"object","properties":{"table-properties":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties"},"metadata-match":{"description":"Bits of metadata table can match","type":"integer","example":0},"metadata-write":{"description":"Bits of metadata table can write","type":"integer","example":0},"name":{"description":"Name of the table","type":"string","example":"Some name"},"max-entries":{"description":"Max number of entries supported","type":"integer","format":"int64","example":0},"table-id":{"description":"","type":"integer","format":"int32","example":0},"config":{"description":"Bitmap of OFPTC_ values","type":"string","enum":["DEPRECATED-MASK"],"minItems":0,"default":"DEPRECATED-MASK DEPRECATED-MASK","uniqueItems":true}},"xml":{"name":"table-features","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table-features_table-properties":{"title":"opendaylight-inventory_nodes_node_table-features_table-properties","type":"object","properties":{"table-feature-properties":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties"},"description":""}},"xml":{"name":"table-properties","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties":{"title":"opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties_instructions"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"table-feature-properties","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties_instructions":{"title":"opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties_instructions_instruction":{"title":"opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties_instructions_instruction_go-to-table":{"title":"opendaylight-inventory_nodes_node_table-features_table-properties_table-feature-properties_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table":{"title":"opendaylight-inventory_nodes_node_table","type":"object","properties":{"stale-flow":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow"},"description":""},"opendaylight-flow-table-statistics:flow-table-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow-table-statistics"},"flow-hash-id-map":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow-hash-id-map"},"description":""},"id":{"description":"","type":"integer","format":"int32","example":0},"opendaylight-flow-statistics:aggregate-flow-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_aggregate-flow-statistics"},"flow":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow"},"description":""}},"xml":{"name":"table","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow":{"title":"opendaylight-inventory_nodes_node_table_flow","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions"},"cookie":{"description":"","type":"integer","example":0},"match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match"},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"container-name":{"description":"","type":"string","example":"Some container-name"},"out_group":{"description":"","type":"integer","format":"int64","example":0},"priority":{"description":"","type":"integer","format":"int32","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0},"cookie_mask":{"description":"","type":"integer","example":0},"out_port":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"opendaylight-flow-statistics:flow-statistics":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics"},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"id":{"description":"","type":"string","example":"Some id"},"strict":{"description":"","type":"boolean","default":false,"example":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"}},"xml":{"name":"flow","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match":{"title":"opendaylight-inventory_nodes_node_table_flow_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match"},"openflowplugin-extension-general:extension-list":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list"},"description":""},"packet-type-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_packet-type-match":{"title":"opendaylight-inventory_nodes_node_table_flow_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_metadata":{"title":"opendaylight-inventory_nodes_node_table_flow_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_tunnel":{"title":"opendaylight-inventory_nodes_node_table_flow_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_ethernet-match":{"title":"opendaylight-inventory_nodes_node_table_flow_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-source":{"title":"opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-destination":{"title":"opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-type":{"title":"opendaylight-inventory_nodes_node_table_flow_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_vlan-match":{"title":"opendaylight-inventory_nodes_node_table_flow_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_vlan-match_vlan-id":{"title":"opendaylight-inventory_nodes_node_table_flow_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_ip-match":{"title":"opendaylight-inventory_nodes_node_table_flow_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_icmpv4-match":{"title":"opendaylight-inventory_nodes_node_table_flow_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_icmpv6-match":{"title":"opendaylight-inventory_nodes_node_table_flow_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields":{"title":"opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields_pbb":{"title":"opendaylight-inventory_nodes_node_table_flow_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_tcp-flags-match":{"title":"opendaylight-inventory_nodes_node_table_flow_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list","type":"object","properties":{"extension":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension"},"extension-key":{"description":"","type":"string","enum":["extension-key","nxm-nx-tun-ipv4-dst-key","nxm-of-eth-dst-key","nxm-of-tcp-dst-key","nxm-of-icmp-type-key","nxm-of-eth-type-key","nxm-nx-ct-mark-key","nxm-nx-nshc-3-key","nxm-nx-ct-tp-src-key","nxm-nx-reg0-key","nxm-nx-pkt-mark-key","nxm-nx-reg4-key","nxm-nx-reg7-key","nxm-nx-nshc-2-key","nxm-of-ip-dst-key","nxm-nx-reg3-key","nx-action-reg-move-key","nxm-of-arp-op-key","nxm-nx-tun-ipv4-src-key","nxm-of-udp-src-key","nxm-nx-arp-tha-key","nxm-nx-nsh-mdtype-key","nxm-nx-nsi-key","nxm-of-in-port-key","nxm-nx-nsp-key","nx-action-reg-load-key","nxm-nx-reg5-key","nxm-nx-nshc-1-key","nxm-nx-arp-sha-key","nxm-nx-nsh-ttl-key","nxm-of-tcp-src-key","nxm-nx-nsh-np-key","nxm-of-ip-src-key","nxm-nx-nsh-flags-key","nxm-nx-ct-state-key","nxm-nx-reg1-key","nxm-nx-ct-zone-key","nxm-nx-reg6-key","nxm-of-arp-tpa-key","nxm-nx-reg2-key","nxm-nx-nshc-4-key","nxm-nx-ct-tp-dst-key","nxm-nx-tun-id-key","nxm-of-arp-spa-key","nxm-of-udp-dst-key","nxm-of-eth-src-key"],"example":"extension-key"}},"xml":{"name":"extension-list","namespace":"urn:opendaylight:openflowplugin:extension:general"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension","type":"object","description":"A vendor has to augment this container.","properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-flags":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-flags"},"dos-ekis":{"description":"","type":"string","example":"Some dos-ekis"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-np":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-np"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-ttl":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-ttl"},"openflowplugin-extension-nicira-match:nxm-nx-tun-id":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-id"},"openflowplugin-extension-nicira-match:nxm-nx-nsi":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsi"},"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-src"},"openflowplugin-extension-nicira-match:nxm-of-tcp-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-dst"},"openflowplugin-extension-nicira-match:nxm-of-ip-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-dst"},"openflowplugin-extension-nicira-match:nxm-of-udp-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-src"},"openflowplugin-extension-nicira-match:nxm-of-eth-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-dst"},"openflowplugin-extension-nicira-match:nxm-nx-nsp":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsp"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-mdtype":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-mdtype"},"openflowplugin-extension-nicira-match:nxm-nx-ct-state":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-state"},"openflowplugin-extension-nicira-match:nxm-nx-reg":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-reg"},"openflowplugin-extension-nicira-match:nxm-nx-ct-zone":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-zone"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-2":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-2"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-3":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-3"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-1":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-1"},"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-src"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-4":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-4"},"openflowplugin-extension-nicira-match:nxm-nx-pkt-mark":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-pkt-mark"},"openflowplugin-extension-nicira-match:nxm-of-arp-op":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-op"},"openflowplugin-extension-nicira-match:nxm-nx-arp-tha":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-tha"},"openflowplugin-extension-nicira-match:nxm-nx-arp-sha":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-sha"},"openflowplugin-extension-nicira-match:nxm-of-tcp-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-src"},"openflowplugin-extension-nicira-match:nxm-of-arp-tpa":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-tpa"},"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-dst"},"openflowplugin-extension-nicira-match:nxm-of-arp-spa":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-spa"},"openflowplugin-extension-nicira-match:nxm-of-ip-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-src"},"openflowplugin-extension-nicira-match:of-in-port":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_of-in-port"},"openflowplugin-extension-nicira-match:nxm-of-udp-dst":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-dst"},"openflowplugin-extension-nicira-match:nxm-of-eth-src":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-src"},"openflowplugin-extension-nicira-match:nxm-of-eth-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-type"},"openflowplugin-extension-nicira-match:nxm-of-icmp-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-icmp-type"},"openflowplugin-extension-nicira-match:nxm-nx-ct-mark":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-mark"}},"xml":{"name":"extension","namespace":"urn:opendaylight:openflowplugin:extension:general"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-reg":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-reg","type":"object","properties":{"reg":{"description":"","type":"string","enum":["nxm-nx-reg","nxm-nx-reg1","nxm-nx-reg4","nxm-nx-reg6","nxm-nx-reg7","nxm-nx-reg5","nxm-nx-reg2","nxm-nx-reg3","nxm-nx-reg0"],"example":"nxm-nx-reg"},"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-reg","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-id":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-id","type":"object","properties":{"value":{"description":"","type":"integer","example":0}},"xml":{"name":"nxm-nx-tun-id","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-sha":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-sha","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-arp-sha","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-tha":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-arp-tha","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-arp-tha","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-op":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-op","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-arp-op","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-spa":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-spa","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-arp-spa","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_of-in-port":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_of-in-port","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"of-in-port","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-src":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-src","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-tcp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-dst":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-tcp-dst","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-tcp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-src":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-src","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-udp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-dst":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-udp-dst","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-udp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-tpa":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-arp-tpa","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-arp-tpa","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-tun-ipv4-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-src":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-tun-ipv4-src","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-tun-ipv4-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-src":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-src","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-eth-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-dst":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-dst","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-eth-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-type":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-eth-type","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-eth-type","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsp":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsp","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nsp","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsi":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsi","type":"object","properties":{"nsi":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsi","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-1":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-1","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-1","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-2":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-2","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-2","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-3":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-3","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-3","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-4":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nshc-4","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-4","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-state":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-state","type":"object","properties":{"ct-state":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-ct-state","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-zone":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-zone","type":"object","properties":{"ct-zone":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-zone","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-dst":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-dst","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-ip-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-src":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-ip-src","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-ip-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-icmp-type":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-of-icmp-type","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-icmp-type","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-flags":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-flags","type":"object","properties":{"nsh-flags":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-flags","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-mdtype":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-mdtype","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-mdtype","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-np":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-np","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-np","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-ttl":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-nsh-ttl","type":"object","properties":{"nsh-ttl":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-ttl","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-mark":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-mark","type":"object","properties":{"ct-mark":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-ct-mark","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-src":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-src","type":"object","properties":{"ct-tp-src":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-tp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-dst":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-ct-tp-dst","type":"object","properties":{"ct-tp-dst":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-tp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-pkt-mark":{"title":"opendaylight-inventory_nodes_node_table_flow_match_extension-list_extension_nxm-nx-pkt-mark","type":"object","properties":{"pkt-mark":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-pkt-mark","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"opendaylight-inventory_nodes_node_table_flow_instructions":{"title":"opendaylight-inventory_nodes_node_table_flow_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_instructions_instruction":{"title":"opendaylight-inventory_nodes_node_table_flow_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_instructions_instruction_go-to-table":{"title":"opendaylight-inventory_nodes_node_table_flow_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow_flow-statistics":{"title":"opendaylight-inventory_nodes_node_table_flow_flow-statistics","type":"object","properties":{"duration":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_flow_flow-statistics_duration"},"packet-count":{"description":"","type":"integer","example":0},"byte-count":{"description":"","type":"integer","example":0}},"xml":{"name":"flow-statistics","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-inventory_nodes_node_table_flow_flow-statistics_duration":{"title":"opendaylight-inventory_nodes_node_table_flow_flow-statistics_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-inventory_nodes_node_table_stale-flow":{"title":"opendaylight-inventory_nodes_node_table_stale-flow","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions"},"cookie":{"description":"","type":"integer","example":0},"match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match"},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"container-name":{"description":"","type":"string","example":"Some container-name"},"out_group":{"description":"","type":"integer","format":"int64","example":0},"priority":{"description":"","type":"integer","format":"int32","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0},"cookie_mask":{"description":"","type":"integer","example":0},"out_port":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"id":{"description":"","type":"string","example":"Some id"},"strict":{"description":"","type":"boolean","default":false,"example":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"}},"xml":{"name":"stale-flow","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match"},"packet-type-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_packet-type-match":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_metadata":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_tunnel":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-source":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-destination":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-type":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match_vlan-id":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_ip-match":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv4-match":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv6-match":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields_pbb":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_match_tcp-flags-match":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_instructions":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_instructions_instruction":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/opendaylight-inventory_nodes_node_table_stale-flow_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_stale-flow_instructions_instruction_go-to-table":{"title":"opendaylight-inventory_nodes_node_table_stale-flow_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_flow-hash-id-map":{"title":"opendaylight-inventory_nodes_node_table_flow-hash-id-map","type":"object","properties":{"flow-id":{"description":"","type":"string","example":"Some flow-id"},"hash":{"description":"","type":"string","example":"Some hash"}},"xml":{"name":"flow-hash-id-map","namespace":"urn:opendaylight:flow:inventory"}},"opendaylight-inventory_nodes_node_table_aggregate-flow-statistics":{"title":"opendaylight-inventory_nodes_node_table_aggregate-flow-statistics","type":"object","properties":{"packet-count":{"description":"","type":"integer","example":0},"flow-count":{"description":"","type":"integer","format":"int64","example":0},"byte-count":{"description":"","type":"integer","example":0}},"xml":{"name":"aggregate-flow-statistics","namespace":"urn:opendaylight:flow:statistics"}},"opendaylight-inventory_nodes_node_table_flow-table-statistics":{"title":"opendaylight-inventory_nodes_node_table_flow-table-statistics","type":"object","properties":{"packets-matched":{"description":"","type":"integer","example":0},"packets-looked-up":{"description":"","type":"integer","example":0},"active-flows":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"flow-table-statistics","namespace":"urn:opendaylight:flow:table:statistics"}},"opendaylight-meter-statistics_get-all-meter-statistics_input":{"title":"opendaylight-meter-statistics_get-all-meter-statistics_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_get-all-meter-statistics_output":{"title":"opendaylight-meter-statistics_get-all-meter-statistics_output","type":"object","properties":{"meter-stats":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-meter-statistics_meter-stats"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_meter-stats":{"title":"opendaylight-meter-statistics_meter-stats","type":"object","properties":{"byte-in-count":{"description":"","type":"integer","example":0},"duration":{"$ref":"#/components/schemas/opendaylight-meter-statistics_meter-stats_duration"},"meter-id":{"description":"","type":"integer","format":"int64","example":0},"meter-band-stats":{"$ref":"#/components/schemas/opendaylight-meter-statistics_meter-stats_meter-band-stats"},"flow-count":{"description":"","type":"integer","format":"int64","example":0},"packet-in-count":{"description":"","type":"integer","example":0}},"xml":{"name":"meter-stats","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_meter-stats_duration":{"title":"opendaylight-meter-statistics_meter-stats_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_meter-stats_meter-band-stats":{"title":"opendaylight-meter-statistics_meter-stats_meter-band-stats","type":"object","properties":{"band-stat":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-meter-statistics_meter-stats_meter-band-stats_band-stat"},"description":""}},"xml":{"name":"meter-band-stats","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_meter-stats_meter-band-stats_band-stat":{"title":"opendaylight-meter-statistics_meter-stats_meter-band-stats_band-stat","type":"object","properties":{"byte-band-count":{"description":"","type":"integer","example":0},"band-id":{"description":"","type":"integer","format":"int64","example":0},"packet-band-count":{"description":"","type":"integer","example":0}},"xml":{"name":"band-stat","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_get-meter-statistics_input":{"title":"opendaylight-meter-statistics_get-meter-statistics_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"meter-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_get-meter-statistics_output":{"title":"opendaylight-meter-statistics_get-meter-statistics_output","type":"object","properties":{"meter-stats":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-meter-statistics_meter-stats1"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_meter-stats1":{"title":"opendaylight-meter-statistics_meter-stats","type":"object","properties":{"byte-in-count":{"description":"","type":"integer","example":0},"duration":{"$ref":"#/components/schemas/opendaylight-meter-statistics_meter-stats_duration"},"meter-id":{"description":"","type":"integer","format":"int64","example":0},"meter-band-stats":{"$ref":"#/components/schemas/opendaylight-meter-statistics_meter-stats_meter-band-stats1"},"flow-count":{"description":"","type":"integer","format":"int64","example":0},"packet-in-count":{"description":"","type":"integer","example":0}},"xml":{"name":"meter-stats","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_meter-stats_meter-band-stats1":{"title":"opendaylight-meter-statistics_meter-stats_meter-band-stats","type":"object","properties":{"band-stat":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-meter-statistics_meter-stats_meter-band-stats_band-stat1"},"description":""}},"xml":{"name":"meter-band-stats","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_meter-stats_meter-band-stats_band-stat1":{"title":"opendaylight-meter-statistics_meter-stats_meter-band-stats_band-stat","type":"object","properties":{"byte-band-count":{"description":"","type":"integer","example":0},"band-id":{"description":"","type":"integer","format":"int64","example":0},"packet-band-count":{"description":"","type":"integer","example":0}},"xml":{"name":"band-stat","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_get-all-meter-config-statistics_input":{"title":"opendaylight-meter-statistics_get-all-meter-config-statistics_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_get-all-meter-config-statistics_output":{"title":"opendaylight-meter-statistics_get-all-meter-config-statistics_output","type":"object","properties":{"meter-config-stats":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-meter-statistics_meter-config-stats"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_meter-config-stats":{"title":"opendaylight-meter-statistics_meter-config-stats","type":"object","properties":{"barrier":{"description":"If true, barrier message is sent","type":"boolean","example":true},"meter-id":{"description":"Meter instance","type":"integer","format":"int64","example":0},"meter-band-headers":{"$ref":"#/components/schemas/opendaylight-meter-statistics_meter-config-stats_meter-band-headers"},"meter-name":{"description":"Name of meter instance","type":"string","example":"Some meter-name"},"flags":{"description":"Meter configuration flags","type":"string","enum":["meter-kbps","meter-pktps","meter-burst","meter-stats"],"minItems":0,"default":"meter-kbps meter-stats","uniqueItems":true},"container-name":{"description":"Name of container","type":"string","example":"Some container-name"}},"xml":{"name":"meter-config-stats","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_meter-config-stats_meter-band-headers":{"title":"opendaylight-meter-statistics_meter-config-stats_meter-band-headers","type":"object","properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-meter-statistics_meter-config-stats_meter-band-headers_meter-band-header"},"description":""}},"xml":{"name":"meter-band-headers","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_meter-config-stats_meter-band-headers_meter-band-header":{"title":"opendaylight-meter-statistics_meter-config-stats_meter-band-headers_meter-band-header","type":"object","properties":{"band-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"drop-rate":{"description":"Rate for dropping packets","type":"integer","format":"int64","example":0},"drop-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"band-id":{"description":"Meter band id","type":"integer","format":"int64","example":0},"meter-band-types":{"$ref":"#/components/schemas/opendaylight-meter-statistics_meter-config-stats_meter-band-headers_meter-band-header_meter-band-types"},"band-rate":{"description":"Rate for this band","type":"integer","format":"int64","example":0}},"xml":{"name":"meter-band-header","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_meter-config-stats_meter-band-headers_meter-band-header_meter-band-types":{"title":"opendaylight-meter-statistics_meter-config-stats_meter-band-headers_meter-band-header_meter-band-types","type":"object","properties":{"flags":{"description":"Meter band flags","type":"string","enum":["ofpmbt-drop","ofpmbt-dscp-remark","ofpmbt-experimenter"],"minItems":0,"default":"ofpmbt-drop ofpmbt-experimenter","uniqueItems":true}},"xml":{"name":"meter-band-types","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_get-meter-features_input":{"title":"opendaylight-meter-statistics_get-meter-features_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-statistics_get-meter-features_output":{"title":"opendaylight-meter-statistics_get-meter-features_output","type":"object","properties":{"max_meter":{"description":"","type":"integer","format":"int64","example":0},"meter-band-supported":{"type":"array","items":{"type":"string","enum":["meter-band","meter-band-dscp-remark","meter-band-drop","meter-band-experimenter"],"example":"meter-band"},"description":""},"meter-capabilities-supported":{"type":"array","items":{"type":"string","enum":["meter-capability","meter-burst","meter-pktps","meter-stats","meter-kbps"],"example":"meter-capability"},"description":""},"max_bands":{"description":"","type":"integer","format":"int32","example":0},"max_color":{"description":"","type":"integer","format":"int32","example":0},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:meter:statistics"}},"opendaylight-meter-types_meter-message":{"title":"opendaylight-meter-types_meter-message","type":"object","properties":{"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0},"barrier":{"description":"If true, barrier message is sent","type":"boolean","example":true},"meter-id":{"description":"Meter instance","type":"integer","format":"int64","example":0},"meter-band-headers":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers"},"meter-name":{"description":"Name of meter instance","type":"string","example":"Some meter-name"},"flags":{"description":"Meter configuration flags","type":"string","enum":["meter-kbps","meter-pktps","meter-burst","meter-stats"],"minItems":0,"default":"meter-kbps meter-stats","uniqueItems":true},"container-name":{"description":"Name of container","type":"string","example":"Some container-name"},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"command":{"description":"","type":"string","enum":["OFPMC_ADD","OFPMC_MODIFY","OFPMC_DELETE"],"example":"OFPMC_ADD"}},"xml":{"name":"meter-message","namespace":"urn:opendaylight:meter:types"}},"opendaylight-meter-types_meter-message_meter-band-headers":{"title":"opendaylight-meter-types_meter-message_meter-band-headers","type":"object","properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header"},"description":""}},"xml":{"name":"meter-band-headers","namespace":"urn:opendaylight:meter:types"}},"opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header":{"title":"opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header","type":"object","properties":{"band-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"drop-rate":{"description":"Rate for dropping packets","type":"integer","format":"int64","example":0},"drop-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"band-id":{"description":"Meter band id","type":"integer","format":"int64","example":0},"meter-band-types":{"$ref":"#/components/schemas/opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header_meter-band-types"},"band-rate":{"description":"Rate for this band","type":"integer","format":"int64","example":0}},"xml":{"name":"meter-band-header","namespace":"urn:opendaylight:meter:types"}},"opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header_meter-band-types":{"title":"opendaylight-meter-types_meter-message_meter-band-headers_meter-band-header_meter-band-types","type":"object","properties":{"flags":{"description":"Meter band flags","type":"string","enum":["ofpmbt-drop","ofpmbt-dscp-remark","ofpmbt-experimenter"],"minItems":0,"default":"ofpmbt-drop ofpmbt-experimenter","uniqueItems":true}},"xml":{"name":"meter-band-types","namespace":"urn:opendaylight:meter:types"}},"opendaylight-multipart-types_multipart-reply":{"title":"opendaylight-multipart-types_multipart-reply","type":"object","properties":{"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0},"request-more":{"description":"","type":"boolean","default":false,"example":true},"manufacturer":{"description":"","type":"string","example":"Some manufacturer"},"hardware":{"description":"","type":"string","example":"Some hardware"},"software":{"description":"","type":"string","example":"Some software"},"serial-number":{"description":"","type":"string","example":"Some serial-number"},"description":{"description":"","type":"string","example":"Some description"},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0}},"xml":{"name":"multipart-reply","namespace":"urn:opendaylight:multipart:types"}},"opendaylight-multipart-types_multipart-request":{"title":"opendaylight-multipart-types_multipart-request","type":"object","properties":{"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0},"request-more":{"description":"","type":"boolean","default":false,"example":true},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0}},"xml":{"name":"multipart-request","namespace":"urn:opendaylight:multipart:types"}},"opendaylight-port-statistics_get-all-node-connectors-statistics_input":{"title":"opendaylight-port-statistics_get-all-node-connectors-statistics_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-port-statistics_get-all-node-connectors-statistics_output":{"title":"opendaylight-port-statistics_get-all-node-connectors-statistics_output","type":"object","properties":{"node-connector-statistics-and-port-number-map":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-port-statistics_node-connector-statistics-and-port-number-map"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-port-statistics_node-connector-statistics-and-port-number-map":{"title":"opendaylight-port-statistics_node-connector-statistics-and-port-number-map","type":"object","properties":{"duration":{"$ref":"#/components/schemas/opendaylight-port-statistics_node-connector-statistics-and-port-number-map_duration"},"receive-crc-error":{"description":"","type":"integer","example":0},"receive-errors":{"description":"","type":"integer","example":0},"node-connector-id":{"description":"","type":"string","example":"Some node-connector-id"},"bytes":{"$ref":"#/components/schemas/opendaylight-port-statistics_node-connector-statistics-and-port-number-map_bytes"},"receive-drops":{"description":"","type":"integer","example":0},"receive-frame-error":{"description":"","type":"integer","example":0},"transmit-drops":{"description":"","type":"integer","example":0},"transmit-errors":{"description":"","type":"integer","example":0},"receive-over-run-error":{"description":"","type":"integer","example":0},"packets":{"$ref":"#/components/schemas/opendaylight-port-statistics_node-connector-statistics-and-port-number-map_packets"},"collision-count":{"description":"","type":"integer","example":0}},"xml":{"name":"node-connector-statistics-and-port-number-map","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-port-statistics_node-connector-statistics-and-port-number-map_packets":{"title":"opendaylight-port-statistics_node-connector-statistics-and-port-number-map_packets","type":"object","properties":{"received":{"description":"","type":"integer","example":0},"transmitted":{"description":"","type":"integer","example":0}},"xml":{"name":"packets","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-port-statistics_node-connector-statistics-and-port-number-map_bytes":{"title":"opendaylight-port-statistics_node-connector-statistics-and-port-number-map_bytes","type":"object","properties":{"received":{"description":"","type":"integer","example":0},"transmitted":{"description":"","type":"integer","example":0}},"xml":{"name":"bytes","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-port-statistics_node-connector-statistics-and-port-number-map_duration":{"title":"opendaylight-port-statistics_node-connector-statistics-and-port-number-map_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-port-statistics_get-node-connector-statistics_input":{"title":"opendaylight-port-statistics_get-node-connector-statistics_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"node-connector-id":{"description":"","type":"string","example":"Some node-connector-id"}},"xml":{"name":"input","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-port-statistics_get-node-connector-statistics_output":{"title":"opendaylight-port-statistics_get-node-connector-statistics_output","type":"object","properties":{"packets":{"$ref":"#/components/schemas/opendaylight-port-statistics_packets"},"bytes":{"$ref":"#/components/schemas/opendaylight-port-statistics_bytes"},"receive-drops":{"description":"","type":"integer","example":0},"transmit-drops":{"description":"","type":"integer","example":0},"receive-errors":{"description":"","type":"integer","example":0},"transmit-errors":{"description":"","type":"integer","example":0},"receive-frame-error":{"description":"","type":"integer","example":0},"receive-over-run-error":{"description":"","type":"integer","example":0},"receive-crc-error":{"description":"","type":"integer","example":0},"collision-count":{"description":"","type":"integer","example":0},"duration":{"$ref":"#/components/schemas/opendaylight-port-statistics_duration"},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-port-statistics_packets":{"title":"opendaylight-port-statistics_packets","type":"object","properties":{"received":{"description":"","type":"integer","example":0},"transmitted":{"description":"","type":"integer","example":0}},"xml":{"name":"packets","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-port-statistics_bytes":{"title":"opendaylight-port-statistics_bytes","type":"object","properties":{"received":{"description":"","type":"integer","example":0},"transmitted":{"description":"","type":"integer","example":0}},"xml":{"name":"bytes","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-port-statistics_duration":{"title":"opendaylight-port-statistics_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:port:statistics"}},"opendaylight-port-types_port-message":{"title":"opendaylight-port-types_port-message","type":"object","properties":{"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0},"configuration":{"description":"Bit map of OFPPC-* flags","type":"string","enum":["PORT-DOWN","NO-RECV","NO-FWD","NO-PACKET-IN"],"minItems":0,"default":"PORT-DOWN NO-PACKET-IN","uniqueItems":true},"port-number":{"description":"","type":"integer","format":"int64","example":0},"hardware-address":{"description":"MAC Address of the port","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"mask":{"description":"Bitmap of OFPPC-* flags to be changed","type":"string","enum":["PORT-DOWN","NO-RECV","NO-FWD","NO-PACKET-IN"],"minItems":0,"default":"PORT-DOWN NO-PACKET-IN","uniqueItems":true},"advertised-features":{"description":"Features being advertised by the port","type":"string","enum":["ten-mb-hd","ten-mb-fd","hundred-mb-hd","hundred-mb-fd","one-gb-hd","one-gb-fd","ten-gb-fd","forty-gb-fd","hundred-gb-fd","one-tb-fd","other","copper","fiber","autoeng","pause","pause-asym"],"minItems":0,"default":"ten-mb-hd pause-asym","uniqueItems":true}},"xml":{"name":"port-message","namespace":"urn:opendaylight:flow:types:port"}},"opendaylight-queue-statistics_get-all-queues-statistics-from-all-ports_input":{"title":"opendaylight-queue-statistics_get-all-queues-statistics-from-all-ports_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:queue:statistics"}},"opendaylight-queue-statistics_get-all-queues-statistics-from-all-ports_output":{"title":"opendaylight-queue-statistics_get-all-queues-statistics-from-all-ports_output","type":"object","properties":{"queue-id-and-statistics-map":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-queue-statistics_queue-id-and-statistics-map"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:queue:statistics"}},"opendaylight-queue-statistics_queue-id-and-statistics-map":{"title":"opendaylight-queue-statistics_queue-id-and-statistics-map","type":"object","properties":{"transmitted-bytes":{"description":"","type":"integer","example":0},"transmitted-packets":{"description":"","type":"integer","example":0},"duration":{"$ref":"#/components/schemas/opendaylight-queue-statistics_queue-id-and-statistics-map_duration"},"queue-id":{"description":"","type":"integer","format":"int64","example":0},"transmission-errors":{"description":"","type":"integer","example":0},"node-connector-id":{"description":"","type":"string","example":"Some node-connector-id"}},"xml":{"name":"queue-id-and-statistics-map","namespace":"urn:opendaylight:queue:statistics"}},"opendaylight-queue-statistics_queue-id-and-statistics-map_duration":{"title":"opendaylight-queue-statistics_queue-id-and-statistics-map_duration","type":"object","properties":{"nanosecond":{"description":"","type":"integer","format":"int64","example":0},"second":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"duration","namespace":"urn:opendaylight:queue:statistics"}},"opendaylight-queue-statistics_get-all-queues-statistics-from-given-port_input":{"title":"opendaylight-queue-statistics_get-all-queues-statistics-from-given-port_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"node-connector-id":{"description":"","type":"string","example":"Some node-connector-id"}},"xml":{"name":"input","namespace":"urn:opendaylight:queue:statistics"}},"opendaylight-queue-statistics_get-all-queues-statistics-from-given-port_output":{"title":"opendaylight-queue-statistics_get-all-queues-statistics-from-given-port_output","type":"object","properties":{"queue-id-and-statistics-map":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-queue-statistics_queue-id-and-statistics-map"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:queue:statistics"}},"opendaylight-queue-statistics_get-queue-statistics-from-given-port_input":{"title":"opendaylight-queue-statistics_get-queue-statistics-from-given-port_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"node-connector-id":{"description":"","type":"string","example":"Some node-connector-id"},"queue-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:queue:statistics"}},"opendaylight-queue-statistics_get-queue-statistics-from-given-port_output":{"title":"opendaylight-queue-statistics_get-queue-statistics-from-given-port_output","type":"object","properties":{"queue-id-and-statistics-map":{"type":"array","items":{"$ref":"#/components/schemas/opendaylight-queue-statistics_queue-id-and-statistics-map"},"description":""},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:queue:statistics"}},"openflow-action_action-container":{"title":"openflow-action_action-container","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/openflow-action_action-container_output-action"}},"xml":{"name":"action-container","namespace":"urn:opendaylight:openflow:common:action"}},"openflow-action_action-container_output-action":{"title":"openflow-action_action-container_output-action","type":"object","properties":{"port":{"description":"","type":"integer","format":"int64","example":0},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:openflow:common:action"}},"openflow-extensible-match_oxm-container":{"title":"openflow-extensible-match_oxm-container","type":"object","properties":{"in-port":{"$ref":"#/components/schemas/openflow-extensible-match_oxm-container_in-port"}},"xml":{"name":"oxm-container","namespace":"urn:opendaylight:openflow:oxm"}},"openflow-extensible-match_oxm-container_in-port":{"title":"openflow-extensible-match_oxm-container_in-port","type":"object","properties":{"port-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"in-port","namespace":"urn:opendaylight:openflow:oxm"}},"openflow-instruction_instruction-container":{"title":"openflow-instruction_instruction-container","type":"object","properties":{"goto-table":{"$ref":"#/components/schemas/openflow-instruction_instruction-container_goto-table"}},"xml":{"name":"instruction-container","namespace":"urn:opendaylight:openflow:common:instruction"}},"openflow-instruction_instruction-container_goto-table":{"title":"openflow-instruction_instruction-container_goto-table","type":"object","properties":{"table-id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"goto-table","namespace":"urn:opendaylight:openflow:common:instruction"}},"openflow-protocol_echo_input":{"title":"openflow-protocol_echo_input","type":"object","properties":{"data":{"description":"","type":"string","format":"byte"},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_echo_output":{"title":"openflow-protocol_echo_output","type":"object","properties":{"data":{"description":"","type":"string","format":"byte"},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_echo-reply_input":{"title":"openflow-protocol_echo-reply_input","type":"object","properties":{"data":{"description":"","type":"string","format":"byte"},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_hello_input":{"title":"openflow-protocol_hello_input","type":"object","properties":{"elements":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_elements"},"description":""},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_elements":{"title":"openflow-protocol_elements","type":"object","properties":{"version-bitmap":{"type":"array","items":{"type":"boolean","example":true},"description":""},"type":{"description":"","type":"string","enum":["VERSIONBITMAP"],"example":"VERSIONBITMAP"}},"xml":{"name":"elements","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_experimenter_input":{"title":"openflow-protocol_experimenter_input","type":"object","properties":{"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0},"experimenter":{"description":"","type":"integer","format":"int64","example":0},"exp_type":{"description":"","type":"integer","format":"int64","example":0},"onf-control-grouping-data":{"$ref":"#/components/schemas/openflow-protocol_onf-control-grouping-data"}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_onf-control-grouping-data":{"title":"openflow-protocol_onf-control-grouping-data","type":"object","properties":{"bundle-property":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_onf-control-grouping-data_bundle-property"},"description":""},"bundle-id":{"description":"","type":"integer","format":"int64","example":0},"flags":{"description":"","type":"string","enum":["atomic","ordered"],"minItems":0,"default":"atomic ordered","uniqueItems":true},"type":{"description":"","type":"string","enum":["ONF_BCT_OPEN_REQUEST","ONF_BCT_OPEN_REPLY","ONF_BCT_CLOSE_REQUEST","ONF_BCT_CLOSE_REPLY","ONF_BCT_COMMIT_REQUEST","ONF_BCT_COMMIT_REPLY","ONF_BCT_DISCARD_REQUEST","ONF_BCT_DISCARD_REPLY"],"example":"ONF_BCT_OPEN_REQUEST"}},"xml":{"name":"onf-control-grouping-data","namespace":"urn:opendaylight:openflowplugin:extension:onf"}},"openflow-protocol_onf-control-grouping-data_bundle-property":{"title":"openflow-protocol_onf-control-grouping-data_bundle-property","type":"object","properties":{"experimenter":{"description":"","type":"integer","format":"int64","example":0},"exp-type":{"description":"","type":"integer","format":"int64","example":0},"type":{"description":"","type":"string","enum":["ONF_ET_BPT_EXPERIMENTER"],"example":"ONF_ET_BPT_EXPERIMENTER"}},"xml":{"name":"bundle-property","namespace":"urn:opendaylight:openflowplugin:extension:onf"}},"openflow-protocol_get-features_input":{"title":"openflow-protocol_get-features_input","type":"object","properties":{"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_get-features_output":{"title":"openflow-protocol_get-features_output","type":"object","properties":{"datapathId":{"description":"","type":"integer","example":0},"buffers":{"description":"","type":"integer","format":"int64","example":0},"tables":{"description":"","type":"integer","format":"int32","example":0},"auxiliaryId":{"description":"","type":"integer","format":"int32","example":0},"capabilities":{"description":"","type":"string","enum":["OFPC_FLOW_STATS","OFPC_TABLE_STATS","OFPC_PORT_STATS","OFPC_GROUP_STATS","OFPC_IP_REASM","OFPC_QUEUE_STATS","OFPC_PORT_BLOCKED"],"minItems":0,"default":"OFPC_FLOW_STATS OFPC_PORT_BLOCKED","uniqueItems":true},"reserved":{"description":"","type":"integer","format":"int64","example":0},"capabilities-v10":{"description":"","type":"string","enum":["OFPC_FLOW_STATS","OFPC_TABLE_STATS","OFPC_PORT_STATS","OFPC_STP","OFPC_RESERVED","OFPC_IP_REASM","OFPC_QUEUE_STATS","OFPC_ARP_MATCH_IP"],"minItems":0,"default":"OFPC_FLOW_STATS OFPC_ARP_MATCH_IP","uniqueItems":true},"actions-v10":{"description":"","type":"string","enum":["OFPAT_OUTPUT","OFPAT_SET_VLAN_VID","OFPAT_SET_VLAN_PCP","OFPAT_STRIP_VLAN","OFPAT_SET_DL_SRC","OFPAT_SET_DL_DST","OFPAT_SET_NW_SRC","OFPAT_SET_NW_DST","OFPAT_SET_NW_TOS","OFPAT_SET_TP_SRC","OFPAT_SET_TP_DST","OFPAT_ENQUEUE","OFPAT_VENDOR"],"minItems":0,"default":"OFPAT_OUTPUT OFPAT_VENDOR","uniqueItems":true},"phy-port":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_phy-port"},"description":""},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_phy-port":{"title":"openflow-protocol_phy-port","type":"object","properties":{"curr-speed":{"description":"Current port bitrate in kbps.","type":"integer","format":"int64","example":0},"current-features-v10":{"description":"Current features.","type":"string","enum":["_10mb-hd","_10mb-fd","_100mb-hd","_100mb-fd","_1gb-hd","_1gb-fd","_10gb-fd","copper","fiber","autoneg","pause","pause-asym"],"minItems":0,"default":"_10mb-hd pause-asym","uniqueItems":true},"advertised-features-v10":{"description":"Features being advertised by the port.","type":"string","enum":["_10mb-hd","_10mb-fd","_100mb-hd","_100mb-fd","_1gb-hd","_1gb-fd","_10gb-fd","copper","fiber","autoneg","pause","pause-asym"],"minItems":0,"default":"_10mb-hd pause-asym","uniqueItems":true},"state-v10":{"description":"","type":"string","enum":["link_down","blocked","live","stp_listen","stp_learn","stp_forward","stp_block","stp_mask"],"minItems":0,"default":"link_down stp_mask","uniqueItems":true},"peer-features":{"description":"Features advertised by peer.","type":"string","enum":["_10mb_hd","_10mb-fd","_100mb-hd","_100mb-fd","_1gb-hd","_1gb-fd","_10gb-fd","_40gb-fd","_100gb-fd","_1tb-fd","other","copper","fiber","autoneg","pause","pause-asym"],"minItems":0,"default":"_10mb_hd pause-asym","uniqueItems":true},"supported-features":{"description":"Features supported by the port.","type":"string","enum":["_10mb_hd","_10mb-fd","_100mb-hd","_100mb-fd","_1gb-hd","_1gb-fd","_10gb-fd","_40gb-fd","_100gb-fd","_1tb-fd","other","copper","fiber","autoneg","pause","pause-asym"],"minItems":0,"default":"_10mb_hd pause-asym","uniqueItems":true},"max-speed":{"description":"Max port bitrate in kbps","type":"integer","format":"int64","example":0},"hw-addr":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"advertised-features":{"description":"Features being advertised by the port.","type":"string","enum":["_10mb_hd","_10mb-fd","_100mb-hd","_100mb-fd","_1gb-hd","_1gb-fd","_10gb-fd","_40gb-fd","_100gb-fd","_1tb-fd","other","copper","fiber","autoneg","pause","pause-asym"],"minItems":0,"default":"_10mb_hd pause-asym","uniqueItems":true},"port-no":{"description":"","type":"integer","format":"int64","example":0},"current-features":{"description":"Current features.","type":"string","enum":["_10mb_hd","_10mb-fd","_100mb-hd","_100mb-fd","_1gb-hd","_1gb-fd","_10gb-fd","_40gb-fd","_100gb-fd","_1tb-fd","other","copper","fiber","autoneg","pause","pause-asym"],"minItems":0,"default":"_10mb_hd pause-asym","uniqueItems":true},"config-v10":{"description":"","type":"string","enum":["port-down","no-stp","no-recv","no-recv-stp","no-flood","no-fwd","no-packet-in"],"minItems":0,"default":"port-down no-packet-in","uniqueItems":true},"peer-features-v10":{"description":"Features advertised by peer.","type":"string","enum":["_10mb-hd","_10mb-fd","_100mb-hd","_100mb-fd","_1gb-hd","_1gb-fd","_10gb-fd","copper","fiber","autoneg","pause","pause-asym"],"minItems":0,"default":"_10mb-hd pause-asym","uniqueItems":true},"name":{"description":"","type":"string","example":"Some name"},"state":{"description":"Bitmap of OFPPS_* flags.","type":"string","enum":["link_down","blocked","live"],"minItems":0,"default":"link_down live","uniqueItems":true},"config":{"description":"Bitmap of OFPPC_* flags.","type":"string","enum":["port-down","no-recv","no-fwd","no-packet-in"],"minItems":0,"default":"port-down no-packet-in","uniqueItems":true},"supported-features-v10":{"description":"Features supported by the port.","type":"string","enum":["_10mb-hd","_10mb-fd","_100mb-hd","_100mb-fd","_1gb-hd","_1gb-fd","_10gb-fd","copper","fiber","autoneg","pause","pause-asym"],"minItems":0,"default":"_10mb-hd pause-asym","uniqueItems":true}},"xml":{"name":"phy-port","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_get-config_input":{"title":"openflow-protocol_get-config_input","type":"object","properties":{"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_get-config_output":{"title":"openflow-protocol_get-config_output","type":"object","properties":{"flags":{"description":"","type":"string","enum":["FRAG_NORMAL","OFPC_FRAG_DROP","OFPC_FRAG_REASM","OFPC_FRAG_MASK"],"example":"FRAG_NORMAL"},"miss-send-len":{"description":"","type":"integer","format":"int32","example":0},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_set-config_input":{"title":"openflow-protocol_set-config_input","type":"object","properties":{"flags":{"description":"","type":"string","enum":["FRAG_NORMAL","OFPC_FRAG_DROP","OFPC_FRAG_REASM","OFPC_FRAG_MASK"],"example":"FRAG_NORMAL"},"miss-send-len":{"description":"","type":"integer","format":"int32","example":0},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_packet-out_input":{"title":"openflow-protocol_packet-out_input","type":"object","properties":{"data":{"description":"","type":"string","format":"byte"},"buffer-id":{"description":"","type":"integer","format":"int64","example":0},"in-port":{"description":"","type":"integer","format":"int64","example":0},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_action"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_action":{"title":"openflow-protocol_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/openflow-protocol_action_output-action"},"experimenter-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"action","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_action_output-action":{"title":"openflow-protocol_action_output-action","type":"object","properties":{"port":{"description":"","type":"integer","format":"int64","example":0},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_flow-mod_input":{"title":"openflow-protocol_flow-mod_input","type":"object","properties":{"cookie":{"description":"","type":"integer","example":0},"cookie-mask":{"description":"","type":"integer","example":0},"table-id":{"description":"","type":"integer","format":"int64","example":0},"command":{"description":"","type":"string","enum":["OFPFC_ADD","OFPFC_MODIFY","OFPFC_MODIFY_STRICT","OFPFC_DELETE","OFPFC_DELETE_STRICT"],"example":"OFPFC_ADD"},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"priority":{"description":"","type":"integer","format":"int32","example":0},"buffer-id":{"description":"","type":"integer","format":"int64","example":0},"out-port":{"description":"","type":"integer","format":"int64","example":0},"out-group":{"description":"","type":"integer","format":"int64","example":0},"flags":{"description":"","type":"string","enum":["OFPFF_SEND_FLOW_REM","OFPFF_CHECK_OVERLAP","OFPFF_RESET_COUNTS","OFPFF_NO_PKT_COUNTS","OFPFF_NO_BYT_COUNTS"],"minItems":0,"default":"OFPFF_SEND_FLOW_REM OFPFF_NO_BYT_COUNTS","uniqueItems":true},"flags-v10":{"description":"","type":"string","enum":["OFPFF_SEND_FLOW_REM","OFPFF_CHECK_OVERLAP","OFPFF_EMERG"],"minItems":0,"default":"OFPFF_SEND_FLOW_REM OFPFF_EMERG","uniqueItems":true},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0},"match-v10":{"$ref":"#/components/schemas/openflow-protocol_match-v10"},"match":{"$ref":"#/components/schemas/openflow-protocol_match"},"action":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_action"},"description":""},"instruction":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_instruction"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_match-v10":{"title":"openflow-protocol_match-v10","type":"object","description":"OF v1.0 match structure","properties":{"tp-src":{"description":"TCP/UDP source port.","type":"integer","format":"int32","example":0},"nw-src-mask":{"description":"IP source address mask (definition differs from OF v1.0.0 spec to ease\nunderstanding, library does the transformation into OF v1.0 spec correct data)","type":"integer","format":"int32","example":0},"dl-vlan":{"description":"Input VLAN id.","type":"integer","format":"int32","example":0},"tp-dst":{"description":"TCP/UDP destination port.","type":"integer","format":"int32","example":0},"wildcards":{"description":"Wildcard fields (only flags).","type":"string","enum":["IN_PORT","DL_VLAN","DL_SRC","DL_DST","DL_TYPE","NW_PROTO","TP_SRC","TP_DST","DL_VLAN_PCP","NW_TOS"],"minItems":0,"default":"IN_PORT NW_TOS","uniqueItems":true},"nw-dst-mask":{"description":"IP destination address mask (definition differs from OF v1.0.0 spec to ease\nunderstanding, library does the transformation into OF v1.0 spec correct data)","type":"integer","format":"int32","example":0},"dl-dst":{"description":"Ethernet destination address.","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"nw-tos":{"description":"IP ToS (actually DSCP field, 6 bits).","type":"integer","format":"int32","example":0},"dl-src":{"description":"Ethernet source address.","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"dl-type":{"description":"Ethernet frame type.","type":"integer","format":"int32","example":0},"nw-proto":{"description":"IP protocol or lower 8 bits of ARP opcode.","type":"integer","format":"int32","example":0},"nw-dst":{"description":"IP destination address.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"dl-vlan-pcp":{"description":"Input VLAN priority.","type":"integer","format":"int32","example":0},"nw-src":{"description":"IP source address.","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"in-port":{"description":"Input switch port.","type":"integer","format":"int32","example":0}},"xml":{"name":"match-v10","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_match":{"title":"openflow-protocol_match","type":"object","description":"Match structure (OF v1.3)","properties":{"type":{"description":"","type":"string","enum":["match-type-base","standard-match-type","oxm-match-type"],"example":"match-type-base"}},"xml":{"name":"match","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_match_match-entry":{"title":"openflow-protocol_match_match-entry","type":"object","properties":{"oxm-match-field":{"description":"","type":"string","enum":["match-field","nxm-of-arp-spa","sctp_src","icmpv4_type","nxm-nx-tun-id","nxm-nx-ct-zone","icmpv6_code","nxm-nx-nshc-2","ipv6_nd_sll","ipv6_nd_tll","nxm-nx-nsh-ttl","udp_dst","ipv6_nd_target","mpls_bos","mpls_tc","nxm-nx-arp-tha","ipv4_dst","nxm-of-arp-op","arp_op","nxm-nx-tun-ipv4-dst","ip_dscp","vlan_vid","arp_tha","arp_tpa","eth_type","ipv6_src","udp_src","nxm-of-tcp-src","nxm-of-mpls-label","nxm-of-udp-src","packet_type","eth_src","nxm-nx-nshc-4","ip_proto","nxm-of-eth-dst","tcp_flags","arp_spa","nxm-of-icmp-type","nxm-of-in-port","nxm-nx-nshc-3","nxm-of-udp-dst","nxm-of-ip-dst","ipv6_exthdr","nxm-nx-reg","nxm-nx-reg1","nxm-nx-reg4","nxm-nx-reg6","nxm-nx-reg7","nxm-nx-reg5","nxm-nx-reg2","nxm-nx-reg3","nxm-nx-reg0","nxm-nx-nshc-1","icmpv6_type","nxm-nx-ct-mark","in_phy_port","nxm-nx-nsh-flags","icmpv4_code","nxm-nx-nsh-mdtype","nxm-nx-ct-tp-src","tunnel_id","nxm-of-arp-tpa","nxm-nx-nsp","eth_dst","nxm-nx-pkt-mark","nxm-of-eth-src","sctp_dst","nxm-of-eth-type","nxm-nx-nsi","in_port","tcp_dst","ipv4_src","metadata","nxm-of-tcp-dst","nxm-nx-tun-ipv4-src","mpls_label","nxm-of-metadata","vlan_pcp","ipv6_flabel","nxm-nx-arp-sha","nxm-of-ip-src","nxm-nx-ct-tp-dst","arp_sha","pbb_isid","nxm-nx-nsh-np","ipv6_dst","nxm-nx-ct-state","tcp_src","ip_ecn"],"example":"match-field"},"in-port":{"$ref":"#/components/schemas/openflow-protocol_match_match-entry_in-port"},"has-mask":{"description":"","type":"boolean","example":true},"oxm-class":{"description":"","type":"string","enum":["oxm-class-base","experimenter-class","openflow-basic-class","nxm-0-class","eric-exp-class","nxm-1-class"],"example":"oxm-class-base"}},"xml":{"name":"match-entry","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_match_match-entry_in-port":{"title":"openflow-protocol_match_match-entry_in-port","type":"object","properties":{"port-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"in-port","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_instruction":{"title":"openflow-protocol_instruction","type":"object","properties":{"goto-table":{"$ref":"#/components/schemas/openflow-protocol_instruction_goto-table"},"experimenter-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"instruction","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_instruction_goto-table":{"title":"openflow-protocol_instruction_goto-table","type":"object","properties":{"table-id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"goto-table","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_group-mod_input":{"title":"openflow-protocol_group-mod_input","type":"object","properties":{"command":{"description":"","type":"string","enum":["OFPGC_ADD","OFPGC_MODIFY","OFPGC_DELETE"],"example":"OFPGC_ADD"},"type":{"description":"","type":"string","enum":["OFPGT_ALL","OFPGT_SELECT","OFPGT_INDIRECT","OFPGT_FF"],"example":"OFPGT_ALL"},"group-id":{"description":"","type":"integer","format":"int64","example":0},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0},"buckets-list":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_buckets-list"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_buckets-list":{"title":"openflow-protocol_buckets-list","type":"object","properties":{"watch-port":{"description":"Port whose state affects whether this\nbucket is live. Only required for fast\nfailover groups.","type":"integer","format":"int64","example":0},"weight":{"description":"Relative weight of bucket. Only\ndefined for select groups.","type":"integer","format":"int32","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_buckets-list_action"},"description":""},"watch-group":{"description":"Group whose state affects whether this\nbucket is live. Only required for fast\nfailover groups.","type":"integer","format":"int64","example":0}},"xml":{"name":"buckets-list","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_buckets-list_action":{"title":"openflow-protocol_buckets-list_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/openflow-protocol_buckets-list_action_output-action"},"experimenter-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"action","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_buckets-list_action_output-action":{"title":"openflow-protocol_buckets-list_action_output-action","type":"object","properties":{"port":{"description":"","type":"integer","format":"int64","example":0},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_port-mod_input":{"title":"openflow-protocol_port-mod_input","type":"object","properties":{"port-no":{"description":"","type":"integer","format":"int64","example":0},"hw-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"config":{"description":"","type":"string","enum":["port-down","no-recv","no-fwd","no-packet-in"],"minItems":0,"default":"port-down no-packet-in","uniqueItems":true},"mask":{"description":"","type":"string","enum":["port-down","no-recv","no-fwd","no-packet-in"],"minItems":0,"default":"port-down no-packet-in","uniqueItems":true},"advertise":{"description":"","type":"string","enum":["_10mb_hd","_10mb-fd","_100mb-hd","_100mb-fd","_1gb-hd","_1gb-fd","_10gb-fd","_40gb-fd","_100gb-fd","_1tb-fd","other","copper","fiber","autoneg","pause","pause-asym"],"minItems":0,"default":"_10mb_hd pause-asym","uniqueItems":true},"config-v10":{"description":"","type":"string","enum":["port-down","no-stp","no-recv","no-recv-stp","no-flood","no-fwd","no-packet-in"],"minItems":0,"default":"port-down no-packet-in","uniqueItems":true},"mask-v10":{"description":"","type":"string","enum":["port-down","no-stp","no-recv","no-recv-stp","no-flood","no-fwd","no-packet-in"],"minItems":0,"default":"port-down no-packet-in","uniqueItems":true},"advertise-v10":{"description":"","type":"string","enum":["_10mb-hd","_10mb-fd","_100mb-hd","_100mb-fd","_1gb-hd","_1gb-fd","_10gb-fd","copper","fiber","autoneg","pause","pause-asym"],"minItems":0,"default":"_10mb-hd pause-asym","uniqueItems":true},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_table-mod_input":{"title":"openflow-protocol_table-mod_input","type":"object","properties":{"table-id":{"description":"","type":"integer","format":"int64","example":0},"config":{"description":"","type":"string","enum":["OFPTC_DEPRECATED_MASK"],"minItems":0,"default":"OFPTC_DEPRECATED_MASK OFPTC_DEPRECATED_MASK","uniqueItems":true},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_multipart-request_input":{"title":"openflow-protocol_multipart-request_input","type":"object","properties":{"type":{"description":"","type":"string","enum":["OFPMP_DESC","OFPMP_FLOW","OFPMP_AGGREGATE","OFPMP_TABLE","OFPMP_PORT_STATS","OFPMP_QUEUE","OFPMP_GROUP","OFPMP_GROUP_DESC","OFPMP_GROUP_FEATURES","OFPMP_METER","OFPMP_METER_CONFIG","OFPMP_METER_FEATURES","OFPMP_TABLE_FEATURES","OFPMP_PORT_DESC","OFPMP_EXPERIMENTER"],"example":"OFPMP_DESC"},"flags":{"description":"","type":"string","enum":["OFPMPF_REQ_MORE"],"minItems":0,"default":"OFPMPF_REQ_MORE OFPMPF_REQ_MORE","uniqueItems":true},"multipart-request-desc":{"$ref":"#/components/schemas/openflow-protocol_multipart-request-desc"},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_multipart-request-desc":{"title":"openflow-protocol_multipart-request-desc","type":"object","properties":{"empty":{"description":"","type":"object"}},"xml":{"name":"multipart-request-desc","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_barrier_input":{"title":"openflow-protocol_barrier_input","type":"object","properties":{"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_barrier_output":{"title":"openflow-protocol_barrier_output","type":"object","properties":{"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_get-queue-config_input":{"title":"openflow-protocol_get-queue-config_input","type":"object","properties":{"port":{"description":"","type":"integer","format":"int64","example":0},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_get-queue-config_output":{"title":"openflow-protocol_get-queue-config_output","type":"object","properties":{"port":{"description":"","type":"integer","format":"int64","example":0},"queues":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_queues"},"description":""},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_queues":{"title":"openflow-protocol_queues","type":"object","properties":{"queue-id":{"description":"","type":"integer","format":"int64","example":0},"port":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"queues","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_queues_queue-property":{"title":"openflow-protocol_queues_queue-property","type":"object","properties":{"property":{"description":"","type":"string","enum":["OFPQT_NONE","OFPQT_MIN_RATE","OFPQT_MAX_RATE","OFPQT_EXPERIMENTER"],"example":"OFPQT_NONE"}},"xml":{"name":"queue-property","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_role-request_input":{"title":"openflow-protocol_role-request_input","type":"object","properties":{"role":{"description":"","type":"string","enum":["OFPCR_ROLE_NOCHANGE","OFPCR_ROLE_EQUAL","OFPCR_ROLE_MASTER","OFPCR_ROLE_SLAVE"],"example":"OFPCR_ROLE_NOCHANGE"},"generation-id":{"description":"","type":"integer","example":0},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_role-request_output":{"title":"openflow-protocol_role-request_output","type":"object","properties":{"role":{"description":"","type":"string","enum":["OFPCR_ROLE_NOCHANGE","OFPCR_ROLE_EQUAL","OFPCR_ROLE_MASTER","OFPCR_ROLE_SLAVE"],"example":"OFPCR_ROLE_NOCHANGE"},"generation-id":{"description":"","type":"integer","example":0},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_get-async_input":{"title":"openflow-protocol_get-async_input","type":"object","properties":{"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_get-async_output":{"title":"openflow-protocol_get-async_output","type":"object","properties":{"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0},"packet-in-mask":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_packet-in-mask"},"description":""},"port-status-mask":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_port-status-mask"},"description":""},"flow-removed-mask":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_flow-removed-mask"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_packet-in-mask":{"title":"openflow-protocol_packet-in-mask","type":"object","properties":{"mask":{"type":"array","items":{"type":"string","enum":["OFPR_NO_MATCH","OFPR_ACTION","OFPR_INVALID_TTL"],"example":"OFPR_NO_MATCH"},"description":""}},"xml":{"name":"packet-in-mask","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_port-status-mask":{"title":"openflow-protocol_port-status-mask","type":"object","properties":{"mask":{"type":"array","items":{"type":"string","enum":["OFPPR_ADD","OFPPR_DELETE","OFPPR_MODIFY"],"example":"OFPPR_ADD"},"description":""}},"xml":{"name":"port-status-mask","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_flow-removed-mask":{"title":"openflow-protocol_flow-removed-mask","type":"object","properties":{"mask":{"type":"array","items":{"type":"string","enum":["OFPRR_IDLE_TIMEOUT","OFPRR_HARD_TIMEOUT","OFPRR_DELETE","OFPRR_GROUP_DELETE"],"example":"OFPRR_IDLE_TIMEOUT"},"description":""}},"xml":{"name":"flow-removed-mask","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_set-async_input":{"title":"openflow-protocol_set-async_input","type":"object","properties":{"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0},"packet-in-mask":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_packet-in-mask"},"description":""},"port-status-mask":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_port-status-mask"},"description":""},"flow-removed-mask":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_flow-removed-mask"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_meter-mod_input":{"title":"openflow-protocol_meter-mod_input","type":"object","properties":{"command":{"description":"","type":"string","enum":["OFPMC_ADD","OFPMC_MODIFY","OFPMC_DELETE"],"example":"OFPMC_ADD"},"flags":{"description":"","type":"string","enum":["OFPMF_KBPS","OFPMF_PKTPS","OFPMF_BURST","OFPMF_STATS"],"minItems":0,"default":"OFPMF_KBPS OFPMF_STATS","uniqueItems":true},"meter-id":{"description":"","type":"integer","format":"int64","example":0},"bands":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_bands"},"description":""},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_bands":{"title":"openflow-protocol_bands","type":"object","properties":{"meter-band-drop":{"$ref":"#/components/schemas/openflow-protocol_bands_meter-band-drop"}},"xml":{"name":"bands","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_bands_meter-band-drop":{"title":"openflow-protocol_bands_meter-band-drop","type":"object","properties":{"rate":{"description":"","type":"integer","format":"int64","example":0},"burst-size":{"description":"","type":"integer","format":"int64","example":0},"type":{"description":"","type":"string","enum":["OFPMBT_DROP","OFPMBT_DSCP_REMARK","OFPMBT_EXPERIMENTER"],"example":"OFPMBT_DROP"}},"xml":{"name":"meter-band-drop","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_table-features-properties-container":{"title":"openflow-protocol_table-features-properties-container","type":"object","properties":{},"xml":{"name":"table-features-properties-container","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_table-features-properties-container_table-feature-properties":{"title":"openflow-protocol_table-features-properties-container_table-feature-properties","type":"object","properties":{"openflow-augments:match-entry":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_match-entry"},"description":""},"openflow-augments:instruction":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_instruction"},"description":""},"openflow-augments:experimenter":{"description":"","type":"integer","format":"int64","example":0,"xml":{"name":"experimenter","namespace":"urn:opendaylight:openflow:augments"}},"openflow-augments:action":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_action"},"description":""},"openflow-augments:next-table-ids":{"type":"array","items":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_next-table-ids"},"description":""},"openflow-augments:exp-type":{"description":"","type":"integer","format":"int64","example":0,"xml":{"name":"exp-type","namespace":"urn:opendaylight:openflow:augments"}},"type":{"description":"","type":"string","enum":["OFPTFPT_INSTRUCTIONS","OFPTFPT_INSTRUCTIONS_MISS","OFPTFPT_NEXT_TABLES","OFPTFPT_NEXT_TABLES_MISS","OFPTFPT_WRITE_ACTIONS","OFPTFPT_WRITE_ACTIONS_MISS","OFPTFPT_APPLY_ACTIONS","OFPTFPT_APPLY_ACTIONS_MISS","OFPTFPT_MATCH","OFPTFPT_WILDCARDS","OFPTFPT_WRITE_SETFIELD","OFPTFPT_WRITE_SETFIELD_MISS","OFPTFPT_APPLY_SETFIELD","OFPTFPT_APPLY_SETFIELD_MISS","OFPTFPT_EXPERIMENTER","OFPTFPT_EXPERIMENTER_MISS"],"example":"OFPTFPT_INSTRUCTIONS"}},"xml":{"name":"table-feature-properties","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_table-features-properties-container_table-feature-properties_next-table-ids":{"title":"openflow-protocol_table-features-properties-container_table-feature-properties_next-table-ids","type":"object","properties":{"table-id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"next-table-ids","namespace":"urn:opendaylight:openflow:augments"}},"openflow-protocol_table-features-properties-container_table-feature-properties_match-entry":{"title":"openflow-protocol_table-features-properties-container_table-feature-properties_match-entry","type":"object","properties":{"oxm-match-field":{"description":"","type":"string","enum":["match-field","nxm-of-arp-spa","sctp_src","icmpv4_type","nxm-nx-tun-id","nxm-nx-ct-zone","icmpv6_code","nxm-nx-nshc-2","ipv6_nd_sll","ipv6_nd_tll","nxm-nx-nsh-ttl","udp_dst","ipv6_nd_target","mpls_bos","mpls_tc","nxm-nx-arp-tha","ipv4_dst","nxm-of-arp-op","arp_op","nxm-nx-tun-ipv4-dst","ip_dscp","vlan_vid","arp_tha","arp_tpa","eth_type","ipv6_src","udp_src","nxm-of-tcp-src","nxm-of-mpls-label","nxm-of-udp-src","packet_type","eth_src","nxm-nx-nshc-4","ip_proto","nxm-of-eth-dst","tcp_flags","arp_spa","nxm-of-icmp-type","nxm-of-in-port","nxm-nx-nshc-3","nxm-of-udp-dst","nxm-of-ip-dst","ipv6_exthdr","nxm-nx-reg","nxm-nx-reg1","nxm-nx-reg4","nxm-nx-reg6","nxm-nx-reg7","nxm-nx-reg5","nxm-nx-reg2","nxm-nx-reg3","nxm-nx-reg0","nxm-nx-nshc-1","icmpv6_type","nxm-nx-ct-mark","in_phy_port","nxm-nx-nsh-flags","icmpv4_code","nxm-nx-nsh-mdtype","nxm-nx-ct-tp-src","tunnel_id","nxm-of-arp-tpa","nxm-nx-nsp","eth_dst","nxm-nx-pkt-mark","nxm-of-eth-src","sctp_dst","nxm-of-eth-type","nxm-nx-nsi","in_port","tcp_dst","ipv4_src","metadata","nxm-of-tcp-dst","nxm-nx-tun-ipv4-src","mpls_label","nxm-of-metadata","vlan_pcp","ipv6_flabel","nxm-nx-arp-sha","nxm-of-ip-src","nxm-nx-ct-tp-dst","arp_sha","pbb_isid","nxm-nx-nsh-np","ipv6_dst","nxm-nx-ct-state","tcp_src","ip_ecn"],"example":"match-field"},"in-port":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_match-entry_in-port"},"has-mask":{"description":"","type":"boolean","example":true},"oxm-class":{"description":"","type":"string","enum":["oxm-class-base","experimenter-class","openflow-basic-class","nxm-0-class","eric-exp-class","nxm-1-class"],"example":"oxm-class-base"}},"xml":{"name":"match-entry","namespace":"urn:opendaylight:openflow:augments"}},"openflow-protocol_table-features-properties-container_table-feature-properties_match-entry_in-port":{"title":"openflow-protocol_table-features-properties-container_table-feature-properties_match-entry_in-port","type":"object","properties":{"port-number":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"in-port","namespace":"urn:opendaylight:openflow:augments"}},"openflow-protocol_table-features-properties-container_table-feature-properties_action":{"title":"openflow-protocol_table-features-properties-container_table-feature-properties_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_action_output-action"},"experimenter-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"action","namespace":"urn:opendaylight:openflow:augments"}},"openflow-protocol_table-features-properties-container_table-feature-properties_action_output-action":{"title":"openflow-protocol_table-features-properties-container_table-feature-properties_action_output-action","type":"object","properties":{"port":{"description":"","type":"integer","format":"int64","example":0},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:openflow:augments"}},"openflow-protocol_table-features-properties-container_table-feature-properties_instruction":{"title":"openflow-protocol_table-features-properties-container_table-feature-properties_instruction","type":"object","properties":{"goto-table":{"$ref":"#/components/schemas/openflow-protocol_table-features-properties-container_table-feature-properties_instruction_goto-table"},"experimenter-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"instruction","namespace":"urn:opendaylight:openflow:augments"}},"openflow-protocol_table-features-properties-container_table-feature-properties_instruction_goto-table":{"title":"openflow-protocol_table-features-properties-container_table-feature-properties_instruction_goto-table","type":"object","properties":{"table-id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"goto-table","namespace":"urn:opendaylight:openflow:augments"}},"openflow-protocol_queue-prop-container":{"title":"openflow-protocol_queue-prop-container","type":"object","properties":{},"xml":{"name":"queue-prop-container","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_queue-prop-container_queue-property":{"title":"openflow-protocol_queue-prop-container_queue-property","type":"object","properties":{"openflow-augments:rate":{"description":"","type":"integer","format":"int32","example":0,"xml":{"name":"rate","namespace":"urn:opendaylight:openflow:augments"}},"property":{"description":"","type":"string","enum":["OFPQT_NONE","OFPQT_MIN_RATE","OFPQT_MAX_RATE","OFPQT_EXPERIMENTER"],"example":"OFPQT_NONE"},"openflow-augments:experimenter":{"description":"","type":"integer","format":"int64","example":0,"xml":{"name":"experimenter","namespace":"urn:opendaylight:openflow:augments"}}},"xml":{"name":"queue-property","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_meter-band-container":{"title":"openflow-protocol_meter-band-container","type":"object","properties":{"meter-band-drop":{"$ref":"#/components/schemas/openflow-protocol_meter-band-container_meter-band-drop"}},"xml":{"name":"meter-band-container","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-protocol_meter-band-container_meter-band-drop":{"title":"openflow-protocol_meter-band-container_meter-band-drop","type":"object","properties":{"rate":{"description":"","type":"integer","format":"int64","example":0},"burst-size":{"description":"","type":"integer","format":"int64","example":0},"type":{"description":"","type":"string","enum":["OFPMBT_DROP","OFPMBT_DSCP_REMARK","OFPMBT_EXPERIMENTER"],"example":"OFPMBT_DROP"}},"xml":{"name":"meter-band-drop","namespace":"urn:opendaylight:openflow:protocol"}},"openflow-provider-config_openflow-provider-config":{"title":"openflow-provider-config_openflow-provider-config","type":"object","properties":{"maximum-timer-delay":{"description":"Maximum timer delay is the wait time to collect next\nstatistics used in polling the statistics, value is in\nmilliseconds","type":"integer","format":"int64","default":900000,"example":1},"is-queue-statistics-polling-on":{"description":"If enabled, periodic queue statistics gathering will be\nturned on","type":"boolean","default":true,"example":true},"thread-pool-timeout":{"description":"After how much time (in seconds) of inactivity will be\nthreads in pool terminated","type":"integer","format":"int64","default":60,"example":0},"use-single-layer-serialization":{"description":"When true, Yang models are serialized and deserialized\ndirectly to and from format supported by device, so serialization\nand deserialization is faster. Otherwise, models are first\nserialized to Openflow specification models and then to format\nsupported by device, and reversed when deserializing.","type":"boolean","default":true,"example":true},"enable-flow-removed-notification":{"description":"Turning on flow removed notification","type":"boolean","default":true,"example":true},"skip-table-features":{"description":"Ability to skip pulling and storing of large table\nfeatures. These features are still available via rpc but if set to\ntrue then maintenance in DS will be omitted","type":"boolean","default":true,"example":true},"is-statistics-polling-on":{"description":"If enabled, periodic statistics gathering will be\nturned on. If false takes precedence over the per-capability configuration.","type":"boolean","default":true,"example":true},"switch-features-mandatory":{"description":"This parameter indicates whether it is mandatory for\nswitch to support OF1.3 features : table, flow, meter,group. If this\nis set to true and switch doesn't support these features its\nconnection will be denied.","type":"boolean","default":false,"example":true},"barrier-interval-timeout-limit":{"description":"Barrier timeout","type":"integer","format":"int64","default":500,"example":1},"is-flow-statistics-polling-on":{"description":"If enabled, periodic flow statistics gathering will be\nturned on","type":"boolean","default":true,"example":true},"device-datastore-removal-delay":{"description":"Delay (in milliseconds) before device is removed from\nthe operational data store in the event of device disconnection\nfrom the controller.","type":"integer","format":"int64","default":500,"example":1},"rpc-requests-quota":{"description":"Quota for maximum number of RPC requests","type":"integer","format":"int32","default":20000,"example":1},"barrier-count-limit":{"description":"Barrier limit","type":"integer","format":"int32","default":25600,"example":1},"thread-pool-max-threads":{"description":"Maximum number of threads in thread pool","type":"integer","format":"int32","default":32000,"example":1},"is-table-statistics-polling-on":{"description":"If enabled, periodic table statistics gathering will be\nturned on","type":"boolean","default":true,"example":true},"echo-reply-timeout":{"description":"How long we should wait for echo reply (value is in\nmilliseconds","type":"integer","format":"int64","default":2000,"example":1},"device-connection-hold-time-in-seconds":{"description":"device connection hold time is the least time delay in seconds a\ndevice has to maintain between its consecutive connection attempts. If time delay\nbetween the previous connection and the current connection is within device\nconnection hold time, the device will not be allowed to connect to the controller.\nDefault value of the device connection hold time is 0 second.","type":"string","default":"0"},"enable-equal-role":{"description":"When true, openflowplugin won't send any specific role\nrequest down to the switch after plugin internally decides the\nownership of the device using Entity Ownership Service. In this\nscenario, controller connection for the device will be in equal\nrole. The behavior will be same for single node setup and clustered\nsetup. In clustered scenario, all the controller will be in equal\nrole for the device. In this case device will send all asynchronous\nevent messages (e.g packet_in) to all the controllers, but openflowplugin\nwill drop these events for the controller instances that is internally\nnot owning the device.","type":"boolean","default":false,"example":true},"device-connection-rate-limit-per-min":{"description":"To limit the number of datapath nodes connecting to odl controller\ninstance per minute. Default value 0 indicates that the device connection rate\nlimiter will be disabled.","type":"string","default":"0"},"is-group-statistics-polling-on":{"description":"If enabled, periodic group statistics gathering will be\nturned on","type":"boolean","default":true,"example":true},"is-port-statistics-polling-on":{"description":"If enabled, periodic port statistics gathering will be\nturned on","type":"boolean","default":true,"example":true},"thread-pool-min-threads":{"description":"Mininum (starting) number of threads in thread pool","type":"integer","format":"int32","default":1,"example":0},"basic-timer-delay":{"description":"Initial delay used in polling the statistics, value is\nin milliseconds","type":"integer","format":"int64","default":3000,"example":1},"is-meter-statistics-polling-on":{"description":"If enabled, periodic meter statistics gathering will be\nturned on","type":"boolean","default":true,"example":true},"is-statistics-rpc-enabled":{"description":"Expose backward compatible statistics rpcs providing\nresult in form of async notification. This is deprecated, use direct\nstatistics instead.","type":"boolean","default":false,"example":true},"global-notification-quota":{"description":"Global notification quota","type":"integer","format":"int64","default":64000,"example":0}},"xml":{"name":"openflow-provider-config","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config"}},"openflow-switch-connection-config_switch-connection-config":{"title":"openflow-switch-connection-config_switch-connection-config","type":"object","properties":{"address":{"description":"address of local listening interface","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"transport-protocol":{"description":"Transport protocol used for communication.","type":"string","enum":["TCP","TLS","UDP"],"example":"TCP"},"channel-outbound-queue-size":{"description":"Channel outbound queue size","type":"integer","format":"int32","default":1024,"example":0},"port":{"description":"local listening port","type":"integer","format":"int32","example":0},"instance-name":{"description":"Name of the switch connection instance.","type":"string","example":"Some instance-name"},"group-add-mod-enabled":{"description":"Group Add Mod Enabled","type":"boolean","default":false,"example":true},"threads":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config_threads"},"tls":{"$ref":"#/components/schemas/openflow-switch-connection-config_switch-connection-config_tls"},"switch-idle-timeout":{"description":"idle timeout in [ms]","type":"integer","format":"int64","default":15000,"example":0},"use-barrier":{"description":"Enable barrier in Openflow java","type":"boolean","default":true,"example":true}},"required":["transport-protocol","port"],"xml":{"name":"switch-connection-config","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"}},"openflow-switch-connection-config_switch-connection-config_tls":{"title":"openflow-switch-connection-config_switch-connection-config_tls","type":"object","properties":{"keystore-type":{"description":"keystore type (JKS or PKCS12)","type":"string","enum":["JKS","PKCS12"],"example":"JKS"},"truststore-password":{"description":"password protecting truststore","type":"string","example":"Some truststore-password"},"cipher-suites":{"type":"array","items":{"type":"string","example":"Some cipher-suites"},"description":"combination of cryptographic algorithms used by TLS connection"},"keystore":{"description":"keystore location","type":"string","example":"Some keystore"},"keystore-path-type":{"description":"keystore path type (CLASSPATH or PATH)","type":"string","enum":["CLASSPATH","PATH"],"example":"CLASSPATH"},"truststore":{"description":"truststore location","type":"string","example":"Some truststore"},"truststore-path-type":{"description":"truststore path type (CLASSPATH or PATH)","type":"string","enum":["CLASSPATH","PATH"],"example":"CLASSPATH"},"keystore-password":{"description":"password protecting keystore","type":"string","example":"Some keystore-password"},"certificate-password":{"description":"password protecting certificate","type":"string","example":"Some certificate-password"},"truststore-type":{"description":"truststore type (JKS or PKCS12)","type":"string","enum":["JKS","PKCS12"],"example":"JKS"}},"xml":{"name":"tls","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"}},"openflow-switch-connection-config_switch-connection-config_threads":{"title":"openflow-switch-connection-config_switch-connection-config_threads","type":"object","properties":{"boss-threads":{"description":"","type":"integer","format":"int32","example":0},"worker-threads":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"threads","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"}},"packet-processing_transmit-packet_input":{"title":"packet-processing_transmit-packet_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string","example":"/flow:packet-in-message"},"connection-cookie":{"description":"","type":"integer","format":"int64","example":0},"egress":{"description":"","type":"string","example":"/flow:packet-in-message"},"buffer-id":{"description":"","type":"integer","format":"int64","example":0},"ingress":{"description":"","type":"string","example":"/flow:packet-in-message"},"payload":{"description":"","type":"string","format":"byte"},"action":{"type":"array","items":{"$ref":"#/components/schemas/packet-processing_action"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:packet:service"}},"packet-processing_action":{"title":"packet-processing_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/packet-processing_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:packet:service"}},"packet-processing_action_output-action":{"title":"packet-processing_action_output-action","type":"object","properties":{"output-node-connector":{"description":"","type":"string","example":"Some output-node-connector"},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message":{"title":"packet-processing_packet-in-message","type":"object","properties":{"ingress":{"description":"","type":"string","example":"/flow:packet-in-message"},"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0},"payload":{"description":"","type":"string","format":"byte"},"flow-cookie":{"description":"","type":"integer","example":0},"match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match"},"table-id":{"description":"","type":"integer","format":"int32","example":0},"packet-in-reason":{"description":"","type":"string","enum":["packet-in-reason","invalid-ttl","send-to-controller","no-match"],"example":"packet-in-reason"},"connection-cookie":{"description":"","type":"integer","format":"int64","example":0},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0}},"xml":{"name":"packet-in-message","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match":{"title":"packet-processing_packet-in-message_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match"},"openflowplugin-extension-general:extension-list":{"type":"array","items":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list"},"description":""},"packet-type-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_packet-type-match":{"title":"packet-processing_packet-in-message_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_metadata":{"title":"packet-processing_packet-in-message_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_tunnel":{"title":"packet-processing_packet-in-message_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_ethernet-match":{"title":"packet-processing_packet-in-message_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_ethernet-match_ethernet-source":{"title":"packet-processing_packet-in-message_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_ethernet-match_ethernet-destination":{"title":"packet-processing_packet-in-message_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_ethernet-match_ethernet-type":{"title":"packet-processing_packet-in-message_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_vlan-match":{"title":"packet-processing_packet-in-message_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_vlan-match_vlan-id":{"title":"packet-processing_packet-in-message_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_ip-match":{"title":"packet-processing_packet-in-message_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_icmpv4-match":{"title":"packet-processing_packet-in-message_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_icmpv6-match":{"title":"packet-processing_packet-in-message_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_protocol-match-fields":{"title":"packet-processing_packet-in-message_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_protocol-match-fields_pbb":{"title":"packet-processing_packet-in-message_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_tcp-flags-match":{"title":"packet-processing_packet-in-message_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:packet:service"}},"packet-processing_packet-in-message_match_extension-list":{"title":"packet-processing_packet-in-message_match_extension-list","type":"object","properties":{"extension":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension"},"extension-key":{"description":"","type":"string","enum":["extension-key","nxm-nx-tun-ipv4-dst-key","nxm-of-eth-dst-key","nxm-of-tcp-dst-key","nxm-of-icmp-type-key","nxm-of-eth-type-key","nxm-nx-ct-mark-key","nxm-nx-nshc-3-key","nxm-nx-ct-tp-src-key","nxm-nx-reg0-key","nxm-nx-pkt-mark-key","nxm-nx-reg4-key","nxm-nx-reg7-key","nxm-nx-nshc-2-key","nxm-of-ip-dst-key","nxm-nx-reg3-key","nx-action-reg-move-key","nxm-of-arp-op-key","nxm-nx-tun-ipv4-src-key","nxm-of-udp-src-key","nxm-nx-arp-tha-key","nxm-nx-nsh-mdtype-key","nxm-nx-nsi-key","nxm-of-in-port-key","nxm-nx-nsp-key","nx-action-reg-load-key","nxm-nx-reg5-key","nxm-nx-nshc-1-key","nxm-nx-arp-sha-key","nxm-nx-nsh-ttl-key","nxm-of-tcp-src-key","nxm-nx-nsh-np-key","nxm-of-ip-src-key","nxm-nx-nsh-flags-key","nxm-nx-ct-state-key","nxm-nx-reg1-key","nxm-nx-ct-zone-key","nxm-nx-reg6-key","nxm-of-arp-tpa-key","nxm-nx-reg2-key","nxm-nx-nshc-4-key","nxm-nx-ct-tp-dst-key","nxm-nx-tun-id-key","nxm-of-arp-spa-key","nxm-of-udp-dst-key","nxm-of-eth-src-key"],"example":"extension-key"}},"xml":{"name":"extension-list","namespace":"urn:opendaylight:openflowplugin:extension:general"}},"packet-processing_packet-in-message_match_extension-list_extension":{"title":"packet-processing_packet-in-message_match_extension-list_extension","type":"object","description":"A vendor has to augment this container.","properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-dst"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-flags":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-flags"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-np":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-np"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-ttl":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-ttl"},"openflowplugin-extension-nicira-match:nxm-nx-tun-id":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-id"},"openflowplugin-extension-nicira-match:nxm-nx-nsi":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsi"},"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-src"},"openflowplugin-extension-nicira-match:nxm-of-tcp-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-dst"},"openflowplugin-extension-nicira-match:nxm-of-ip-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-dst"},"openflowplugin-extension-nicira-match:nxm-of-udp-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-src"},"openflowplugin-extension-nicira-match:nxm-of-eth-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-dst"},"openflowplugin-extension-nicira-match:nxm-nx-nsp":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsp"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-mdtype":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-mdtype"},"openflowplugin-extension-nicira-match:nxm-nx-ct-state":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-state"},"openflowplugin-extension-nicira-match:nxm-nx-reg":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-reg"},"openflowplugin-extension-nicira-match:nxm-nx-ct-zone":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-zone"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-2":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-2"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-3":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-3"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-1":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-1"},"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-src"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-4":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-4"},"openflowplugin-extension-nicira-match:nxm-nx-pkt-mark":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-pkt-mark"},"openflowplugin-extension-nicira-match:nxm-of-arp-op":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-op"},"openflowplugin-extension-nicira-match:nxm-nx-arp-tha":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-tha"},"openflowplugin-extension-nicira-match:nxm-nx-arp-sha":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-sha"},"openflowplugin-extension-nicira-match:nxm-of-tcp-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-src"},"openflowplugin-extension-nicira-match:nxm-of-arp-tpa":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-tpa"},"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-dst"},"openflowplugin-extension-nicira-match:nxm-of-arp-spa":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-spa"},"openflowplugin-extension-nicira-match:nxm-of-ip-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-src"},"openflowplugin-extension-nicira-match:of-in-port":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_of-in-port"},"openflowplugin-extension-nicira-match:nxm-of-udp-dst":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-dst"},"openflowplugin-extension-nicira-match:nxm-of-eth-src":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-src"},"openflowplugin-extension-nicira-match:nxm-of-eth-type":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-type"},"openflowplugin-extension-nicira-match:nxm-of-icmp-type":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-of-icmp-type"},"openflowplugin-extension-nicira-match:nxm-nx-ct-mark":{"$ref":"#/components/schemas/packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-mark"}},"xml":{"name":"extension","namespace":"urn:opendaylight:openflowplugin:extension:general"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-reg":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-reg","type":"object","properties":{"reg":{"description":"","type":"string","enum":["nxm-nx-reg","nxm-nx-reg1","nxm-nx-reg4","nxm-nx-reg6","nxm-nx-reg7","nxm-nx-reg5","nxm-nx-reg2","nxm-nx-reg3","nxm-nx-reg0"],"example":"nxm-nx-reg"},"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-reg","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-id":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-id","type":"object","properties":{"value":{"description":"","type":"integer","example":0}},"xml":{"name":"nxm-nx-tun-id","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-sha":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-sha","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-arp-sha","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-tha":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-arp-tha","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-arp-tha","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-op":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-op","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-arp-op","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-spa":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-spa","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-arp-spa","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_of-in-port":{"title":"packet-processing_packet-in-message_match_extension-list_extension_of-in-port","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"of-in-port","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-src":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-src","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-tcp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-dst":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-tcp-dst","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-tcp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-src":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-src","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-udp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-dst":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-udp-dst","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-udp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-tpa":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-arp-tpa","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-arp-tpa","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-dst":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-dst","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-tun-ipv4-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-src":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-tun-ipv4-src","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-tun-ipv4-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-src":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-src","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-eth-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-dst":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-dst","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-eth-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-type":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-eth-type","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-eth-type","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsp":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsp","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nsp","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsi":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsi","type":"object","properties":{"nsi":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsi","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-1":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-1","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-1","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-2":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-2","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-2","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-3":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-3","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-3","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-4":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nshc-4","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-4","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-state":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-state","type":"object","properties":{"ct-state":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-ct-state","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-zone":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-zone","type":"object","properties":{"ct-zone":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-zone","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-dst":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-dst","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-ip-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-src":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-ip-src","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-ip-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-icmp-type":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-of-icmp-type","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-icmp-type","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-flags":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-flags","type":"object","properties":{"nsh-flags":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-flags","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-mdtype":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-mdtype","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-mdtype","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-np":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-np","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-np","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-ttl":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-nsh-ttl","type":"object","properties":{"nsh-ttl":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-ttl","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-mark":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-mark","type":"object","properties":{"ct-mark":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-ct-mark","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-src":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-src","type":"object","properties":{"ct-tp-src":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-tp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-dst":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-ct-tp-dst","type":"object","properties":{"ct-tp-dst":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-tp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-pkt-mark":{"title":"packet-processing_packet-in-message_match_extension-list_extension_nxm-nx-pkt-mark","type":"object","properties":{"pkt-mark":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-pkt-mark","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"path-computation_get-constrained-path_input":{"title":"path-computation_get-constrained-path_input","type":"object","properties":{"graph-name":{"description":"","type":"string","example":"Some graph-name"},"source":{"description":"","type":"integer","example":0},"destination":{"description":"","type":"integer","example":0},"constraints":{"$ref":"#/components/schemas/path-computation_constraints"},"algorithm":{"description":"","type":"string","enum":["spf","cspf","samcra"],"default":"spf","example":"spf"}},"required":["graph-name"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation"}},"path-computation_constraints":{"title":"path-computation_constraints","type":"object","properties":{"loss":{"description":"Maximum loss for selected edges","type":"integer","format":"int64","example":0},"include-route":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constraints_include-route"},"description":"Speficy routes which must be included in the computed path, i.e. IRO"},"delay":{"description":"Maximum end to end delay","type":"integer","format":"int64","example":0},"jitter":{"description":"Maximum delay variation for selected edges","type":"integer","format":"int64","example":0},"metric":{"description":"Maximum end to end IGP metric","type":"integer","format":"int64","example":0},"bandwidth":{"description":"Requested bandwidth for the computed path","type":"number","example":-92233720368547758.08},"te-metric":{"description":"Maximum end to end Traffic Engineering metric","type":"integer","format":"int64","example":0},"exclude-route":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constraints_exclude-route"},"description":"Speficy routes which must be excluded in the computed path, i.e. XRO"},"class-type":{"description":"Class Type for bandwidth constraints","type":"integer","format":"int32","example":0},"admin-group":{"description":"Admin group to select edges","type":"integer","format":"int64","example":0},"address-family":{"description":"","type":"string","enum":["ipv4","ipv6","sr-ipv4","sr-ipv6"],"default":"ipv4","example":"ipv4"}},"xml":{"name":"constraints","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation"}},"path-computation_constraints_include-route":{"title":"path-computation_constraints_include-route","type":"object","description":"Speficy routes which must be included in the computed path, i.e. IRO","properties":{"ipv4":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv6":{"description":"","type":"string","example":":","minLength":0,"maxLength":2147483647}},"xml":{"name":"include-route","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation"}},"path-computation_constraints_exclude-route":{"title":"path-computation_constraints_exclude-route","type":"object","description":"Speficy routes which must be excluded in the computed path, i.e. XRO","properties":{"ipv4":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv6":{"description":"","type":"string","example":":","minLength":0,"maxLength":2147483647}},"xml":{"name":"exclude-route","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation"}},"path-computation_get-constrained-path_output":{"title":"path-computation_get-constrained-path_output","type":"object","properties":{"path-description":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_path-description"},"description":""},"status":{"description":"","type":"string","enum":["idle","in-progress","active","completed","failed","no-path","no-source","no-destination","equal-endpoints"],"example":"idle"},"computed-metric":{"description":"","type":"integer","format":"int64","example":0},"computed-te-metric":{"description":"","type":"integer","format":"int64","example":0},"computed-delay":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation"}},"path-computation_path-description":{"title":"path-computation_path-description","type":"object","properties":{"remote-ipv6":{"description":"Remote IPv6 address","type":"string","example":":","minLength":0,"maxLength":2147483647},"remote-ipv4":{"description":"Remote IPv4 address","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv4":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv6":{"description":"","type":"string","example":":","minLength":0,"maxLength":2147483647},"sid":{"description":"Segment Routing Identifier as an Index or MPLS label","type":"integer","format":"int64","example":0}},"xml":{"name":"path-description","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation"}},"path-computation_constrained-path":{"title":"path-computation_constrained-path","type":"object","description":"Computed Path as result of Path Computation Algorithms","properties":{"bandwidth":{"description":"Requested bandwidth for the computed path","type":"number","example":-92233720368547758.08},"destination":{"description":"","type":"integer","example":0},"path-description":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constrained-path_path-description"},"description":""},"source":{"description":"","type":"integer","example":0},"exclude-route":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constrained-path_exclude-route"},"description":"Speficy routes which must be excluded in the computed path, i.e. XRO"},"admin-group":{"description":"Admin group to select edges","type":"integer","format":"int64","example":0},"loss":{"description":"Maximum loss for selected edges","type":"integer","format":"int64","example":0},"include-route":{"type":"array","items":{"$ref":"#/components/schemas/path-computation_constrained-path_include-route"},"description":"Speficy routes which must be included in the computed path, i.e. IRO"},"delay":{"description":"Maximum end to end delay","type":"integer","format":"int64","example":0},"jitter":{"description":"Maximum delay variation for selected edges","type":"integer","format":"int64","example":0},"metric":{"description":"Maximum end to end IGP metric","type":"integer","format":"int64","example":0},"te-metric":{"description":"Maximum end to end Traffic Engineering metric","type":"integer","format":"int64","example":0},"class-type":{"description":"Class Type for bandwidth constraints","type":"integer","format":"int32","example":0},"address-family":{"description":"","type":"string","enum":["ipv4","ipv6","sr-ipv4","sr-ipv6"],"default":"ipv4","example":"ipv4"},"status":{"description":"","type":"string","enum":["idle","in-progress","active","completed","failed","no-path","no-source","no-destination","equal-endpoints"],"example":"idle"}},"xml":{"name":"constrained-path","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation"}},"path-computation_constrained-path_include-route":{"title":"path-computation_constrained-path_include-route","type":"object","description":"Speficy routes which must be included in the computed path, i.e. IRO","properties":{"ipv4":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv6":{"description":"","type":"string","example":":","minLength":0,"maxLength":2147483647}},"xml":{"name":"include-route","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation"}},"path-computation_constrained-path_exclude-route":{"title":"path-computation_constrained-path_exclude-route","type":"object","description":"Speficy routes which must be excluded in the computed path, i.e. XRO","properties":{"ipv4":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv6":{"description":"","type":"string","example":":","minLength":0,"maxLength":2147483647}},"xml":{"name":"exclude-route","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation"}},"path-computation_constrained-path_path-description":{"title":"path-computation_constrained-path_path-description","type":"object","properties":{"remote-ipv6":{"description":"Remote IPv6 address","type":"string","example":":","minLength":0,"maxLength":2147483647},"remote-ipv4":{"description":"Remote IPv4 address","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv4":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647},"ipv6":{"description":"","type":"string","example":":","minLength":0,"maxLength":2147483647},"sid":{"description":"Segment Routing Identifier as an Index or MPLS label","type":"integer","format":"int64","example":0}},"xml":{"name":"path-description","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation"}},"pcep-topology-stats-rpc_get-stats_input":{"title":"pcep-topology-stats-rpc_get-stats_input","type":"object","properties":{"topology":{"type":"array","items":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_topology"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"pcep-topology-stats-rpc_topology":{"title":"pcep-topology-stats-rpc_topology","type":"object","properties":{"node":{"type":"array","items":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_topology_node"},"description":""},"topology-id":{"description":"","type":"string","example":"Some topology-id"}},"xml":{"name":"topology","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"pcep-topology-stats-rpc_topology_node":{"title":"pcep-topology-stats-rpc_topology_node","type":"object","properties":{"node-id":{"description":"","type":"string","example":"Some node-id"}},"xml":{"name":"node","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"pcep-topology-stats-rpc_get-stats_output":{"title":"pcep-topology-stats-rpc_get-stats_output","type":"object","properties":{"topology":{"type":"array","items":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_topology1"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"pcep-topology-stats-rpc_topology1":{"title":"pcep-topology-stats-rpc_topology","type":"object","properties":{"node":{"type":"array","items":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_topology_node1"},"description":""},"topology-id":{"description":"","type":"string","example":"Some topology-id"}},"xml":{"name":"topology","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"pcep-topology-stats-rpc_topology_node1":{"title":"pcep-topology-stats-rpc_topology_node","type":"object","properties":{"node-id":{"description":"","type":"string","example":"Some node-id"},"pcep-session-state":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_topology_node_pcep-session-state"}},"xml":{"name":"node","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"pcep-topology-stats-rpc_topology_node_pcep-session-state":{"title":"pcep-topology-stats-rpc_topology_node_pcep-session-state","type":"object","properties":{"synchronized":{"description":"Represents synchronization status.","type":"boolean","default":false,"example":true},"local-pref":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_topology_node_pcep-session-state_local-pref"},"messages":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_topology_node_pcep-session-state_messages"},"peer-pref":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_topology_node_pcep-session-state_peer-pref"},"delegated-lsps-count":{"description":"The number of delegated LSPs (tunnels) from PCC.","type":"string","default":"0"},"session-duration":{"description":"Elapsed time (in d:H:m:s) from session-up until now.","type":"string","example":"Some session-duration"},"peer-capabilities":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_topology_node_pcep-session-state_peer-capabilities"}},"xml":{"name":"pcep-session-state","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"pcep-topology-stats-rpc_topology_node_pcep-session-state_peer-capabilities":{"title":"pcep-topology-stats-rpc_topology_node_pcep-session-state_peer-capabilities","type":"object","description":"Remote peer's (PCC) advertised capabilities.","properties":{"odl-pcep-stateful-stats:active":{"description":"Represents peer's LSP update capability.","type":"boolean","default":false,"example":true,"xml":{"name":"active","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}},"odl-pcep-stateful-stats:stateful":{"description":"Represents peer's stateful/stateless capability.","type":"boolean","default":false,"example":true,"xml":{"name":"stateful","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}},"odl-pcep-stateful-stats:instantiation":{"description":"Represents peer's instantiation capability.","type":"boolean","default":false,"example":true,"xml":{"name":"instantiation","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}}},"xml":{"name":"peer-capabilities","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"pcep-topology-stats-rpc_topology_node_pcep-session-state_messages":{"title":"pcep-topology-stats-rpc_topology_node_pcep-session-state_messages","type":"object","description":"The statistics of PCEP received/sent messages from the PCE point of view.","properties":{"sent-msg-count":{"description":"Total number of sent PCEP messages.","type":"string","default":"0"},"received-msg-count":{"description":"Total number of received PCEP messages.","type":"string","default":"0"},"reply-time":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_topology_node_pcep-session-state_messages_reply-time"},"odl-pcep-stateful-stats:sent-upd-msg-count":{"description":"The number of sent PCUpd messages.","type":"string","default":"0","xml":{"name":"sent-upd-msg-count","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}},"odl-pcep-stateful-stats:sent-init-msg-count":{"description":"The number of sent PCInitiate messages.","type":"string","default":"0","xml":{"name":"sent-init-msg-count","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}},"unknown-msg-received":{"description":"The number of received unknown messages.","type":"string","default":"0"},"last-sent-msg-timestamp":{"description":"The timestamp of last sent message.","type":"string","default":"0"},"odl-pcep-stateful-stats:received-rpt-msg-count":{"description":"The number of received PcRpt messages.","type":"string","default":"0","xml":{"name":"received-rpt-msg-count","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}},"error-messages":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_topology_node_pcep-session-state_messages_error-messages"},"odl-pcep-stateful-stats:last-received-rpt-msg-timestamp":{"description":"The timestamp of last received PCRpt message.","type":"string","default":"0","xml":{"name":"last-received-rpt-msg-timestamp","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}}},"xml":{"name":"messages","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"pcep-topology-stats-rpc_topology_node_pcep-session-state_messages_error-messages":{"title":"pcep-topology-stats-rpc_topology_node_pcep-session-state_messages_error-messages","type":"object","description":"The message statistics of received/sent PCErr messages.","properties":{"last-received-error":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_topology_node_pcep-session-state_messages_error-messages_last-received-error"},"sent-error-msg-count":{"description":"Total number of sent PCErr messages.","type":"string","default":"0"},"last-sent-error":{"$ref":"#/components/schemas/pcep-topology-stats-rpc_topology_node_pcep-session-state_messages_error-messages_last-sent-error"},"received-error-msg-count":{"description":"Total number of received PCErr messages.","type":"string","default":"0"}},"xml":{"name":"error-messages","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"pcep-topology-stats-rpc_topology_node_pcep-session-state_messages_error-messages_last-received-error":{"title":"pcep-topology-stats-rpc_topology_node_pcep-session-state_messages_error-messages_last-received-error","type":"object","description":"Type/value tuple of last received error.","properties":{"error-type":{"description":"","type":"string","default":"0"},"error-value":{"description":"","type":"string","default":"0"}},"xml":{"name":"last-received-error","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"pcep-topology-stats-rpc_topology_node_pcep-session-state_messages_error-messages_last-sent-error":{"title":"pcep-topology-stats-rpc_topology_node_pcep-session-state_messages_error-messages_last-sent-error","type":"object","description":"Type/value tuple of last sent error.","properties":{"error-type":{"description":"","type":"string","default":"0"},"error-value":{"description":"","type":"string","default":"0"}},"xml":{"name":"last-sent-error","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"pcep-topology-stats-rpc_topology_node_pcep-session-state_messages_reply-time":{"title":"pcep-topology-stats-rpc_topology_node_pcep-session-state_messages_reply-time","type":"object","description":"Measures time elapsed from request's send to reply's received.","properties":{"max-time":{"description":"Maximal measured time value (in milliseconds).","type":"string","default":"0"},"average-time":{"description":"Average time (in milliseconds) of gauged values.","type":"string","default":"0"},"min-time":{"description":"Minimal measured time value (in milliseconds).","type":"string","default":"0"}},"xml":{"name":"reply-time","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"pcep-topology-stats-rpc_topology_node_pcep-session-state_local-pref":{"title":"pcep-topology-stats-rpc_topology_node_pcep-session-state_local-pref","type":"object","description":"The local (PCE) preferences.","properties":{"ip-address":{"description":"Peer's IP address.","type":"string","default":"","example":"Some ip-address"},"keepalive":{"description":"Advertised keep-alive value.","type":"string","default":"0"},"deadtimer":{"description":"Advertised deadtimer value.","type":"string","default":"0"},"odl-pcep-stateful-stats:speaker-entity-id-value":{"description":"","type":"string","format":"byte","xml":{"name":"speaker-entity-id-value","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats"}},"session-id":{"description":"Peer's session identifier.","type":"string","default":"0"}},"xml":{"name":"local-pref","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"pcep-topology-stats-rpc_topology_node_pcep-session-state_peer-pref":{"title":"pcep-topology-stats-rpc_topology_node_pcep-session-state_peer-pref","type":"object","description":"The remote peer (PCC) preferences.","properties":{"ip-address":{"description":"Peer's IP address.","type":"string","default":"","example":"Some ip-address"},"keepalive":{"description":"Advertised keep-alive value.","type":"string","default":"0"},"deadtimer":{"description":"Advertised deadtimer value.","type":"string","default":"0"},"session-id":{"description":"Peer's session identifier.","type":"string","default":"0"}},"xml":{"name":"peer-pref","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc"}},"people_add-person_input":{"title":"people_add-person_input","type":"object","properties":{"id":{"description":"identifier of single list of entries.","type":"string","example":"Some id"},"gender":{"description":"","type":"string","example":"Some gender"},"age":{"description":"","type":"integer","format":"int64","example":0},"address":{"description":"","type":"string","example":"Some address"},"contactNo":{"description":"","type":"string","example":"Some contactNo"}},"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"}},"people_people":{"title":"people_people","type":"object","description":"Top-level container for all people","properties":{"person":{"type":"array","items":{"$ref":"#/components/schemas/people_people_person"},"description":"A list of people (as defined by the 'grouping person')."}},"xml":{"name":"people","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"}},"people_people_person":{"title":"people_people_person","type":"object","description":"A list of people (as defined by the 'grouping person').","properties":{"address":{"description":"","type":"string","example":"Some address"},"gender":{"description":"","type":"string","example":"Some gender"},"id":{"description":"identifier of single list of entries.","type":"string","example":"Some id"},"age":{"description":"","type":"integer","format":"int64","example":0},"contactNo":{"description":"","type":"string","example":"Some contactNo"}},"xml":{"name":"person","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"}},"programming_cancel-instruction_input":{"title":"programming_cancel-instruction_input","type":"object","properties":{"id":{"description":"","type":"string","example":"Some id"}},"required":["id"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:programming"}},"programming_cancel-instruction_output":{"title":"programming_cancel-instruction_output","type":"object","properties":{"failure":{"description":"","type":"string","enum":["cancel-failure","uncancellable-instruction","unknown-instruction"],"example":"cancel-failure"}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:programming"}},"programming_clean-instructions_input":{"title":"programming_clean-instructions_input","type":"object","properties":{"id":{"type":"array","minItems":1,"items":{"type":"string","example":"Some id"},"description":"","example":["Some id"]}},"required":["id"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:programming"}},"programming_clean-instructions_output":{"title":"programming_clean-instructions_output","type":"object","properties":{"unflushed":{"type":"array","items":{"type":"string","example":"Some unflushed"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:programming"}},"programming_instructions-queue":{"title":"programming_instructions-queue","type":"object","properties":{"instruction-queue-id":{"description":"","type":"string","example":"Some instruction-queue-id"}},"xml":{"name":"instructions-queue","namespace":"urn:opendaylight:params:xml:ns:yang:programming"}},"programming_instructions-queue_instruction":{"title":"programming_instructions-queue_instruction","type":"object","description":"List of all instructions known to the\nscheduler.","properties":{"id":{"description":"","type":"string","example":"Some id"},"deadline":{"description":"","type":"integer","example":0},"status":{"description":"","type":"string","enum":["queued","scheduled","executing","cancelled","failed","successful","unknown"],"example":"queued"}},"required":["deadline","status"],"xml":{"name":"instruction","namespace":"urn:opendaylight:params:xml:ns:yang:programming"}},"sal-async-config_set-async_input":{"title":"sal-async-config_set-async_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string","example":"/async-config:async-config-message"},"packet-in-mask":{"$ref":"#/components/schemas/sal-async-config_packet-in-mask"},"port-status-mask":{"$ref":"#/components/schemas/sal-async-config_port-status-mask"},"flow-removed-mask":{"$ref":"#/components/schemas/sal-async-config_flow-removed-mask"}},"xml":{"name":"input","namespace":"urn:opendaylight:async-config:service"}},"sal-async-config_packet-in-mask":{"title":"sal-async-config_packet-in-mask","type":"object","properties":{"master-mask":{"description":"","type":"string","enum":["NO_MATCH","ACTION","INVALID_TTL"],"minItems":0,"default":"NO_MATCH INVALID_TTL","uniqueItems":true},"slave-mask":{"description":"","type":"string","enum":["NO_MATCH","ACTION","INVALID_TTL"],"minItems":0,"default":"NO_MATCH INVALID_TTL","uniqueItems":true}},"xml":{"name":"packet-in-mask","namespace":"urn:opendaylight:async-config:service"}},"sal-async-config_port-status-mask":{"title":"sal-async-config_port-status-mask","type":"object","properties":{"master-mask":{"description":"","type":"string","enum":["ADD","DELETE","UPDATE"],"minItems":0,"default":"ADD UPDATE","uniqueItems":true},"slave-mask":{"description":"","type":"string","enum":["ADD","DELETE","UPDATE"],"minItems":0,"default":"ADD UPDATE","uniqueItems":true}},"xml":{"name":"port-status-mask","namespace":"urn:opendaylight:async-config:service"}},"sal-async-config_flow-removed-mask":{"title":"sal-async-config_flow-removed-mask","type":"object","properties":{"master-mask":{"description":"","type":"string","enum":["IDLE_TIMEOUT","HARD_TIMEOUT","DELETE","GROUP_DELETE"],"minItems":0,"default":"IDLE_TIMEOUT GROUP_DELETE","uniqueItems":true},"slave-mask":{"description":"","type":"string","enum":["IDLE_TIMEOUT","HARD_TIMEOUT","DELETE","GROUP_DELETE"],"minItems":0,"default":"IDLE_TIMEOUT GROUP_DELETE","uniqueItems":true}},"xml":{"name":"flow-removed-mask","namespace":"urn:opendaylight:async-config:service"}},"sal-async-config_get-async_input":{"title":"sal-async-config_get-async_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string","example":"/async-config:async-config-message"}},"xml":{"name":"input","namespace":"urn:opendaylight:async-config:service"}},"sal-async-config_get-async_output":{"title":"sal-async-config_get-async_output","type":"object","properties":{"packet-in-mask":{"$ref":"#/components/schemas/sal-async-config_packet-in-mask"},"port-status-mask":{"$ref":"#/components/schemas/sal-async-config_port-status-mask"},"flow-removed-mask":{"$ref":"#/components/schemas/sal-async-config_flow-removed-mask"}},"xml":{"name":"output","namespace":"urn:opendaylight:async-config:service"}},"sal-async-config_async-config-message":{"title":"sal-async-config_async-config-message","type":"object","properties":{"xid":{"description":"Transaction ID","type":"integer","format":"int64","example":0},"port-status-mask":{"$ref":"#/components/schemas/sal-async-config_async-config-message_port-status-mask"},"packet-in-mask":{"$ref":"#/components/schemas/sal-async-config_async-config-message_packet-in-mask"},"version":{"description":"OpenFlow version","type":"integer","format":"int32","example":0},"flow-removed-mask":{"$ref":"#/components/schemas/sal-async-config_async-config-message_flow-removed-mask"}},"xml":{"name":"async-config-message","namespace":"urn:opendaylight:async-config:service"}},"sal-async-config_async-config-message_packet-in-mask":{"title":"sal-async-config_async-config-message_packet-in-mask","type":"object","properties":{"master-mask":{"description":"","type":"string","enum":["NO_MATCH","ACTION","INVALID_TTL"],"minItems":0,"default":"NO_MATCH INVALID_TTL","uniqueItems":true},"slave-mask":{"description":"","type":"string","enum":["NO_MATCH","ACTION","INVALID_TTL"],"minItems":0,"default":"NO_MATCH INVALID_TTL","uniqueItems":true}},"xml":{"name":"packet-in-mask","namespace":"urn:opendaylight:async-config:service"}},"sal-async-config_async-config-message_port-status-mask":{"title":"sal-async-config_async-config-message_port-status-mask","type":"object","properties":{"master-mask":{"description":"","type":"string","enum":["ADD","DELETE","UPDATE"],"minItems":0,"default":"ADD UPDATE","uniqueItems":true},"slave-mask":{"description":"","type":"string","enum":["ADD","DELETE","UPDATE"],"minItems":0,"default":"ADD UPDATE","uniqueItems":true}},"xml":{"name":"port-status-mask","namespace":"urn:opendaylight:async-config:service"}},"sal-async-config_async-config-message_flow-removed-mask":{"title":"sal-async-config_async-config-message_flow-removed-mask","type":"object","properties":{"master-mask":{"description":"","type":"string","enum":["IDLE_TIMEOUT","HARD_TIMEOUT","DELETE","GROUP_DELETE"],"minItems":0,"default":"IDLE_TIMEOUT GROUP_DELETE","uniqueItems":true},"slave-mask":{"description":"","type":"string","enum":["IDLE_TIMEOUT","HARD_TIMEOUT","DELETE","GROUP_DELETE"],"minItems":0,"default":"IDLE_TIMEOUT GROUP_DELETE","uniqueItems":true}},"xml":{"name":"flow-removed-mask","namespace":"urn:opendaylight:async-config:service"}},"sal-bundle_control-bundle_input":{"title":"sal-bundle_control-bundle_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"type":{"description":"","type":"string","enum":["ONF_BCT_OPEN_REQUEST","ONF_BCT_OPEN_REPLY","ONF_BCT_CLOSE_REQUEST","ONF_BCT_CLOSE_REPLY","ONF_BCT_COMMIT_REQUEST","ONF_BCT_COMMIT_REPLY","ONF_BCT_DISCARD_REQUEST","ONF_BCT_DISCARD_REPLY"],"example":"ONF_BCT_OPEN_REQUEST"},"bundle-id":{"description":"","type":"integer","format":"int64","example":0},"flags":{"description":"","type":"string","enum":["atomic","ordered"],"minItems":0,"default":"atomic ordered","uniqueItems":true},"bundle-property":{"type":"array","items":{"$ref":"#/components/schemas/sal-bundle_bundle-property"},"description":""}},"xml":{"name":"input","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_bundle-property":{"title":"sal-bundle_bundle-property","type":"object","properties":{"experimenter":{"description":"","type":"integer","format":"int64","example":0},"exp-type":{"description":"","type":"integer","format":"int64","example":0},"type":{"description":"","type":"string","enum":["ONF_ET_BPT_EXPERIMENTER"],"example":"ONF_ET_BPT_EXPERIMENTER"}},"xml":{"name":"bundle-property","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_add-bundle-messages_input":{"title":"sal-bundle_add-bundle-messages_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"bundle-id":{"description":"","type":"integer","format":"int64","example":0},"flags":{"description":"","type":"string","enum":["atomic","ordered"],"minItems":0,"default":"atomic ordered","uniqueItems":true},"bundle-property":{"type":"array","items":{"$ref":"#/components/schemas/sal-bundle_bundle-property"},"description":""},"messages":{"$ref":"#/components/schemas/sal-bundle_messages"}},"xml":{"name":"input","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages":{"title":"sal-bundle_messages","type":"object","properties":{"message":{"type":"array","items":{"$ref":"#/components/schemas/sal-bundle_messages_message"},"description":""}},"xml":{"name":"messages","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message":{"title":"sal-bundle_messages_message","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"add-flow-case-data":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data"}},"xml":{"name":"message","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data":{"title":"sal-bundle_messages_message_add-flow-case-data","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_instructions"},"cookie":{"description":"","type":"integer","example":0},"match":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match"},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"container-name":{"description":"","type":"string","example":"Some container-name"},"out_group":{"description":"","type":"integer","format":"int64","example":0},"priority":{"description":"","type":"integer","format":"int32","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0},"cookie_mask":{"description":"","type":"integer","example":0},"out_port":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"strict":{"description":"","type":"boolean","default":false,"example":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"}},"xml":{"name":"add-flow-case-data","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match":{"title":"sal-bundle_messages_message_add-flow-case-data_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_ethernet-match"},"packet-type-match":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_packet-type-match":{"title":"sal-bundle_messages_message_add-flow-case-data_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_metadata":{"title":"sal-bundle_messages_message_add-flow-case-data_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_tunnel":{"title":"sal-bundle_messages_message_add-flow-case-data_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_ethernet-match":{"title":"sal-bundle_messages_message_add-flow-case-data_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_ethernet-match_ethernet-source":{"title":"sal-bundle_messages_message_add-flow-case-data_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_ethernet-match_ethernet-destination":{"title":"sal-bundle_messages_message_add-flow-case-data_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_ethernet-match_ethernet-type":{"title":"sal-bundle_messages_message_add-flow-case-data_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_vlan-match":{"title":"sal-bundle_messages_message_add-flow-case-data_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_vlan-match_vlan-id":{"title":"sal-bundle_messages_message_add-flow-case-data_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_ip-match":{"title":"sal-bundle_messages_message_add-flow-case-data_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_icmpv4-match":{"title":"sal-bundle_messages_message_add-flow-case-data_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_icmpv6-match":{"title":"sal-bundle_messages_message_add-flow-case-data_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_protocol-match-fields":{"title":"sal-bundle_messages_message_add-flow-case-data_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_protocol-match-fields_pbb":{"title":"sal-bundle_messages_message_add-flow-case-data_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_match_tcp-flags-match":{"title":"sal-bundle_messages_message_add-flow-case-data_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_instructions":{"title":"sal-bundle_messages_message_add-flow-case-data_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_instructions_instruction":{"title":"sal-bundle_messages_message_add-flow-case-data_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/sal-bundle_messages_message_add-flow-case-data_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-bundle_messages_message_add-flow-case-data_instructions_instruction_go-to-table":{"title":"sal-bundle_messages_message_add-flow-case-data_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-echo_send-echo_input":{"title":"sal-echo_send-echo_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"data":{"description":"Openflow echo request payload (arbirary-length data field). The\ndata field might be a message timestamp to check latency, various lengths\nto measure bandwidth, or zero-size to verify liveness between the switch\nand controller.","type":"string","format":"byte"}},"xml":{"name":"input","namespace":"urn:opendaylight:echo:service"}},"sal-echo_send-echo_output":{"title":"sal-echo_send-echo_output","type":"object","properties":{"data":{"description":"Unmodified data field.","type":"string","format":"byte"}},"xml":{"name":"output","namespace":"urn:opendaylight:echo:service"}},"sal-experimenter-message_send-experimenter_input":{"title":"sal-experimenter-message_send-experimenter_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"sal-control-data":{"$ref":"#/components/schemas/sal-experimenter-message_sal-control-data"}},"xml":{"name":"input","namespace":"urn:opendaylight:experimenter-message:service"}},"sal-experimenter-message_sal-control-data":{"title":"sal-experimenter-message_sal-control-data","type":"object","properties":{"bundle-property":{"type":"array","items":{"$ref":"#/components/schemas/sal-experimenter-message_sal-control-data_bundle-property"},"description":""},"bundle-id":{"description":"","type":"integer","format":"int64","example":0},"flags":{"description":"","type":"string","enum":["atomic","ordered"],"minItems":0,"default":"atomic ordered","uniqueItems":true},"type":{"description":"","type":"string","enum":["ONF_BCT_OPEN_REQUEST","ONF_BCT_OPEN_REPLY","ONF_BCT_CLOSE_REQUEST","ONF_BCT_CLOSE_REPLY","ONF_BCT_COMMIT_REQUEST","ONF_BCT_COMMIT_REPLY","ONF_BCT_DISCARD_REQUEST","ONF_BCT_DISCARD_REPLY"],"example":"ONF_BCT_OPEN_REQUEST"}},"xml":{"name":"sal-control-data","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-experimenter-message_sal-control-data_bundle-property":{"title":"sal-experimenter-message_sal-control-data_bundle-property","type":"object","properties":{"experimenter":{"description":"","type":"integer","format":"int64","example":0},"exp-type":{"description":"","type":"integer","format":"int64","example":0},"type":{"description":"","type":"string","enum":["ONF_ET_BPT_EXPERIMENTER"],"example":"ONF_ET_BPT_EXPERIMENTER"}},"xml":{"name":"bundle-property","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service"}},"sal-experimenter-mp-message_send-experimenter-mp-request_input":{"title":"sal-experimenter-mp-message_send-experimenter-mp-request_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:experimenter-mp-message:service"}},"sal-experimenter-mp-message_send-experimenter-mp-request_output":{"title":"sal-experimenter-mp-message_send-experimenter-mp-request_output","type":"object","properties":{"experimenter-core-message-item":{"type":"array","items":{"$ref":"#/components/schemas/sal-experimenter-mp-message_experimenter-core-message-item"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:experimenter-mp-message:service"}},"sal-experimenter-mp-message_experimenter-core-message-item":{"title":"sal-experimenter-mp-message_experimenter-core-message-item","type":"object","properties":{},"xml":{"name":"experimenter-core-message-item","namespace":"urn:opendaylight:experimenter-mp-message:service"}},"sal-flat-batch_process-flat-batch_input":{"title":"sal-flat-batch_process-flat-batch_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"batch":{"type":"array","items":{"$ref":"#/components/schemas/sal-flat-batch_batch"},"description":""},"exit-on-first-error":{"description":"If true then batch will execute all steps and report list of occurred errors,\notherwise there will be only first error reported and execution will be stop right there.","type":"boolean","example":true}},"xml":{"name":"input","namespace":"urn:opendaylight:flat-batch:service"}},"sal-flat-batch_batch":{"title":"sal-flat-batch_batch","type":"object","properties":{"batch-order":{"description":"","type":"integer","format":"int32","example":0},"flat-batch-add-meter":{"type":"array","items":{"$ref":"#/components/schemas/sal-flat-batch_batch_flat-batch-add-meter"},"description":""}},"xml":{"name":"batch","namespace":"urn:opendaylight:flat-batch:service"}},"sal-flat-batch_batch_flat-batch-add-meter":{"title":"sal-flat-batch_batch_flat-batch-add-meter","type":"object","properties":{"batch-order":{"description":"","type":"integer","format":"int32","example":0},"barrier":{"description":"If true, barrier message is sent","type":"boolean","example":true},"meter-id":{"description":"Meter instance","type":"integer","format":"int64","example":0},"meter-band-headers":{"$ref":"#/components/schemas/sal-flat-batch_batch_flat-batch-add-meter_meter-band-headers"},"meter-name":{"description":"Name of meter instance","type":"string","example":"Some meter-name"},"flags":{"description":"Meter configuration flags","type":"string","enum":["meter-kbps","meter-pktps","meter-burst","meter-stats"],"minItems":0,"default":"meter-kbps meter-stats","uniqueItems":true},"container-name":{"description":"Name of container","type":"string","example":"Some container-name"}},"xml":{"name":"flat-batch-add-meter","namespace":"urn:opendaylight:flat-batch:service"}},"sal-flat-batch_batch_flat-batch-add-meter_meter-band-headers":{"title":"sal-flat-batch_batch_flat-batch-add-meter_meter-band-headers","type":"object","properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/sal-flat-batch_batch_flat-batch-add-meter_meter-band-headers_meter-band-header"},"description":""}},"xml":{"name":"meter-band-headers","namespace":"urn:opendaylight:flat-batch:service"}},"sal-flat-batch_batch_flat-batch-add-meter_meter-band-headers_meter-band-header":{"title":"sal-flat-batch_batch_flat-batch-add-meter_meter-band-headers_meter-band-header","type":"object","properties":{"band-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"drop-rate":{"description":"Rate for dropping packets","type":"integer","format":"int64","example":0},"drop-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"band-id":{"description":"Meter band id","type":"integer","format":"int64","example":0},"meter-band-types":{"$ref":"#/components/schemas/sal-flat-batch_batch_flat-batch-add-meter_meter-band-headers_meter-band-header_meter-band-types"},"band-rate":{"description":"Rate for this band","type":"integer","format":"int64","example":0}},"xml":{"name":"meter-band-header","namespace":"urn:opendaylight:flat-batch:service"}},"sal-flat-batch_batch_flat-batch-add-meter_meter-band-headers_meter-band-header_meter-band-types":{"title":"sal-flat-batch_batch_flat-batch-add-meter_meter-band-headers_meter-band-header_meter-band-types","type":"object","properties":{"flags":{"description":"Meter band flags","type":"string","enum":["ofpmbt-drop","ofpmbt-dscp-remark","ofpmbt-experimenter"],"minItems":0,"default":"ofpmbt-drop ofpmbt-experimenter","uniqueItems":true}},"xml":{"name":"meter-band-types","namespace":"urn:opendaylight:flat-batch:service"}},"sal-flat-batch_process-flat-batch_output":{"title":"sal-flat-batch_process-flat-batch_output","type":"object","properties":{"batch-failure":{"type":"array","items":{"$ref":"#/components/schemas/sal-flat-batch_batch-failure"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:flat-batch:service"}},"sal-flat-batch_batch-failure":{"title":"sal-flat-batch_batch-failure","type":"object","properties":{"batch-order":{"description":"","type":"integer","format":"int32","example":0},"flow-id":{"description":"","type":"string","example":"Some flow-id"}},"xml":{"name":"batch-failure","namespace":"urn:opendaylight:flat-batch:service"}},"sal-flow_add-flow_input":{"title":"sal-flow_add-flow_input","type":"object","properties":{"transaction-uri":{"description":"","type":"string","example":"Some transaction-uri"},"flow-ref":{"description":"","type":"string"},"flow-table":{"description":"","type":"string"},"node":{"description":"A reference to a particular node.","type":"string"},"match":{"$ref":"#/components/schemas/sal-flow_match"},"instructions":{"$ref":"#/components/schemas/sal-flow_instructions"},"container-name":{"description":"","type":"string","example":"Some container-name"},"cookie_mask":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"out_port":{"description":"","type":"integer","example":0},"out_group":{"description":"","type":"integer","format":"int64","example":0},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"strict":{"description":"","type":"boolean","default":false,"example":true},"priority":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"cookie":{"description":"","type":"integer","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match":{"title":"sal-flow_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/sal-flow_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/sal-flow_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/sal-flow_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/sal-flow_match_ethernet-match"},"openflowplugin-extension-general:extension-list":{"type":"array","items":{"$ref":"#/components/schemas/sal-flow_match_extension-list"},"description":""},"packet-type-match":{"$ref":"#/components/schemas/sal-flow_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/sal-flow_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/sal-flow_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/sal-flow_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/sal-flow_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/sal-flow_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_packet-type-match":{"title":"sal-flow_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_metadata":{"title":"sal-flow_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_tunnel":{"title":"sal-flow_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_ethernet-match":{"title":"sal-flow_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/sal-flow_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/sal-flow_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/sal-flow_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_ethernet-match_ethernet-source":{"title":"sal-flow_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_ethernet-match_ethernet-destination":{"title":"sal-flow_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_ethernet-match_ethernet-type":{"title":"sal-flow_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_vlan-match":{"title":"sal-flow_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/sal-flow_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_vlan-match_vlan-id":{"title":"sal-flow_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_ip-match":{"title":"sal-flow_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_icmpv4-match":{"title":"sal-flow_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_icmpv6-match":{"title":"sal-flow_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_protocol-match-fields":{"title":"sal-flow_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/sal-flow_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_protocol-match-fields_pbb":{"title":"sal-flow_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_tcp-flags-match":{"title":"sal-flow_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_extension-list":{"title":"sal-flow_match_extension-list","type":"object","properties":{"extension":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension"},"extension-key":{"description":"","type":"string","enum":["extension-key","nxm-nx-tun-ipv4-dst-key","nxm-of-eth-dst-key","nxm-of-tcp-dst-key","nxm-of-icmp-type-key","nxm-of-eth-type-key","nxm-nx-ct-mark-key","nxm-nx-nshc-3-key","nxm-nx-ct-tp-src-key","nxm-nx-reg0-key","nxm-nx-pkt-mark-key","nxm-nx-reg4-key","nxm-nx-reg7-key","nxm-nx-nshc-2-key","nxm-of-ip-dst-key","nxm-nx-reg3-key","nx-action-reg-move-key","nxm-of-arp-op-key","nxm-nx-tun-ipv4-src-key","nxm-of-udp-src-key","nxm-nx-arp-tha-key","nxm-nx-nsh-mdtype-key","nxm-nx-nsi-key","nxm-of-in-port-key","nxm-nx-nsp-key","nx-action-reg-load-key","nxm-nx-reg5-key","nxm-nx-nshc-1-key","nxm-nx-arp-sha-key","nxm-nx-nsh-ttl-key","nxm-of-tcp-src-key","nxm-nx-nsh-np-key","nxm-of-ip-src-key","nxm-nx-nsh-flags-key","nxm-nx-ct-state-key","nxm-nx-reg1-key","nxm-nx-ct-zone-key","nxm-nx-reg6-key","nxm-of-arp-tpa-key","nxm-nx-reg2-key","nxm-nx-nshc-4-key","nxm-nx-ct-tp-dst-key","nxm-nx-tun-id-key","nxm-of-arp-spa-key","nxm-of-udp-dst-key","nxm-of-eth-src-key"],"example":"extension-key"}},"xml":{"name":"extension-list","namespace":"urn:opendaylight:openflowplugin:extension:general"}},"sal-flow_match_extension-list_extension":{"title":"sal-flow_match_extension-list_extension","type":"object","description":"A vendor has to augment this container.","properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-dst":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-flags":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nsh-flags"},"dos-ekis":{"description":"","type":"string","example":"Some dos-ekis"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-np":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nsh-np"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-ttl":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nsh-ttl"},"openflowplugin-extension-nicira-match:nxm-nx-tun-id":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-tun-id"},"openflowplugin-extension-nicira-match:nxm-nx-nsi":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nsi"},"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-src":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-ct-tp-src"},"openflowplugin-extension-nicira-match:nxm-of-tcp-dst":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-tcp-dst"},"openflowplugin-extension-nicira-match:nxm-of-ip-dst":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-ip-dst"},"openflowplugin-extension-nicira-match:nxm-of-udp-src":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-udp-src"},"openflowplugin-extension-nicira-match:nxm-of-eth-dst":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-eth-dst"},"openflowplugin-extension-nicira-match:nxm-nx-nsp":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nsp"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-mdtype":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nsh-mdtype"},"openflowplugin-extension-nicira-match:nxm-nx-ct-state":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-ct-state"},"openflowplugin-extension-nicira-match:nxm-nx-reg":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-reg"},"openflowplugin-extension-nicira-match:nxm-nx-ct-zone":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-ct-zone"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-2":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nshc-2"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-3":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nshc-3"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-1":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nshc-1"},"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-src":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-tun-ipv4-src"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-4":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nshc-4"},"openflowplugin-extension-nicira-match:nxm-nx-pkt-mark":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-pkt-mark"},"openflowplugin-extension-nicira-match:nxm-of-arp-op":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-arp-op"},"openflowplugin-extension-nicira-match:nxm-nx-arp-tha":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-arp-tha"},"openflowplugin-extension-nicira-match:nxm-nx-arp-sha":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-arp-sha"},"openflowplugin-extension-nicira-match:nxm-of-tcp-src":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-tcp-src"},"openflowplugin-extension-nicira-match:nxm-of-arp-tpa":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-arp-tpa"},"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-dst":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-ct-tp-dst"},"openflowplugin-extension-nicira-match:nxm-of-arp-spa":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-arp-spa"},"openflowplugin-extension-nicira-match:nxm-of-ip-src":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-ip-src"},"openflowplugin-extension-nicira-match:of-in-port":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_of-in-port"},"openflowplugin-extension-nicira-match:nxm-of-udp-dst":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-udp-dst"},"openflowplugin-extension-nicira-match:nxm-of-eth-src":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-eth-src"},"openflowplugin-extension-nicira-match:nxm-of-eth-type":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-eth-type"},"openflowplugin-extension-nicira-match:nxm-of-icmp-type":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-icmp-type"},"openflowplugin-extension-nicira-match:nxm-nx-ct-mark":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-ct-mark"}},"xml":{"name":"extension","namespace":"urn:opendaylight:openflowplugin:extension:general"}},"sal-flow_match_extension-list_extension_nxm-nx-reg":{"title":"sal-flow_match_extension-list_extension_nxm-nx-reg","type":"object","properties":{"reg":{"description":"","type":"string","enum":["nxm-nx-reg","nxm-nx-reg1","nxm-nx-reg4","nxm-nx-reg6","nxm-nx-reg7","nxm-nx-reg5","nxm-nx-reg2","nxm-nx-reg3","nxm-nx-reg0"],"example":"nxm-nx-reg"},"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-reg","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-tun-id":{"title":"sal-flow_match_extension-list_extension_nxm-nx-tun-id","type":"object","properties":{"value":{"description":"","type":"integer","example":0}},"xml":{"name":"nxm-nx-tun-id","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-arp-sha":{"title":"sal-flow_match_extension-list_extension_nxm-nx-arp-sha","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-arp-sha","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-arp-tha":{"title":"sal-flow_match_extension-list_extension_nxm-nx-arp-tha","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-arp-tha","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-arp-op":{"title":"sal-flow_match_extension-list_extension_nxm-of-arp-op","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-arp-op","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-arp-spa":{"title":"sal-flow_match_extension-list_extension_nxm-of-arp-spa","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-arp-spa","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_of-in-port":{"title":"sal-flow_match_extension-list_extension_of-in-port","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"of-in-port","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-tcp-src":{"title":"sal-flow_match_extension-list_extension_nxm-of-tcp-src","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-tcp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-tcp-dst":{"title":"sal-flow_match_extension-list_extension_nxm-of-tcp-dst","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-tcp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-udp-src":{"title":"sal-flow_match_extension-list_extension_nxm-of-udp-src","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-udp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-udp-dst":{"title":"sal-flow_match_extension-list_extension_nxm-of-udp-dst","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-udp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-arp-tpa":{"title":"sal-flow_match_extension-list_extension_nxm-of-arp-tpa","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-arp-tpa","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst":{"title":"sal-flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-tun-ipv4-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-tun-ipv4-src":{"title":"sal-flow_match_extension-list_extension_nxm-nx-tun-ipv4-src","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-tun-ipv4-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-eth-src":{"title":"sal-flow_match_extension-list_extension_nxm-of-eth-src","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-eth-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-eth-dst":{"title":"sal-flow_match_extension-list_extension_nxm-of-eth-dst","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-eth-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-eth-type":{"title":"sal-flow_match_extension-list_extension_nxm-of-eth-type","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-eth-type","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nsp":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nsp","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nsp","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nsi":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nsi","type":"object","properties":{"nsi":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsi","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nshc-1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nshc-1","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-1","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nshc-2":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nshc-2","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-2","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nshc-3":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nshc-3","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-3","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nshc-4":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nshc-4","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-4","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-ct-state":{"title":"sal-flow_match_extension-list_extension_nxm-nx-ct-state","type":"object","properties":{"ct-state":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-ct-state","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-ct-zone":{"title":"sal-flow_match_extension-list_extension_nxm-nx-ct-zone","type":"object","properties":{"ct-zone":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-zone","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-ip-dst":{"title":"sal-flow_match_extension-list_extension_nxm-of-ip-dst","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-ip-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-ip-src":{"title":"sal-flow_match_extension-list_extension_nxm-of-ip-src","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-ip-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-icmp-type":{"title":"sal-flow_match_extension-list_extension_nxm-of-icmp-type","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-icmp-type","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nsh-flags":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nsh-flags","type":"object","properties":{"nsh-flags":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-flags","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nsh-mdtype":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nsh-mdtype","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-mdtype","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nsh-np":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nsh-np","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-np","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nsh-ttl":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nsh-ttl","type":"object","properties":{"nsh-ttl":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-ttl","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-ct-mark":{"title":"sal-flow_match_extension-list_extension_nxm-nx-ct-mark","type":"object","properties":{"ct-mark":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-ct-mark","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-ct-tp-src":{"title":"sal-flow_match_extension-list_extension_nxm-nx-ct-tp-src","type":"object","properties":{"ct-tp-src":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-tp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-ct-tp-dst":{"title":"sal-flow_match_extension-list_extension_nxm-nx-ct-tp-dst","type":"object","properties":{"ct-tp-dst":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-tp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-pkt-mark":{"title":"sal-flow_match_extension-list_extension_nxm-nx-pkt-mark","type":"object","properties":{"pkt-mark":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-pkt-mark","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_instructions":{"title":"sal-flow_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/sal-flow_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flow:service"}},"sal-flow_instructions_instruction":{"title":"sal-flow_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/sal-flow_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flow:service"}},"sal-flow_instructions_instruction_go-to-table":{"title":"sal-flow_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:flow:service"}},"sal-flow_add-flow_output":{"title":"sal-flow_add-flow_output","type":"object","properties":{"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:flow:service"}},"sal-flow_remove-flow_input":{"title":"sal-flow_remove-flow_input","type":"object","properties":{"transaction-uri":{"description":"","type":"string","example":"Some transaction-uri"},"flow-ref":{"description":"","type":"string"},"flow-table":{"description":"","type":"string"},"node":{"description":"A reference to a particular node.","type":"string"},"match":{"$ref":"#/components/schemas/sal-flow_match1"},"instructions":{"$ref":"#/components/schemas/sal-flow_instructions1"},"container-name":{"description":"","type":"string","example":"Some container-name"},"cookie_mask":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"out_port":{"description":"","type":"integer","example":0},"out_group":{"description":"","type":"integer","format":"int64","example":0},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"strict":{"description":"","type":"boolean","default":false,"example":true},"priority":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"cookie":{"description":"","type":"integer","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match1":{"title":"sal-flow_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/sal-flow_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/sal-flow_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/sal-flow_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/sal-flow_match_ethernet-match"},"openflowplugin-extension-general:extension-list":{"type":"array","items":{"$ref":"#/components/schemas/sal-flow_match_extension-list1"},"description":""},"packet-type-match":{"$ref":"#/components/schemas/sal-flow_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/sal-flow_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/sal-flow_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/sal-flow_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/sal-flow_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/sal-flow_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_match_extension-list1":{"title":"sal-flow_match_extension-list","type":"object","properties":{"extension":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension1"},"extension-key":{"description":"","type":"string","enum":["extension-key","nxm-nx-tun-ipv4-dst-key","nxm-of-eth-dst-key","nxm-of-tcp-dst-key","nxm-of-icmp-type-key","nxm-of-eth-type-key","nxm-nx-ct-mark-key","nxm-nx-nshc-3-key","nxm-nx-ct-tp-src-key","nxm-nx-reg0-key","nxm-nx-pkt-mark-key","nxm-nx-reg4-key","nxm-nx-reg7-key","nxm-nx-nshc-2-key","nxm-of-ip-dst-key","nxm-nx-reg3-key","nx-action-reg-move-key","nxm-of-arp-op-key","nxm-nx-tun-ipv4-src-key","nxm-of-udp-src-key","nxm-nx-arp-tha-key","nxm-nx-nsh-mdtype-key","nxm-nx-nsi-key","nxm-of-in-port-key","nxm-nx-nsp-key","nx-action-reg-load-key","nxm-nx-reg5-key","nxm-nx-nshc-1-key","nxm-nx-arp-sha-key","nxm-nx-nsh-ttl-key","nxm-of-tcp-src-key","nxm-nx-nsh-np-key","nxm-of-ip-src-key","nxm-nx-nsh-flags-key","nxm-nx-ct-state-key","nxm-nx-reg1-key","nxm-nx-ct-zone-key","nxm-nx-reg6-key","nxm-of-arp-tpa-key","nxm-nx-reg2-key","nxm-nx-nshc-4-key","nxm-nx-ct-tp-dst-key","nxm-nx-tun-id-key","nxm-of-arp-spa-key","nxm-of-udp-dst-key","nxm-of-eth-src-key"],"example":"extension-key"}},"xml":{"name":"extension-list","namespace":"urn:opendaylight:openflowplugin:extension:general"}},"sal-flow_match_extension-list_extension1":{"title":"sal-flow_match_extension-list_extension","type":"object","description":"A vendor has to augment this container.","properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-dst":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst1"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-flags":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nsh-flags1"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-np":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nsh-np1"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-ttl":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nsh-ttl1"},"openflowplugin-extension-nicira-match:nxm-nx-tun-id":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-tun-id1"},"openflowplugin-extension-nicira-match:nxm-nx-nsi":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nsi1"},"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-src":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-ct-tp-src1"},"openflowplugin-extension-nicira-match:nxm-of-tcp-dst":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-tcp-dst1"},"openflowplugin-extension-nicira-match:nxm-of-ip-dst":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-ip-dst1"},"openflowplugin-extension-nicira-match:nxm-of-udp-src":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-udp-src1"},"openflowplugin-extension-nicira-match:nxm-of-eth-dst":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-eth-dst1"},"openflowplugin-extension-nicira-match:nxm-nx-nsp":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nsp1"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-mdtype":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nsh-mdtype1"},"openflowplugin-extension-nicira-match:nxm-nx-ct-state":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-ct-state1"},"openflowplugin-extension-nicira-match:nxm-nx-reg":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-reg1"},"openflowplugin-extension-nicira-match:nxm-nx-ct-zone":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-ct-zone1"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-2":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nshc-21"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-3":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nshc-31"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-1":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nshc-11"},"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-src":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-tun-ipv4-src1"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-4":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-nshc-41"},"openflowplugin-extension-nicira-match:nxm-nx-pkt-mark":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-pkt-mark1"},"openflowplugin-extension-nicira-match:nxm-of-arp-op":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-arp-op1"},"openflowplugin-extension-nicira-match:nxm-nx-arp-tha":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-arp-tha1"},"openflowplugin-extension-nicira-match:nxm-nx-arp-sha":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-arp-sha1"},"openflowplugin-extension-nicira-match:nxm-of-tcp-src":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-tcp-src1"},"openflowplugin-extension-nicira-match:nxm-of-arp-tpa":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-arp-tpa1"},"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-dst":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-ct-tp-dst1"},"openflowplugin-extension-nicira-match:nxm-of-arp-spa":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-arp-spa1"},"openflowplugin-extension-nicira-match:nxm-of-ip-src":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-ip-src1"},"openflowplugin-extension-nicira-match:of-in-port":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_of-in-port1"},"openflowplugin-extension-nicira-match:nxm-of-udp-dst":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-udp-dst1"},"openflowplugin-extension-nicira-match:nxm-of-eth-src":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-eth-src1"},"openflowplugin-extension-nicira-match:nxm-of-eth-type":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-eth-type1"},"openflowplugin-extension-nicira-match:nxm-of-icmp-type":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-of-icmp-type1"},"openflowplugin-extension-nicira-match:nxm-nx-ct-mark":{"$ref":"#/components/schemas/sal-flow_match_extension-list_extension_nxm-nx-ct-mark1"}},"xml":{"name":"extension","namespace":"urn:opendaylight:openflowplugin:extension:general"}},"sal-flow_match_extension-list_extension_nxm-nx-reg1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-reg","type":"object","properties":{"reg":{"description":"","type":"string","enum":["nxm-nx-reg","nxm-nx-reg1","nxm-nx-reg4","nxm-nx-reg6","nxm-nx-reg7","nxm-nx-reg5","nxm-nx-reg2","nxm-nx-reg3","nxm-nx-reg0"],"example":"nxm-nx-reg"},"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-reg","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-tun-id1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-tun-id","type":"object","properties":{"value":{"description":"","type":"integer","example":0}},"xml":{"name":"nxm-nx-tun-id","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-arp-sha1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-arp-sha","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-arp-sha","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-arp-tha1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-arp-tha","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-arp-tha","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-arp-op1":{"title":"sal-flow_match_extension-list_extension_nxm-of-arp-op","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-arp-op","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-arp-spa1":{"title":"sal-flow_match_extension-list_extension_nxm-of-arp-spa","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-arp-spa","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_of-in-port1":{"title":"sal-flow_match_extension-list_extension_of-in-port","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"of-in-port","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-tcp-src1":{"title":"sal-flow_match_extension-list_extension_nxm-of-tcp-src","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-tcp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-tcp-dst1":{"title":"sal-flow_match_extension-list_extension_nxm-of-tcp-dst","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-tcp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-udp-src1":{"title":"sal-flow_match_extension-list_extension_nxm-of-udp-src","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-udp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-udp-dst1":{"title":"sal-flow_match_extension-list_extension_nxm-of-udp-dst","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-udp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-arp-tpa1":{"title":"sal-flow_match_extension-list_extension_nxm-of-arp-tpa","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-arp-tpa","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-tun-ipv4-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-tun-ipv4-src1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-tun-ipv4-src","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-tun-ipv4-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-eth-src1":{"title":"sal-flow_match_extension-list_extension_nxm-of-eth-src","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-eth-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-eth-dst1":{"title":"sal-flow_match_extension-list_extension_nxm-of-eth-dst","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-eth-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-eth-type1":{"title":"sal-flow_match_extension-list_extension_nxm-of-eth-type","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-eth-type","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nsp1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nsp","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nsp","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nsi1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nsi","type":"object","properties":{"nsi":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsi","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nshc-11":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nshc-1","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-1","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nshc-21":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nshc-2","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-2","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nshc-31":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nshc-3","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-3","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nshc-41":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nshc-4","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-4","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-ct-state1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-ct-state","type":"object","properties":{"ct-state":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-ct-state","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-ct-zone1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-ct-zone","type":"object","properties":{"ct-zone":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-zone","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-ip-dst1":{"title":"sal-flow_match_extension-list_extension_nxm-of-ip-dst","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-ip-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-ip-src1":{"title":"sal-flow_match_extension-list_extension_nxm-of-ip-src","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-ip-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-of-icmp-type1":{"title":"sal-flow_match_extension-list_extension_nxm-of-icmp-type","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-icmp-type","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nsh-flags1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nsh-flags","type":"object","properties":{"nsh-flags":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-flags","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nsh-mdtype1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nsh-mdtype","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-mdtype","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nsh-np1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nsh-np","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-np","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-nsh-ttl1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-nsh-ttl","type":"object","properties":{"nsh-ttl":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-ttl","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-ct-mark1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-ct-mark","type":"object","properties":{"ct-mark":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-ct-mark","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-ct-tp-src1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-ct-tp-src","type":"object","properties":{"ct-tp-src":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-tp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-ct-tp-dst1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-ct-tp-dst","type":"object","properties":{"ct-tp-dst":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-tp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_match_extension-list_extension_nxm-nx-pkt-mark1":{"title":"sal-flow_match_extension-list_extension_nxm-nx-pkt-mark","type":"object","properties":{"pkt-mark":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-pkt-mark","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_instructions1":{"title":"sal-flow_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/sal-flow_instructions_instruction1"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flow:service"}},"sal-flow_instructions_instruction1":{"title":"sal-flow_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/sal-flow_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flow:service"}},"sal-flow_remove-flow_output":{"title":"sal-flow_remove-flow_output","type":"object","properties":{"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:flow:service"}},"sal-flow_update-flow_input":{"title":"sal-flow_update-flow_input","type":"object","properties":{"transaction-uri":{"description":"","type":"string","example":"Some transaction-uri"},"flow-ref":{"description":"","type":"string"},"original-flow":{"$ref":"#/components/schemas/sal-flow_original-flow"},"updated-flow":{"$ref":"#/components/schemas/sal-flow_updated-flow"},"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow":{"title":"sal-flow_original-flow","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/sal-flow_original-flow_instructions"},"cookie":{"description":"","type":"integer","example":0},"match":{"$ref":"#/components/schemas/sal-flow_original-flow_match"},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"container-name":{"description":"","type":"string","example":"Some container-name"},"out_group":{"description":"","type":"integer","format":"int64","example":0},"priority":{"description":"","type":"integer","format":"int32","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0},"cookie_mask":{"description":"","type":"integer","example":0},"out_port":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"strict":{"description":"","type":"boolean","default":false,"example":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"}},"xml":{"name":"original-flow","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match":{"title":"sal-flow_original-flow_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/sal-flow_original-flow_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/sal-flow_original-flow_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/sal-flow_original-flow_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/sal-flow_original-flow_match_ethernet-match"},"openflowplugin-extension-general:extension-list":{"type":"array","items":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list"},"description":""},"packet-type-match":{"$ref":"#/components/schemas/sal-flow_original-flow_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/sal-flow_original-flow_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/sal-flow_original-flow_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/sal-flow_original-flow_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/sal-flow_original-flow_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/sal-flow_original-flow_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_packet-type-match":{"title":"sal-flow_original-flow_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_metadata":{"title":"sal-flow_original-flow_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_tunnel":{"title":"sal-flow_original-flow_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_ethernet-match":{"title":"sal-flow_original-flow_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/sal-flow_original-flow_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/sal-flow_original-flow_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/sal-flow_original-flow_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_ethernet-match_ethernet-source":{"title":"sal-flow_original-flow_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_ethernet-match_ethernet-destination":{"title":"sal-flow_original-flow_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_ethernet-match_ethernet-type":{"title":"sal-flow_original-flow_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_vlan-match":{"title":"sal-flow_original-flow_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/sal-flow_original-flow_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_vlan-match_vlan-id":{"title":"sal-flow_original-flow_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_ip-match":{"title":"sal-flow_original-flow_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_icmpv4-match":{"title":"sal-flow_original-flow_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_icmpv6-match":{"title":"sal-flow_original-flow_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_protocol-match-fields":{"title":"sal-flow_original-flow_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/sal-flow_original-flow_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_protocol-match-fields_pbb":{"title":"sal-flow_original-flow_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_tcp-flags-match":{"title":"sal-flow_original-flow_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_match_extension-list":{"title":"sal-flow_original-flow_match_extension-list","type":"object","properties":{"extension":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension"},"extension-key":{"description":"","type":"string","enum":["extension-key","nxm-nx-tun-ipv4-dst-key","nxm-of-eth-dst-key","nxm-of-tcp-dst-key","nxm-of-icmp-type-key","nxm-of-eth-type-key","nxm-nx-ct-mark-key","nxm-nx-nshc-3-key","nxm-nx-ct-tp-src-key","nxm-nx-reg0-key","nxm-nx-pkt-mark-key","nxm-nx-reg4-key","nxm-nx-reg7-key","nxm-nx-nshc-2-key","nxm-of-ip-dst-key","nxm-nx-reg3-key","nx-action-reg-move-key","nxm-of-arp-op-key","nxm-nx-tun-ipv4-src-key","nxm-of-udp-src-key","nxm-nx-arp-tha-key","nxm-nx-nsh-mdtype-key","nxm-nx-nsi-key","nxm-of-in-port-key","nxm-nx-nsp-key","nx-action-reg-load-key","nxm-nx-reg5-key","nxm-nx-nshc-1-key","nxm-nx-arp-sha-key","nxm-nx-nsh-ttl-key","nxm-of-tcp-src-key","nxm-nx-nsh-np-key","nxm-of-ip-src-key","nxm-nx-nsh-flags-key","nxm-nx-ct-state-key","nxm-nx-reg1-key","nxm-nx-ct-zone-key","nxm-nx-reg6-key","nxm-of-arp-tpa-key","nxm-nx-reg2-key","nxm-nx-nshc-4-key","nxm-nx-ct-tp-dst-key","nxm-nx-tun-id-key","nxm-of-arp-spa-key","nxm-of-udp-dst-key","nxm-of-eth-src-key"],"example":"extension-key"}},"xml":{"name":"extension-list","namespace":"urn:opendaylight:openflowplugin:extension:general"}},"sal-flow_original-flow_match_extension-list_extension":{"title":"sal-flow_original-flow_match_extension-list_extension","type":"object","description":"A vendor has to augment this container.","properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-dst":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-flags":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsh-flags"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-np":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsh-np"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-ttl":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsh-ttl"},"openflowplugin-extension-nicira-match:nxm-nx-tun-id":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-tun-id"},"openflowplugin-extension-nicira-match:nxm-nx-nsi":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsi"},"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-src":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-tp-src"},"openflowplugin-extension-nicira-match:nxm-of-tcp-dst":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-of-tcp-dst"},"openflowplugin-extension-nicira-match:nxm-of-ip-dst":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-of-ip-dst"},"openflowplugin-extension-nicira-match:nxm-of-udp-src":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-of-udp-src"},"openflowplugin-extension-nicira-match:nxm-of-eth-dst":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-of-eth-dst"},"openflowplugin-extension-nicira-match:nxm-nx-nsp":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsp"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-mdtype":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsh-mdtype"},"openflowplugin-extension-nicira-match:nxm-nx-ct-state":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-state"},"openflowplugin-extension-nicira-match:nxm-nx-reg":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-reg"},"openflowplugin-extension-nicira-match:nxm-nx-ct-zone":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-zone"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-2":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-nshc-2"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-3":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-nshc-3"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-1":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-nshc-1"},"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-src":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-tun-ipv4-src"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-4":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-nshc-4"},"openflowplugin-extension-nicira-match:nxm-nx-pkt-mark":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-pkt-mark"},"openflowplugin-extension-nicira-match:nxm-of-arp-op":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-of-arp-op"},"openflowplugin-extension-nicira-match:nxm-nx-arp-tha":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-arp-tha"},"openflowplugin-extension-nicira-match:nxm-nx-arp-sha":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-arp-sha"},"openflowplugin-extension-nicira-match:nxm-of-tcp-src":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-of-tcp-src"},"openflowplugin-extension-nicira-match:nxm-of-arp-tpa":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-of-arp-tpa"},"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-dst":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-tp-dst"},"openflowplugin-extension-nicira-match:nxm-of-arp-spa":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-of-arp-spa"},"openflowplugin-extension-nicira-match:nxm-of-ip-src":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-of-ip-src"},"openflowplugin-extension-nicira-match:of-in-port":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_of-in-port"},"openflowplugin-extension-nicira-match:nxm-of-udp-dst":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-of-udp-dst"},"openflowplugin-extension-nicira-match:nxm-of-eth-src":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-of-eth-src"},"openflowplugin-extension-nicira-match:nxm-of-eth-type":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-of-eth-type"},"openflowplugin-extension-nicira-match:nxm-of-icmp-type":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-of-icmp-type"},"openflowplugin-extension-nicira-match:nxm-nx-ct-mark":{"$ref":"#/components/schemas/sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-mark"}},"xml":{"name":"extension","namespace":"urn:opendaylight:openflowplugin:extension:general"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-reg":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-reg","type":"object","properties":{"reg":{"description":"","type":"string","enum":["nxm-nx-reg","nxm-nx-reg1","nxm-nx-reg4","nxm-nx-reg6","nxm-nx-reg7","nxm-nx-reg5","nxm-nx-reg2","nxm-nx-reg3","nxm-nx-reg0"],"example":"nxm-nx-reg"},"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-reg","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-tun-id":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-tun-id","type":"object","properties":{"value":{"description":"","type":"integer","example":0}},"xml":{"name":"nxm-nx-tun-id","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-arp-sha":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-arp-sha","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-arp-sha","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-arp-tha":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-arp-tha","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-arp-tha","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-of-arp-op":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-of-arp-op","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-arp-op","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-of-arp-spa":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-of-arp-spa","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-arp-spa","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_of-in-port":{"title":"sal-flow_original-flow_match_extension-list_extension_of-in-port","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"of-in-port","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-of-tcp-src":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-of-tcp-src","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-tcp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-of-tcp-dst":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-of-tcp-dst","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-tcp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-of-udp-src":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-of-udp-src","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-udp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-of-udp-dst":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-of-udp-dst","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-udp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-of-arp-tpa":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-of-arp-tpa","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-arp-tpa","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-tun-ipv4-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-tun-ipv4-src":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-tun-ipv4-src","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-tun-ipv4-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-of-eth-src":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-of-eth-src","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-eth-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-of-eth-dst":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-of-eth-dst","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-eth-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-of-eth-type":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-of-eth-type","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-eth-type","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsp":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsp","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nsp","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsi":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsi","type":"object","properties":{"nsi":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsi","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nshc-1":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nshc-1","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-1","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nshc-2":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nshc-2","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-2","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nshc-3":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nshc-3","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-3","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nshc-4":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nshc-4","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-4","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-state":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-state","type":"object","properties":{"ct-state":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-ct-state","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-zone":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-zone","type":"object","properties":{"ct-zone":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-zone","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-of-ip-dst":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-of-ip-dst","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-ip-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-of-ip-src":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-of-ip-src","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-ip-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-of-icmp-type":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-of-icmp-type","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-icmp-type","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsh-flags":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsh-flags","type":"object","properties":{"nsh-flags":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-flags","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsh-mdtype":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsh-mdtype","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-mdtype","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsh-np":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsh-np","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-np","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsh-ttl":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-nsh-ttl","type":"object","properties":{"nsh-ttl":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-ttl","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-mark":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-mark","type":"object","properties":{"ct-mark":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-ct-mark","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-tp-src":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-tp-src","type":"object","properties":{"ct-tp-src":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-tp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-tp-dst":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-ct-tp-dst","type":"object","properties":{"ct-tp-dst":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-tp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_match_extension-list_extension_nxm-nx-pkt-mark":{"title":"sal-flow_original-flow_match_extension-list_extension_nxm-nx-pkt-mark","type":"object","properties":{"pkt-mark":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-pkt-mark","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_original-flow_instructions":{"title":"sal-flow_original-flow_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/sal-flow_original-flow_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_instructions_instruction":{"title":"sal-flow_original-flow_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/sal-flow_original-flow_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flow:service"}},"sal-flow_original-flow_instructions_instruction_go-to-table":{"title":"sal-flow_original-flow_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow":{"title":"sal-flow_updated-flow","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/sal-flow_updated-flow_instructions"},"cookie":{"description":"","type":"integer","example":0},"match":{"$ref":"#/components/schemas/sal-flow_updated-flow_match"},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"container-name":{"description":"","type":"string","example":"Some container-name"},"out_group":{"description":"","type":"integer","format":"int64","example":0},"priority":{"description":"","type":"integer","format":"int32","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0},"cookie_mask":{"description":"","type":"integer","example":0},"out_port":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"strict":{"description":"","type":"boolean","default":false,"example":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"}},"xml":{"name":"updated-flow","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match":{"title":"sal-flow_updated-flow_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_ethernet-match"},"openflowplugin-extension-general:extension-list":{"type":"array","items":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list"},"description":""},"packet-type-match":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_packet-type-match":{"title":"sal-flow_updated-flow_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_metadata":{"title":"sal-flow_updated-flow_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_tunnel":{"title":"sal-flow_updated-flow_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_ethernet-match":{"title":"sal-flow_updated-flow_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_ethernet-match_ethernet-source":{"title":"sal-flow_updated-flow_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_ethernet-match_ethernet-destination":{"title":"sal-flow_updated-flow_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_ethernet-match_ethernet-type":{"title":"sal-flow_updated-flow_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_vlan-match":{"title":"sal-flow_updated-flow_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_vlan-match_vlan-id":{"title":"sal-flow_updated-flow_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_ip-match":{"title":"sal-flow_updated-flow_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_icmpv4-match":{"title":"sal-flow_updated-flow_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_icmpv6-match":{"title":"sal-flow_updated-flow_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_protocol-match-fields":{"title":"sal-flow_updated-flow_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_protocol-match-fields_pbb":{"title":"sal-flow_updated-flow_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_tcp-flags-match":{"title":"sal-flow_updated-flow_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_match_extension-list":{"title":"sal-flow_updated-flow_match_extension-list","type":"object","properties":{"extension":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension"},"extension-key":{"description":"","type":"string","enum":["extension-key","nxm-nx-tun-ipv4-dst-key","nxm-of-eth-dst-key","nxm-of-tcp-dst-key","nxm-of-icmp-type-key","nxm-of-eth-type-key","nxm-nx-ct-mark-key","nxm-nx-nshc-3-key","nxm-nx-ct-tp-src-key","nxm-nx-reg0-key","nxm-nx-pkt-mark-key","nxm-nx-reg4-key","nxm-nx-reg7-key","nxm-nx-nshc-2-key","nxm-of-ip-dst-key","nxm-nx-reg3-key","nx-action-reg-move-key","nxm-of-arp-op-key","nxm-nx-tun-ipv4-src-key","nxm-of-udp-src-key","nxm-nx-arp-tha-key","nxm-nx-nsh-mdtype-key","nxm-nx-nsi-key","nxm-of-in-port-key","nxm-nx-nsp-key","nx-action-reg-load-key","nxm-nx-reg5-key","nxm-nx-nshc-1-key","nxm-nx-arp-sha-key","nxm-nx-nsh-ttl-key","nxm-of-tcp-src-key","nxm-nx-nsh-np-key","nxm-of-ip-src-key","nxm-nx-nsh-flags-key","nxm-nx-ct-state-key","nxm-nx-reg1-key","nxm-nx-ct-zone-key","nxm-nx-reg6-key","nxm-of-arp-tpa-key","nxm-nx-reg2-key","nxm-nx-nshc-4-key","nxm-nx-ct-tp-dst-key","nxm-nx-tun-id-key","nxm-of-arp-spa-key","nxm-of-udp-dst-key","nxm-of-eth-src-key"],"example":"extension-key"}},"xml":{"name":"extension-list","namespace":"urn:opendaylight:openflowplugin:extension:general"}},"sal-flow_updated-flow_match_extension-list_extension":{"title":"sal-flow_updated-flow_match_extension-list_extension","type":"object","description":"A vendor has to augment this container.","properties":{"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-dst":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-flags":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsh-flags"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-np":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsh-np"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-ttl":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsh-ttl"},"openflowplugin-extension-nicira-match:nxm-nx-tun-id":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-tun-id"},"openflowplugin-extension-nicira-match:nxm-nx-nsi":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsi"},"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-src":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-tp-src"},"openflowplugin-extension-nicira-match:nxm-of-tcp-dst":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-of-tcp-dst"},"openflowplugin-extension-nicira-match:nxm-of-ip-dst":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-of-ip-dst"},"openflowplugin-extension-nicira-match:nxm-of-udp-src":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-of-udp-src"},"openflowplugin-extension-nicira-match:nxm-of-eth-dst":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-of-eth-dst"},"openflowplugin-extension-nicira-match:nxm-nx-nsp":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsp"},"openflowplugin-extension-nicira-match:nxm-nx-nsh-mdtype":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsh-mdtype"},"openflowplugin-extension-nicira-match:nxm-nx-ct-state":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-state"},"openflowplugin-extension-nicira-match:nxm-nx-reg":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-reg"},"openflowplugin-extension-nicira-match:nxm-nx-ct-zone":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-zone"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-2":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nshc-2"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-3":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nshc-3"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-1":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nshc-1"},"openflowplugin-extension-nicira-match:nxm-nx-tun-ipv4-src":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-tun-ipv4-src"},"openflowplugin-extension-nicira-match:nxm-nx-nshc-4":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nshc-4"},"openflowplugin-extension-nicira-match:nxm-nx-pkt-mark":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-pkt-mark"},"openflowplugin-extension-nicira-match:nxm-of-arp-op":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-of-arp-op"},"openflowplugin-extension-nicira-match:nxm-nx-arp-tha":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-arp-tha"},"openflowplugin-extension-nicira-match:nxm-nx-arp-sha":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-arp-sha"},"openflowplugin-extension-nicira-match:nxm-of-tcp-src":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-of-tcp-src"},"openflowplugin-extension-nicira-match:nxm-of-arp-tpa":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-of-arp-tpa"},"openflowplugin-extension-nicira-match:nxm-nx-ct-tp-dst":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-tp-dst"},"openflowplugin-extension-nicira-match:nxm-of-arp-spa":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-of-arp-spa"},"openflowplugin-extension-nicira-match:nxm-of-ip-src":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-of-ip-src"},"openflowplugin-extension-nicira-match:of-in-port":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_of-in-port"},"openflowplugin-extension-nicira-match:nxm-of-udp-dst":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-of-udp-dst"},"openflowplugin-extension-nicira-match:nxm-of-eth-src":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-of-eth-src"},"openflowplugin-extension-nicira-match:nxm-of-eth-type":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-of-eth-type"},"openflowplugin-extension-nicira-match:nxm-of-icmp-type":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-of-icmp-type"},"openflowplugin-extension-nicira-match:nxm-nx-ct-mark":{"$ref":"#/components/schemas/sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-mark"}},"xml":{"name":"extension","namespace":"urn:opendaylight:openflowplugin:extension:general"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-reg":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-reg","type":"object","properties":{"reg":{"description":"","type":"string","enum":["nxm-nx-reg","nxm-nx-reg1","nxm-nx-reg4","nxm-nx-reg6","nxm-nx-reg7","nxm-nx-reg5","nxm-nx-reg2","nxm-nx-reg3","nxm-nx-reg0"],"example":"nxm-nx-reg"},"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-reg","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-tun-id":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-tun-id","type":"object","properties":{"value":{"description":"","type":"integer","example":0}},"xml":{"name":"nxm-nx-tun-id","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-arp-sha":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-arp-sha","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-arp-sha","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-arp-tha":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-arp-tha","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-arp-tha","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-of-arp-op":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-of-arp-op","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-arp-op","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-of-arp-spa":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-of-arp-spa","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-arp-spa","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_of-in-port":{"title":"sal-flow_updated-flow_match_extension-list_extension_of-in-port","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"of-in-port","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-of-tcp-src":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-of-tcp-src","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-tcp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-of-tcp-dst":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-of-tcp-dst","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-tcp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-of-udp-src":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-of-udp-src","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-udp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-of-udp-dst":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-of-udp-dst","type":"object","properties":{"port":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-udp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-of-arp-tpa":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-of-arp-tpa","type":"object","description":"Prereqs: NXM_OF_ETH_TYPE must match either 0x0806 or 0x8035.","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-arp-tpa","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-tun-ipv4-dst","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-tun-ipv4-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-tun-ipv4-src":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-tun-ipv4-src","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-nx-tun-ipv4-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-of-eth-src":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-of-eth-src","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-eth-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-of-eth-dst":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-of-eth-dst","type":"object","properties":{"mac-address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-eth-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-of-eth-type":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-of-eth-type","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-eth-type","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsp":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsp","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nsp","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsi":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsi","type":"object","properties":{"nsi":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsi","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nshc-1":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nshc-1","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-1","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nshc-2":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nshc-2","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-2","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nshc-3":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nshc-3","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-3","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nshc-4":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nshc-4","type":"object","properties":{"value":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-nshc-4","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-state":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-state","type":"object","properties":{"ct-state":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-ct-state","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-zone":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-zone","type":"object","properties":{"ct-zone":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-zone","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-of-ip-dst":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-of-ip-dst","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-ip-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-of-ip-src":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-of-ip-src","type":"object","properties":{"ipv4-address":{"description":"","type":"string","example":"0.0.0.0","minLength":0,"maxLength":2147483647}},"xml":{"name":"nxm-of-ip-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-of-icmp-type":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-of-icmp-type","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-of-icmp-type","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsh-flags":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsh-flags","type":"object","properties":{"nsh-flags":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-flags","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsh-mdtype":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsh-mdtype","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-mdtype","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsh-np":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsh-np","type":"object","properties":{"value":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-np","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsh-ttl":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-nsh-ttl","type":"object","properties":{"nsh-ttl":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-nsh-ttl","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-mark":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-mark","type":"object","properties":{"ct-mark":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-ct-mark","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-tp-src":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-tp-src","type":"object","properties":{"ct-tp-src":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-tp-src","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-tp-dst":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-ct-tp-dst","type":"object","properties":{"ct-tp-dst":{"description":"","type":"integer","format":"int32","example":0},"mask":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"nxm-nx-ct-tp-dst","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-pkt-mark":{"title":"sal-flow_updated-flow_match_extension-list_extension_nxm-nx-pkt-mark","type":"object","properties":{"pkt-mark":{"description":"","type":"integer","format":"int64","example":0},"mask":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"nxm-nx-pkt-mark","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match"}},"sal-flow_updated-flow_instructions":{"title":"sal-flow_updated-flow_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/sal-flow_updated-flow_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_instructions_instruction":{"title":"sal-flow_updated-flow_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/sal-flow_updated-flow_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flow:service"}},"sal-flow_updated-flow_instructions_instruction_go-to-table":{"title":"sal-flow_updated-flow_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:flow:service"}},"sal-flow_update-flow_output":{"title":"sal-flow_update-flow_output","type":"object","properties":{"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:flow:service"}},"sal-flows-batch_add-flows-batch_input":{"title":"sal-flows-batch_add-flows-batch_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"batch-add-flows":{"type":"array","items":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows"},"description":""},"barrier-after":{"description":"","type":"boolean","example":true}},"xml":{"name":"input","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows":{"title":"sal-flows-batch_batch-add-flows","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_instructions"},"flow-id":{"description":"","type":"string","example":"Some flow-id"},"cookie":{"description":"","type":"integer","example":0},"match":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match"},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"container-name":{"description":"","type":"string","example":"Some container-name"},"out_group":{"description":"","type":"integer","format":"int64","example":0},"priority":{"description":"","type":"integer","format":"int32","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0},"cookie_mask":{"description":"","type":"integer","example":0},"out_port":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"strict":{"description":"","type":"boolean","default":false,"example":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"}},"xml":{"name":"batch-add-flows","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match":{"title":"sal-flows-batch_batch-add-flows_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_ethernet-match"},"packet-type-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_packet-type-match":{"title":"sal-flows-batch_batch-add-flows_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_metadata":{"title":"sal-flows-batch_batch-add-flows_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_tunnel":{"title":"sal-flows-batch_batch-add-flows_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_ethernet-match":{"title":"sal-flows-batch_batch-add-flows_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_ethernet-match_ethernet-source":{"title":"sal-flows-batch_batch-add-flows_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_ethernet-match_ethernet-destination":{"title":"sal-flows-batch_batch-add-flows_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_ethernet-match_ethernet-type":{"title":"sal-flows-batch_batch-add-flows_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_vlan-match":{"title":"sal-flows-batch_batch-add-flows_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_vlan-match_vlan-id":{"title":"sal-flows-batch_batch-add-flows_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_ip-match":{"title":"sal-flows-batch_batch-add-flows_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_icmpv4-match":{"title":"sal-flows-batch_batch-add-flows_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_icmpv6-match":{"title":"sal-flows-batch_batch-add-flows_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_protocol-match-fields":{"title":"sal-flows-batch_batch-add-flows_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_protocol-match-fields_pbb":{"title":"sal-flows-batch_batch-add-flows_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_match_tcp-flags-match":{"title":"sal-flows-batch_batch-add-flows_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_instructions":{"title":"sal-flows-batch_batch-add-flows_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_instructions_instruction":{"title":"sal-flows-batch_batch-add-flows_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/sal-flows-batch_batch-add-flows_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-add-flows_instructions_instruction_go-to-table":{"title":"sal-flows-batch_batch-add-flows_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_add-flows-batch_output":{"title":"sal-flows-batch_add-flows-batch_output","type":"object","properties":{"batch-failed-flows-output":{"type":"array","items":{"$ref":"#/components/schemas/sal-flows-batch_batch-failed-flows-output"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-failed-flows-output":{"title":"sal-flows-batch_batch-failed-flows-output","type":"object","properties":{"batch-order":{"description":"","type":"integer","format":"int32","example":0},"flow-id":{"description":"","type":"string","example":"Some flow-id"}},"xml":{"name":"batch-failed-flows-output","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_remove-flows-batch_input":{"title":"sal-flows-batch_remove-flows-batch_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"batch-remove-flows":{"type":"array","items":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows"},"description":""},"barrier-after":{"description":"","type":"boolean","example":true}},"xml":{"name":"input","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows":{"title":"sal-flows-batch_batch-remove-flows","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_instructions"},"flow-id":{"description":"","type":"string","example":"Some flow-id"},"cookie":{"description":"","type":"integer","example":0},"match":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match"},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"container-name":{"description":"","type":"string","example":"Some container-name"},"out_group":{"description":"","type":"integer","format":"int64","example":0},"priority":{"description":"","type":"integer","format":"int32","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0},"cookie_mask":{"description":"","type":"integer","example":0},"out_port":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"strict":{"description":"","type":"boolean","default":false,"example":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"}},"xml":{"name":"batch-remove-flows","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match":{"title":"sal-flows-batch_batch-remove-flows_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_ethernet-match"},"packet-type-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_packet-type-match":{"title":"sal-flows-batch_batch-remove-flows_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_metadata":{"title":"sal-flows-batch_batch-remove-flows_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_tunnel":{"title":"sal-flows-batch_batch-remove-flows_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_ethernet-match":{"title":"sal-flows-batch_batch-remove-flows_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_ethernet-match_ethernet-source":{"title":"sal-flows-batch_batch-remove-flows_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_ethernet-match_ethernet-destination":{"title":"sal-flows-batch_batch-remove-flows_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_ethernet-match_ethernet-type":{"title":"sal-flows-batch_batch-remove-flows_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_vlan-match":{"title":"sal-flows-batch_batch-remove-flows_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_vlan-match_vlan-id":{"title":"sal-flows-batch_batch-remove-flows_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_ip-match":{"title":"sal-flows-batch_batch-remove-flows_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_icmpv4-match":{"title":"sal-flows-batch_batch-remove-flows_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_icmpv6-match":{"title":"sal-flows-batch_batch-remove-flows_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_protocol-match-fields":{"title":"sal-flows-batch_batch-remove-flows_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_protocol-match-fields_pbb":{"title":"sal-flows-batch_batch-remove-flows_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_match_tcp-flags-match":{"title":"sal-flows-batch_batch-remove-flows_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_instructions":{"title":"sal-flows-batch_batch-remove-flows_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_instructions_instruction":{"title":"sal-flows-batch_batch-remove-flows_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/sal-flows-batch_batch-remove-flows_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-remove-flows_instructions_instruction_go-to-table":{"title":"sal-flows-batch_batch-remove-flows_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_remove-flows-batch_output":{"title":"sal-flows-batch_remove-flows-batch_output","type":"object","properties":{"batch-failed-flows-output":{"type":"array","items":{"$ref":"#/components/schemas/sal-flows-batch_batch-failed-flows-output"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_update-flows-batch_input":{"title":"sal-flows-batch_update-flows-batch_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"batch-update-flows":{"type":"array","items":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows"},"description":""},"barrier-after":{"description":"","type":"boolean","example":true}},"xml":{"name":"input","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows":{"title":"sal-flows-batch_batch-update-flows","type":"object","properties":{"updated-batched-flow":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow"},"flow-id":{"description":"","type":"string","example":"Some flow-id"},"original-batched-flow":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow"}},"xml":{"name":"batch-update-flows","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_instructions"},"cookie":{"description":"","type":"integer","example":0},"match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match"},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"container-name":{"description":"","type":"string","example":"Some container-name"},"out_group":{"description":"","type":"integer","format":"int64","example":0},"priority":{"description":"","type":"integer","format":"int32","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0},"cookie_mask":{"description":"","type":"integer","example":0},"out_port":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"strict":{"description":"","type":"boolean","default":false,"example":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"}},"xml":{"name":"original-batched-flow","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_ethernet-match"},"packet-type-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_packet-type-match":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_metadata":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_tunnel":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_ethernet-match":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_ethernet-match_ethernet-source":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_ethernet-match_ethernet-destination":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_ethernet-match_ethernet-type":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_vlan-match":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_vlan-match_vlan-id":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_ip-match":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_icmpv4-match":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_icmpv6-match":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_protocol-match-fields":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_protocol-match-fields_pbb":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_match_tcp-flags-match":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_instructions":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_instructions_instruction":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_original-batched-flow_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_original-batched-flow_instructions_instruction_go-to-table":{"title":"sal-flows-batch_batch-update-flows_original-batched-flow_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_instructions"},"cookie":{"description":"","type":"integer","example":0},"match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match"},"flags":{"description":"","type":"string","enum":["CHECK_OVERLAP","RESET_COUNTS","NO_PKT_COUNTS","NO_BYT_COUNTS","SEND_FLOW_REM"],"minItems":0,"default":"CHECK_OVERLAP SEND_FLOW_REM","uniqueItems":true},"container-name":{"description":"","type":"string","example":"Some container-name"},"out_group":{"description":"","type":"integer","format":"int64","example":0},"priority":{"description":"","type":"integer","format":"int32","example":0},"table_id":{"description":"","type":"integer","format":"int32","example":0},"cookie_mask":{"description":"","type":"integer","example":0},"out_port":{"description":"","type":"integer","example":0},"buffer_id":{"description":"","type":"integer","format":"int64","example":0},"installHw":{"description":"","type":"boolean","example":true},"barrier":{"description":"","type":"boolean","example":true},"hard-timeout":{"description":"","type":"integer","format":"int32","example":0},"idle-timeout":{"description":"","type":"integer","format":"int32","example":0},"strict":{"description":"","type":"boolean","default":false,"example":true},"flow-name":{"description":"","type":"string","example":"Some flow-name"}},"xml":{"name":"updated-batched-flow","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match","type":"object","properties":{"metadata":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_metadata"},"udp-source-port":{"description":"UDP source port.","type":"integer","format":"int32","example":0},"udp-source-port-mask":{"description":"UDP source port mask.","type":"integer","format":"int32","example":0},"udp-destination-port":{"description":"UDP destination port.","type":"integer","format":"int32","example":0},"udp-destination-port-mask":{"description":"UDP destination port mask.","type":"integer","format":"int32","example":0},"ipv4-source":{"description":"IPv4 source address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"ipv4-destination":{"description":"IPv4 destination address.","type":"string","example":"0.0.0.0/0","minLength":0,"maxLength":2147483647},"icmpv6-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_icmpv6-match"},"vlan-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_vlan-match"},"in-phy-port":{"description":"","type":"string","example":"Some in-phy-port"},"ethernet-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_ethernet-match"},"packet-type-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_packet-type-match"},"ip-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_ip-match"},"protocol-match-fields":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_protocol-match-fields"},"tcp-flags-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_tcp-flags-match"},"icmpv4-match":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_icmpv4-match"},"in-port":{"description":"","type":"string","example":"Some in-port"},"tunnel":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_tunnel"}},"xml":{"name":"match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_packet-type-match":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_packet-type-match","type":"object","properties":{"packet-type":{"description":"Outermost header type of a packet. It's a 4 byte\n value, the 2 most significant bytes are the\n namespace and the next 2 bytes are the type.","type":"integer","format":"int64","example":0}},"xml":{"name":"packet-type-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_metadata":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_metadata","type":"object","properties":{"metadata":{"description":"","type":"integer","example":0},"metadata-mask":{"description":"","type":"integer","example":0}},"xml":{"name":"metadata","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_tunnel":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_tunnel","type":"object","properties":{"tunnel-mask":{"description":"","type":"integer","example":0},"tunnel-id":{"description":"Metadata associated in the logical port","type":"integer","example":0}},"xml":{"name":"tunnel","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_ethernet-match":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_ethernet-match","type":"object","properties":{"ethernet-type":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_ethernet-match_ethernet-type"},"ethernet-source":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_ethernet-match_ethernet-source"},"ethernet-destination":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_ethernet-match_ethernet-destination"}},"xml":{"name":"ethernet-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_ethernet-match_ethernet-source":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_ethernet-match_ethernet-source","type":"object","description":"Ethernet source address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-source","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_ethernet-match_ethernet-destination":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_ethernet-match_ethernet-destination","type":"object","description":"Ethernet destination address.","properties":{"address":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"mask":{"description":"","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647}},"required":["address"],"xml":{"name":"ethernet-destination","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_ethernet-match_ethernet-type":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_ethernet-match_ethernet-type","type":"object","description":"Ethernet frame type.","properties":{"type":{"description":"","type":"integer","format":"int64","example":0}},"required":["type"],"xml":{"name":"ethernet-type","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_vlan-match":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_vlan-match","type":"object","properties":{"vlan-id":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_vlan-match_vlan-id"},"vlan-pcp":{"description":"VLAN priority.","type":"integer","format":"int32","example":0}},"xml":{"name":"vlan-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_vlan-match_vlan-id":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_vlan-match_vlan-id","type":"object","description":"VLAN id.","properties":{"vlan-id":{"description":"","type":"integer","format":"int32","example":0},"vlan-id-present":{"description":"","type":"boolean","example":true}},"xml":{"name":"vlan-id","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_ip-match":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_ip-match","type":"object","properties":{"ip-dscp":{"description":"IP DSCP (6 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-ecn":{"description":"IP ECN (2 bits in ToS field).","type":"integer","format":"int32","example":0},"ip-proto":{"description":"IP Proto (IPv4 or IPv6 Protocol Number).","type":"string","enum":["unknown","ipv4","ipv6"],"example":"unknown"},"ip-protocol":{"description":"IP protocol.","type":"integer","format":"int32","example":0}},"xml":{"name":"ip-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_icmpv4-match":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_icmpv4-match","type":"object","properties":{"icmpv4-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv4-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv4-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_icmpv6-match":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_icmpv6-match","type":"object","properties":{"icmpv6-code":{"description":"","type":"integer","format":"int32","example":0},"icmpv6-type":{"description":"ICMP type.","type":"integer","format":"int32","example":0}},"xml":{"name":"icmpv6-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_protocol-match-fields":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_protocol-match-fields","type":"object","properties":{"pbb":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_match_protocol-match-fields_pbb"},"mpls-label":{"description":"Label in the first MPLS shim header","type":"integer","format":"int64","example":0},"mpls-bos":{"description":"BoS bit in the first MPLS shim header","type":"integer","format":"int32","example":0},"mpls-tc":{"description":"TC in the first MPLS shim header","type":"integer","format":"int32","example":0}},"xml":{"name":"protocol-match-fields","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_protocol-match-fields_pbb":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_protocol-match-fields_pbb","type":"object","properties":{"pbb-mask":{"description":"","type":"integer","format":"int64","example":0},"pbb-isid":{"description":"I-SID in the first PBB service instance tag","type":"integer","format":"int64","example":0}},"xml":{"name":"pbb","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_match_tcp-flags-match":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_match_tcp-flags-match","type":"object","properties":{"tcp-flags":{"description":"Tcp flags for match","type":"integer","format":"int32","example":0},"tcp-flags-mask":{"description":"Mask for tcp flags","type":"integer","format":"int32","example":0}},"xml":{"name":"tcp-flags-match","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_instructions":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_instructions_instruction":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/sal-flows-batch_batch-update-flows_updated-batched-flow_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_batch-update-flows_updated-batched-flow_instructions_instruction_go-to-table":{"title":"sal-flows-batch_batch-update-flows_updated-batched-flow_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:flows:service"}},"sal-flows-batch_update-flows-batch_output":{"title":"sal-flows-batch_update-flows-batch_output","type":"object","properties":{"batch-failed-flows-output":{"type":"array","items":{"$ref":"#/components/schemas/sal-flows-batch_batch-failed-flows-output"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:flows:service"}},"sal-group_add-group_input":{"title":"sal-group_add-group_input","type":"object","properties":{"transaction-uri":{"description":"","type":"string","example":"Some transaction-uri"},"group-ref":{"description":"","type":"string"},"node":{"description":"A reference to a particular node.","type":"string"},"group-type":{"description":"","type":"string","enum":["group-all","group-select","group-indirect","group-ff"],"example":"group-all"},"group-id":{"description":"","type":"integer","format":"int64","example":0},"group-name":{"description":"","type":"string","example":"Some group-name"},"container-name":{"description":"","type":"string","example":"Some container-name"},"barrier":{"description":"","type":"boolean","example":true},"buckets":{"$ref":"#/components/schemas/sal-group_buckets"}},"xml":{"name":"input","namespace":"urn:opendaylight:group:service"}},"sal-group_buckets":{"title":"sal-group_buckets","type":"object","properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/sal-group_buckets_bucket"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:group:service"}},"sal-group_buckets_bucket":{"title":"sal-group_buckets_bucket","type":"object","properties":{"watch_group":{"description":"","type":"integer","format":"int64","example":0},"weight":{"description":"","type":"integer","format":"int32","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/sal-group_buckets_bucket_action"},"description":""},"watch_port":{"description":"","type":"integer","format":"int64","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"bucket","namespace":"urn:opendaylight:group:service"}},"sal-group_buckets_bucket_action":{"title":"sal-group_buckets_bucket_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/sal-group_buckets_bucket_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:group:service"}},"sal-group_buckets_bucket_action_output-action":{"title":"sal-group_buckets_bucket_action_output-action","type":"object","properties":{"output-node-connector":{"description":"","type":"string","example":"Some output-node-connector"},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:group:service"}},"sal-group_add-group_output":{"title":"sal-group_add-group_output","type":"object","properties":{"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:group:service"}},"sal-group_remove-group_input":{"title":"sal-group_remove-group_input","type":"object","properties":{"transaction-uri":{"description":"","type":"string","example":"Some transaction-uri"},"group-ref":{"description":"","type":"string"},"node":{"description":"A reference to a particular node.","type":"string"},"group-type":{"description":"","type":"string","enum":["group-all","group-select","group-indirect","group-ff"],"example":"group-all"},"group-id":{"description":"","type":"integer","format":"int64","example":0},"group-name":{"description":"","type":"string","example":"Some group-name"},"container-name":{"description":"","type":"string","example":"Some container-name"},"barrier":{"description":"","type":"boolean","example":true},"buckets":{"$ref":"#/components/schemas/sal-group_buckets1"}},"xml":{"name":"input","namespace":"urn:opendaylight:group:service"}},"sal-group_buckets1":{"title":"sal-group_buckets","type":"object","properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/sal-group_buckets_bucket1"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:group:service"}},"sal-group_buckets_bucket1":{"title":"sal-group_buckets_bucket","type":"object","properties":{"watch_group":{"description":"","type":"integer","format":"int64","example":0},"weight":{"description":"","type":"integer","format":"int32","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/sal-group_buckets_bucket_action1"},"description":""},"watch_port":{"description":"","type":"integer","format":"int64","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"bucket","namespace":"urn:opendaylight:group:service"}},"sal-group_buckets_bucket_action1":{"title":"sal-group_buckets_bucket_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/sal-group_buckets_bucket_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:group:service"}},"sal-group_remove-group_output":{"title":"sal-group_remove-group_output","type":"object","properties":{"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:group:service"}},"sal-group_update-group_input":{"title":"sal-group_update-group_input","type":"object","properties":{"transaction-uri":{"description":"","type":"string","example":"Some transaction-uri"},"group-ref":{"description":"","type":"string"},"original-group":{"$ref":"#/components/schemas/sal-group_original-group"},"updated-group":{"$ref":"#/components/schemas/sal-group_updated-group"},"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:group:service"}},"sal-group_original-group":{"title":"sal-group_original-group","type":"object","properties":{"barrier":{"description":"","type":"boolean","example":true},"group-id":{"description":"","type":"integer","format":"int64","example":0},"group-name":{"description":"","type":"string","example":"Some group-name"},"buckets":{"$ref":"#/components/schemas/sal-group_original-group_buckets"},"group-type":{"description":"","type":"string","enum":["group-all","group-select","group-indirect","group-ff"],"example":"group-all"},"container-name":{"description":"","type":"string","example":"Some container-name"}},"xml":{"name":"original-group","namespace":"urn:opendaylight:group:service"}},"sal-group_original-group_buckets":{"title":"sal-group_original-group_buckets","type":"object","properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/sal-group_original-group_buckets_bucket"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:group:service"}},"sal-group_original-group_buckets_bucket":{"title":"sal-group_original-group_buckets_bucket","type":"object","properties":{"watch_group":{"description":"","type":"integer","format":"int64","example":0},"weight":{"description":"","type":"integer","format":"int32","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/sal-group_original-group_buckets_bucket_action"},"description":""},"watch_port":{"description":"","type":"integer","format":"int64","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"bucket","namespace":"urn:opendaylight:group:service"}},"sal-group_original-group_buckets_bucket_action":{"title":"sal-group_original-group_buckets_bucket_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/sal-group_original-group_buckets_bucket_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:group:service"}},"sal-group_original-group_buckets_bucket_action_output-action":{"title":"sal-group_original-group_buckets_bucket_action_output-action","type":"object","properties":{"output-node-connector":{"description":"","type":"string","example":"Some output-node-connector"},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:group:service"}},"sal-group_updated-group":{"title":"sal-group_updated-group","type":"object","properties":{"barrier":{"description":"","type":"boolean","example":true},"group-id":{"description":"","type":"integer","format":"int64","example":0},"group-name":{"description":"","type":"string","example":"Some group-name"},"buckets":{"$ref":"#/components/schemas/sal-group_updated-group_buckets"},"group-type":{"description":"","type":"string","enum":["group-all","group-select","group-indirect","group-ff"],"example":"group-all"},"container-name":{"description":"","type":"string","example":"Some container-name"}},"xml":{"name":"updated-group","namespace":"urn:opendaylight:group:service"}},"sal-group_updated-group_buckets":{"title":"sal-group_updated-group_buckets","type":"object","properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/sal-group_updated-group_buckets_bucket"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:group:service"}},"sal-group_updated-group_buckets_bucket":{"title":"sal-group_updated-group_buckets_bucket","type":"object","properties":{"watch_group":{"description":"","type":"integer","format":"int64","example":0},"weight":{"description":"","type":"integer","format":"int32","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/sal-group_updated-group_buckets_bucket_action"},"description":""},"watch_port":{"description":"","type":"integer","format":"int64","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"bucket","namespace":"urn:opendaylight:group:service"}},"sal-group_updated-group_buckets_bucket_action":{"title":"sal-group_updated-group_buckets_bucket_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/sal-group_updated-group_buckets_bucket_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:group:service"}},"sal-group_updated-group_buckets_bucket_action_output-action":{"title":"sal-group_updated-group_buckets_bucket_action_output-action","type":"object","properties":{"output-node-connector":{"description":"","type":"string","example":"Some output-node-connector"},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:group:service"}},"sal-group_update-group_output":{"title":"sal-group_update-group_output","type":"object","properties":{"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:group:service"}},"sal-groups-batch_add-groups-batch_input":{"title":"sal-groups-batch_add-groups-batch_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"batch-add-groups":{"type":"array","items":{"$ref":"#/components/schemas/sal-groups-batch_batch-add-groups"},"description":""},"barrier-after":{"description":"","type":"boolean","example":true}},"xml":{"name":"input","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-add-groups":{"title":"sal-groups-batch_batch-add-groups","type":"object","properties":{"barrier":{"description":"","type":"boolean","example":true},"group-id":{"description":"","type":"integer","format":"int64","example":0},"group-name":{"description":"","type":"string","example":"Some group-name"},"buckets":{"$ref":"#/components/schemas/sal-groups-batch_batch-add-groups_buckets"},"group-type":{"description":"","type":"string","enum":["group-all","group-select","group-indirect","group-ff"],"example":"group-all"},"container-name":{"description":"","type":"string","example":"Some container-name"}},"xml":{"name":"batch-add-groups","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-add-groups_buckets":{"title":"sal-groups-batch_batch-add-groups_buckets","type":"object","properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/sal-groups-batch_batch-add-groups_buckets_bucket"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-add-groups_buckets_bucket":{"title":"sal-groups-batch_batch-add-groups_buckets_bucket","type":"object","properties":{"watch_group":{"description":"","type":"integer","format":"int64","example":0},"weight":{"description":"","type":"integer","format":"int32","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/sal-groups-batch_batch-add-groups_buckets_bucket_action"},"description":""},"watch_port":{"description":"","type":"integer","format":"int64","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"bucket","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-add-groups_buckets_bucket_action":{"title":"sal-groups-batch_batch-add-groups_buckets_bucket_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/sal-groups-batch_batch-add-groups_buckets_bucket_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-add-groups_buckets_bucket_action_output-action":{"title":"sal-groups-batch_batch-add-groups_buckets_bucket_action_output-action","type":"object","properties":{"output-node-connector":{"description":"","type":"string","example":"Some output-node-connector"},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_add-groups-batch_output":{"title":"sal-groups-batch_add-groups-batch_output","type":"object","properties":{"batch-failed-groups-output":{"type":"array","items":{"$ref":"#/components/schemas/sal-groups-batch_batch-failed-groups-output"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-failed-groups-output":{"title":"sal-groups-batch_batch-failed-groups-output","type":"object","properties":{"batch-order":{"description":"","type":"integer","format":"int32","example":0},"group-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"batch-failed-groups-output","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_remove-groups-batch_input":{"title":"sal-groups-batch_remove-groups-batch_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"batch-remove-groups":{"type":"array","items":{"$ref":"#/components/schemas/sal-groups-batch_batch-remove-groups"},"description":""},"barrier-after":{"description":"","type":"boolean","example":true}},"xml":{"name":"input","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-remove-groups":{"title":"sal-groups-batch_batch-remove-groups","type":"object","properties":{"barrier":{"description":"","type":"boolean","example":true},"group-id":{"description":"","type":"integer","format":"int64","example":0},"group-name":{"description":"","type":"string","example":"Some group-name"},"buckets":{"$ref":"#/components/schemas/sal-groups-batch_batch-remove-groups_buckets"},"group-type":{"description":"","type":"string","enum":["group-all","group-select","group-indirect","group-ff"],"example":"group-all"},"container-name":{"description":"","type":"string","example":"Some container-name"}},"xml":{"name":"batch-remove-groups","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-remove-groups_buckets":{"title":"sal-groups-batch_batch-remove-groups_buckets","type":"object","properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/sal-groups-batch_batch-remove-groups_buckets_bucket"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-remove-groups_buckets_bucket":{"title":"sal-groups-batch_batch-remove-groups_buckets_bucket","type":"object","properties":{"watch_group":{"description":"","type":"integer","format":"int64","example":0},"weight":{"description":"","type":"integer","format":"int32","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/sal-groups-batch_batch-remove-groups_buckets_bucket_action"},"description":""},"watch_port":{"description":"","type":"integer","format":"int64","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"bucket","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-remove-groups_buckets_bucket_action":{"title":"sal-groups-batch_batch-remove-groups_buckets_bucket_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/sal-groups-batch_batch-remove-groups_buckets_bucket_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-remove-groups_buckets_bucket_action_output-action":{"title":"sal-groups-batch_batch-remove-groups_buckets_bucket_action_output-action","type":"object","properties":{"output-node-connector":{"description":"","type":"string","example":"Some output-node-connector"},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_remove-groups-batch_output":{"title":"sal-groups-batch_remove-groups-batch_output","type":"object","properties":{"batch-failed-groups-output":{"type":"array","items":{"$ref":"#/components/schemas/sal-groups-batch_batch-failed-groups-output"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_update-groups-batch_input":{"title":"sal-groups-batch_update-groups-batch_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"batch-update-groups":{"type":"array","items":{"$ref":"#/components/schemas/sal-groups-batch_batch-update-groups"},"description":""},"barrier-after":{"description":"","type":"boolean","example":true}},"xml":{"name":"input","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-update-groups":{"title":"sal-groups-batch_batch-update-groups","type":"object","properties":{"original-batched-group":{"$ref":"#/components/schemas/sal-groups-batch_batch-update-groups_original-batched-group"},"updated-batched-group":{"$ref":"#/components/schemas/sal-groups-batch_batch-update-groups_updated-batched-group"}},"xml":{"name":"batch-update-groups","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-update-groups_original-batched-group":{"title":"sal-groups-batch_batch-update-groups_original-batched-group","type":"object","properties":{"barrier":{"description":"","type":"boolean","example":true},"group-id":{"description":"","type":"integer","format":"int64","example":0},"group-name":{"description":"","type":"string","example":"Some group-name"},"buckets":{"$ref":"#/components/schemas/sal-groups-batch_batch-update-groups_original-batched-group_buckets"},"group-type":{"description":"","type":"string","enum":["group-all","group-select","group-indirect","group-ff"],"example":"group-all"},"container-name":{"description":"","type":"string","example":"Some container-name"}},"xml":{"name":"original-batched-group","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-update-groups_original-batched-group_buckets":{"title":"sal-groups-batch_batch-update-groups_original-batched-group_buckets","type":"object","properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/sal-groups-batch_batch-update-groups_original-batched-group_buckets_bucket"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-update-groups_original-batched-group_buckets_bucket":{"title":"sal-groups-batch_batch-update-groups_original-batched-group_buckets_bucket","type":"object","properties":{"watch_group":{"description":"","type":"integer","format":"int64","example":0},"weight":{"description":"","type":"integer","format":"int32","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/sal-groups-batch_batch-update-groups_original-batched-group_buckets_bucket_action"},"description":""},"watch_port":{"description":"","type":"integer","format":"int64","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"bucket","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-update-groups_original-batched-group_buckets_bucket_action":{"title":"sal-groups-batch_batch-update-groups_original-batched-group_buckets_bucket_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/sal-groups-batch_batch-update-groups_original-batched-group_buckets_bucket_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-update-groups_original-batched-group_buckets_bucket_action_output-action":{"title":"sal-groups-batch_batch-update-groups_original-batched-group_buckets_bucket_action_output-action","type":"object","properties":{"output-node-connector":{"description":"","type":"string","example":"Some output-node-connector"},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-update-groups_updated-batched-group":{"title":"sal-groups-batch_batch-update-groups_updated-batched-group","type":"object","properties":{"barrier":{"description":"","type":"boolean","example":true},"group-id":{"description":"","type":"integer","format":"int64","example":0},"group-name":{"description":"","type":"string","example":"Some group-name"},"buckets":{"$ref":"#/components/schemas/sal-groups-batch_batch-update-groups_updated-batched-group_buckets"},"group-type":{"description":"","type":"string","enum":["group-all","group-select","group-indirect","group-ff"],"example":"group-all"},"container-name":{"description":"","type":"string","example":"Some container-name"}},"xml":{"name":"updated-batched-group","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-update-groups_updated-batched-group_buckets":{"title":"sal-groups-batch_batch-update-groups_updated-batched-group_buckets","type":"object","properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/sal-groups-batch_batch-update-groups_updated-batched-group_buckets_bucket"},"description":""}},"xml":{"name":"buckets","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-update-groups_updated-batched-group_buckets_bucket":{"title":"sal-groups-batch_batch-update-groups_updated-batched-group_buckets_bucket","type":"object","properties":{"watch_group":{"description":"","type":"integer","format":"int64","example":0},"weight":{"description":"","type":"integer","format":"int32","example":0},"action":{"type":"array","items":{"$ref":"#/components/schemas/sal-groups-batch_batch-update-groups_updated-batched-group_buckets_bucket_action"},"description":""},"watch_port":{"description":"","type":"integer","format":"int64","example":0},"bucket-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"bucket","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-update-groups_updated-batched-group_buckets_bucket_action":{"title":"sal-groups-batch_batch-update-groups_updated-batched-group_buckets_bucket_action","type":"object","properties":{"output-action":{"$ref":"#/components/schemas/sal-groups-batch_batch-update-groups_updated-batched-group_buckets_bucket_action_output-action"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"action","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_batch-update-groups_updated-batched-group_buckets_bucket_action_output-action":{"title":"sal-groups-batch_batch-update-groups_updated-batched-group_buckets_bucket_action_output-action","type":"object","properties":{"output-node-connector":{"description":"","type":"string","example":"Some output-node-connector"},"max-length":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"output-action","namespace":"urn:opendaylight:groups:service"}},"sal-groups-batch_update-groups-batch_output":{"title":"sal-groups-batch_update-groups-batch_output","type":"object","properties":{"batch-failed-groups-output":{"type":"array","items":{"$ref":"#/components/schemas/sal-groups-batch_batch-failed-groups-output"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:groups:service"}},"sal-meter_add-meter_input":{"title":"sal-meter_add-meter_input","type":"object","properties":{"transaction-uri":{"description":"","type":"string","example":"Some transaction-uri"},"meter-ref":{"description":"","type":"string"},"node":{"description":"A reference to a particular node.","type":"string"},"flags":{"description":"Meter configuration flags","type":"string","enum":["meter-kbps","meter-pktps","meter-burst","meter-stats"],"minItems":0,"default":"meter-kbps meter-stats","uniqueItems":true},"meter-id":{"description":"Meter instance","type":"integer","format":"int64","example":0},"barrier":{"description":"If true, barrier message is sent","type":"boolean","example":true},"meter-name":{"description":"Name of meter instance","type":"string","example":"Some meter-name"},"container-name":{"description":"Name of container","type":"string","example":"Some container-name"},"meter-band-headers":{"$ref":"#/components/schemas/sal-meter_meter-band-headers"}},"xml":{"name":"input","namespace":"urn:opendaylight:meter:service"}},"sal-meter_meter-band-headers":{"title":"sal-meter_meter-band-headers","type":"object","properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/sal-meter_meter-band-headers_meter-band-header"},"description":""}},"xml":{"name":"meter-band-headers","namespace":"urn:opendaylight:meter:service"}},"sal-meter_meter-band-headers_meter-band-header":{"title":"sal-meter_meter-band-headers_meter-band-header","type":"object","properties":{"band-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"drop-rate":{"description":"Rate for dropping packets","type":"integer","format":"int64","example":0},"drop-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"band-id":{"description":"Meter band id","type":"integer","format":"int64","example":0},"meter-band-types":{"$ref":"#/components/schemas/sal-meter_meter-band-headers_meter-band-header_meter-band-types"},"band-rate":{"description":"Rate for this band","type":"integer","format":"int64","example":0}},"xml":{"name":"meter-band-header","namespace":"urn:opendaylight:meter:service"}},"sal-meter_meter-band-headers_meter-band-header_meter-band-types":{"title":"sal-meter_meter-band-headers_meter-band-header_meter-band-types","type":"object","properties":{"flags":{"description":"Meter band flags","type":"string","enum":["ofpmbt-drop","ofpmbt-dscp-remark","ofpmbt-experimenter"],"minItems":0,"default":"ofpmbt-drop ofpmbt-experimenter","uniqueItems":true}},"xml":{"name":"meter-band-types","namespace":"urn:opendaylight:meter:service"}},"sal-meter_add-meter_output":{"title":"sal-meter_add-meter_output","type":"object","properties":{"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:meter:service"}},"sal-meter_remove-meter_input":{"title":"sal-meter_remove-meter_input","type":"object","properties":{"transaction-uri":{"description":"","type":"string","example":"Some transaction-uri"},"meter-ref":{"description":"","type":"string"},"node":{"description":"A reference to a particular node.","type":"string"},"flags":{"description":"Meter configuration flags","type":"string","enum":["meter-kbps","meter-pktps","meter-burst","meter-stats"],"minItems":0,"default":"meter-kbps meter-stats","uniqueItems":true},"meter-id":{"description":"Meter instance","type":"integer","format":"int64","example":0},"barrier":{"description":"If true, barrier message is sent","type":"boolean","example":true},"meter-name":{"description":"Name of meter instance","type":"string","example":"Some meter-name"},"container-name":{"description":"Name of container","type":"string","example":"Some container-name"},"meter-band-headers":{"$ref":"#/components/schemas/sal-meter_meter-band-headers"}},"xml":{"name":"input","namespace":"urn:opendaylight:meter:service"}},"sal-meter_remove-meter_output":{"title":"sal-meter_remove-meter_output","type":"object","properties":{"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:meter:service"}},"sal-meter_update-meter_input":{"title":"sal-meter_update-meter_input","type":"object","properties":{"transaction-uri":{"description":"","type":"string","example":"Some transaction-uri"},"meter-ref":{"description":"","type":"string"},"original-meter":{"$ref":"#/components/schemas/sal-meter_original-meter"},"updated-meter":{"$ref":"#/components/schemas/sal-meter_updated-meter"},"node":{"description":"A reference to a particular node.","type":"string"}},"xml":{"name":"input","namespace":"urn:opendaylight:meter:service"}},"sal-meter_original-meter":{"title":"sal-meter_original-meter","type":"object","properties":{"barrier":{"description":"If true, barrier message is sent","type":"boolean","example":true},"meter-id":{"description":"Meter instance","type":"integer","format":"int64","example":0},"meter-band-headers":{"$ref":"#/components/schemas/sal-meter_original-meter_meter-band-headers"},"meter-name":{"description":"Name of meter instance","type":"string","example":"Some meter-name"},"flags":{"description":"Meter configuration flags","type":"string","enum":["meter-kbps","meter-pktps","meter-burst","meter-stats"],"minItems":0,"default":"meter-kbps meter-stats","uniqueItems":true},"container-name":{"description":"Name of container","type":"string","example":"Some container-name"}},"xml":{"name":"original-meter","namespace":"urn:opendaylight:meter:service"}},"sal-meter_original-meter_meter-band-headers":{"title":"sal-meter_original-meter_meter-band-headers","type":"object","properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/sal-meter_original-meter_meter-band-headers_meter-band-header"},"description":""}},"xml":{"name":"meter-band-headers","namespace":"urn:opendaylight:meter:service"}},"sal-meter_original-meter_meter-band-headers_meter-band-header":{"title":"sal-meter_original-meter_meter-band-headers_meter-band-header","type":"object","properties":{"band-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"drop-rate":{"description":"Rate for dropping packets","type":"integer","format":"int64","example":0},"drop-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"band-id":{"description":"Meter band id","type":"integer","format":"int64","example":0},"meter-band-types":{"$ref":"#/components/schemas/sal-meter_original-meter_meter-band-headers_meter-band-header_meter-band-types"},"band-rate":{"description":"Rate for this band","type":"integer","format":"int64","example":0}},"xml":{"name":"meter-band-header","namespace":"urn:opendaylight:meter:service"}},"sal-meter_original-meter_meter-band-headers_meter-band-header_meter-band-types":{"title":"sal-meter_original-meter_meter-band-headers_meter-band-header_meter-band-types","type":"object","properties":{"flags":{"description":"Meter band flags","type":"string","enum":["ofpmbt-drop","ofpmbt-dscp-remark","ofpmbt-experimenter"],"minItems":0,"default":"ofpmbt-drop ofpmbt-experimenter","uniqueItems":true}},"xml":{"name":"meter-band-types","namespace":"urn:opendaylight:meter:service"}},"sal-meter_updated-meter":{"title":"sal-meter_updated-meter","type":"object","properties":{"barrier":{"description":"If true, barrier message is sent","type":"boolean","example":true},"meter-id":{"description":"Meter instance","type":"integer","format":"int64","example":0},"meter-band-headers":{"$ref":"#/components/schemas/sal-meter_updated-meter_meter-band-headers"},"meter-name":{"description":"Name of meter instance","type":"string","example":"Some meter-name"},"flags":{"description":"Meter configuration flags","type":"string","enum":["meter-kbps","meter-pktps","meter-burst","meter-stats"],"minItems":0,"default":"meter-kbps meter-stats","uniqueItems":true},"container-name":{"description":"Name of container","type":"string","example":"Some container-name"}},"xml":{"name":"updated-meter","namespace":"urn:opendaylight:meter:service"}},"sal-meter_updated-meter_meter-band-headers":{"title":"sal-meter_updated-meter_meter-band-headers","type":"object","properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/sal-meter_updated-meter_meter-band-headers_meter-band-header"},"description":""}},"xml":{"name":"meter-band-headers","namespace":"urn:opendaylight:meter:service"}},"sal-meter_updated-meter_meter-band-headers_meter-band-header":{"title":"sal-meter_updated-meter_meter-band-headers_meter-band-header","type":"object","properties":{"band-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"drop-rate":{"description":"Rate for dropping packets","type":"integer","format":"int64","example":0},"drop-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"band-id":{"description":"Meter band id","type":"integer","format":"int64","example":0},"meter-band-types":{"$ref":"#/components/schemas/sal-meter_updated-meter_meter-band-headers_meter-band-header_meter-band-types"},"band-rate":{"description":"Rate for this band","type":"integer","format":"int64","example":0}},"xml":{"name":"meter-band-header","namespace":"urn:opendaylight:meter:service"}},"sal-meter_updated-meter_meter-band-headers_meter-band-header_meter-band-types":{"title":"sal-meter_updated-meter_meter-band-headers_meter-band-header_meter-band-types","type":"object","properties":{"flags":{"description":"Meter band flags","type":"string","enum":["ofpmbt-drop","ofpmbt-dscp-remark","ofpmbt-experimenter"],"minItems":0,"default":"ofpmbt-drop ofpmbt-experimenter","uniqueItems":true}},"xml":{"name":"meter-band-types","namespace":"urn:opendaylight:meter:service"}},"sal-meter_update-meter_output":{"title":"sal-meter_update-meter_output","type":"object","properties":{"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:meter:service"}},"sal-meters-batch_add-meters-batch_input":{"title":"sal-meters-batch_add-meters-batch_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"batch-add-meters":{"type":"array","items":{"$ref":"#/components/schemas/sal-meters-batch_batch-add-meters"},"description":""},"barrier-after":{"description":"","type":"boolean","example":true}},"xml":{"name":"input","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-add-meters":{"title":"sal-meters-batch_batch-add-meters","type":"object","properties":{"barrier":{"description":"If true, barrier message is sent","type":"boolean","example":true},"meter-id":{"description":"Meter instance","type":"integer","format":"int64","example":0},"meter-band-headers":{"$ref":"#/components/schemas/sal-meters-batch_batch-add-meters_meter-band-headers"},"meter-name":{"description":"Name of meter instance","type":"string","example":"Some meter-name"},"flags":{"description":"Meter configuration flags","type":"string","enum":["meter-kbps","meter-pktps","meter-burst","meter-stats"],"minItems":0,"default":"meter-kbps meter-stats","uniqueItems":true},"container-name":{"description":"Name of container","type":"string","example":"Some container-name"},"meter-ref":{"description":"","type":"string"}},"xml":{"name":"batch-add-meters","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-add-meters_meter-band-headers":{"title":"sal-meters-batch_batch-add-meters_meter-band-headers","type":"object","properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/sal-meters-batch_batch-add-meters_meter-band-headers_meter-band-header"},"description":""}},"xml":{"name":"meter-band-headers","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-add-meters_meter-band-headers_meter-band-header":{"title":"sal-meters-batch_batch-add-meters_meter-band-headers_meter-band-header","type":"object","properties":{"band-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"drop-rate":{"description":"Rate for dropping packets","type":"integer","format":"int64","example":0},"drop-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"band-id":{"description":"Meter band id","type":"integer","format":"int64","example":0},"meter-band-types":{"$ref":"#/components/schemas/sal-meters-batch_batch-add-meters_meter-band-headers_meter-band-header_meter-band-types"},"band-rate":{"description":"Rate for this band","type":"integer","format":"int64","example":0}},"xml":{"name":"meter-band-header","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-add-meters_meter-band-headers_meter-band-header_meter-band-types":{"title":"sal-meters-batch_batch-add-meters_meter-band-headers_meter-band-header_meter-band-types","type":"object","properties":{"flags":{"description":"Meter band flags","type":"string","enum":["ofpmbt-drop","ofpmbt-dscp-remark","ofpmbt-experimenter"],"minItems":0,"default":"ofpmbt-drop ofpmbt-experimenter","uniqueItems":true}},"xml":{"name":"meter-band-types","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_add-meters-batch_output":{"title":"sal-meters-batch_add-meters-batch_output","type":"object","properties":{"batch-failed-meters-output":{"type":"array","items":{"$ref":"#/components/schemas/sal-meters-batch_batch-failed-meters-output"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-failed-meters-output":{"title":"sal-meters-batch_batch-failed-meters-output","type":"object","properties":{"batch-order":{"description":"","type":"integer","format":"int32","example":0},"meter-id":{"description":"","type":"integer","format":"int64","example":0}},"xml":{"name":"batch-failed-meters-output","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_remove-meters-batch_input":{"title":"sal-meters-batch_remove-meters-batch_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"batch-remove-meters":{"type":"array","items":{"$ref":"#/components/schemas/sal-meters-batch_batch-remove-meters"},"description":""},"barrier-after":{"description":"","type":"boolean","example":true}},"xml":{"name":"input","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-remove-meters":{"title":"sal-meters-batch_batch-remove-meters","type":"object","properties":{"barrier":{"description":"If true, barrier message is sent","type":"boolean","example":true},"meter-id":{"description":"Meter instance","type":"integer","format":"int64","example":0},"meter-band-headers":{"$ref":"#/components/schemas/sal-meters-batch_batch-remove-meters_meter-band-headers"},"meter-name":{"description":"Name of meter instance","type":"string","example":"Some meter-name"},"flags":{"description":"Meter configuration flags","type":"string","enum":["meter-kbps","meter-pktps","meter-burst","meter-stats"],"minItems":0,"default":"meter-kbps meter-stats","uniqueItems":true},"container-name":{"description":"Name of container","type":"string","example":"Some container-name"},"meter-ref":{"description":"","type":"string"}},"xml":{"name":"batch-remove-meters","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-remove-meters_meter-band-headers":{"title":"sal-meters-batch_batch-remove-meters_meter-band-headers","type":"object","properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/sal-meters-batch_batch-remove-meters_meter-band-headers_meter-band-header"},"description":""}},"xml":{"name":"meter-band-headers","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-remove-meters_meter-band-headers_meter-band-header":{"title":"sal-meters-batch_batch-remove-meters_meter-band-headers_meter-band-header","type":"object","properties":{"band-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"drop-rate":{"description":"Rate for dropping packets","type":"integer","format":"int64","example":0},"drop-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"band-id":{"description":"Meter band id","type":"integer","format":"int64","example":0},"meter-band-types":{"$ref":"#/components/schemas/sal-meters-batch_batch-remove-meters_meter-band-headers_meter-band-header_meter-band-types"},"band-rate":{"description":"Rate for this band","type":"integer","format":"int64","example":0}},"xml":{"name":"meter-band-header","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-remove-meters_meter-band-headers_meter-band-header_meter-band-types":{"title":"sal-meters-batch_batch-remove-meters_meter-band-headers_meter-band-header_meter-band-types","type":"object","properties":{"flags":{"description":"Meter band flags","type":"string","enum":["ofpmbt-drop","ofpmbt-dscp-remark","ofpmbt-experimenter"],"minItems":0,"default":"ofpmbt-drop ofpmbt-experimenter","uniqueItems":true}},"xml":{"name":"meter-band-types","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_remove-meters-batch_output":{"title":"sal-meters-batch_remove-meters-batch_output","type":"object","properties":{"batch-failed-meters-output":{"type":"array","items":{"$ref":"#/components/schemas/sal-meters-batch_batch-failed-meters-output"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_update-meters-batch_input":{"title":"sal-meters-batch_update-meters-batch_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"batch-update-meters":{"type":"array","items":{"$ref":"#/components/schemas/sal-meters-batch_batch-update-meters"},"description":""},"barrier-after":{"description":"","type":"boolean","example":true}},"xml":{"name":"input","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-update-meters":{"title":"sal-meters-batch_batch-update-meters","type":"object","properties":{"original-batched-meter":{"$ref":"#/components/schemas/sal-meters-batch_batch-update-meters_original-batched-meter"},"meter-ref":{"description":"","type":"string"},"updated-batched-meter":{"$ref":"#/components/schemas/sal-meters-batch_batch-update-meters_updated-batched-meter"}},"xml":{"name":"batch-update-meters","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-update-meters_original-batched-meter":{"title":"sal-meters-batch_batch-update-meters_original-batched-meter","type":"object","properties":{"barrier":{"description":"If true, barrier message is sent","type":"boolean","example":true},"meter-id":{"description":"Meter instance","type":"integer","format":"int64","example":0},"meter-band-headers":{"$ref":"#/components/schemas/sal-meters-batch_batch-update-meters_original-batched-meter_meter-band-headers"},"meter-name":{"description":"Name of meter instance","type":"string","example":"Some meter-name"},"flags":{"description":"Meter configuration flags","type":"string","enum":["meter-kbps","meter-pktps","meter-burst","meter-stats"],"minItems":0,"default":"meter-kbps meter-stats","uniqueItems":true},"container-name":{"description":"Name of container","type":"string","example":"Some container-name"}},"xml":{"name":"original-batched-meter","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-update-meters_original-batched-meter_meter-band-headers":{"title":"sal-meters-batch_batch-update-meters_original-batched-meter_meter-band-headers","type":"object","properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/sal-meters-batch_batch-update-meters_original-batched-meter_meter-band-headers_meter-band-header"},"description":""}},"xml":{"name":"meter-band-headers","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-update-meters_original-batched-meter_meter-band-headers_meter-band-header":{"title":"sal-meters-batch_batch-update-meters_original-batched-meter_meter-band-headers_meter-band-header","type":"object","properties":{"band-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"drop-rate":{"description":"Rate for dropping packets","type":"integer","format":"int64","example":0},"drop-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"band-id":{"description":"Meter band id","type":"integer","format":"int64","example":0},"meter-band-types":{"$ref":"#/components/schemas/sal-meters-batch_batch-update-meters_original-batched-meter_meter-band-headers_meter-band-header_meter-band-types"},"band-rate":{"description":"Rate for this band","type":"integer","format":"int64","example":0}},"xml":{"name":"meter-band-header","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-update-meters_original-batched-meter_meter-band-headers_meter-band-header_meter-band-types":{"title":"sal-meters-batch_batch-update-meters_original-batched-meter_meter-band-headers_meter-band-header_meter-band-types","type":"object","properties":{"flags":{"description":"Meter band flags","type":"string","enum":["ofpmbt-drop","ofpmbt-dscp-remark","ofpmbt-experimenter"],"minItems":0,"default":"ofpmbt-drop ofpmbt-experimenter","uniqueItems":true}},"xml":{"name":"meter-band-types","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-update-meters_updated-batched-meter":{"title":"sal-meters-batch_batch-update-meters_updated-batched-meter","type":"object","properties":{"barrier":{"description":"If true, barrier message is sent","type":"boolean","example":true},"meter-id":{"description":"Meter instance","type":"integer","format":"int64","example":0},"meter-band-headers":{"$ref":"#/components/schemas/sal-meters-batch_batch-update-meters_updated-batched-meter_meter-band-headers"},"meter-name":{"description":"Name of meter instance","type":"string","example":"Some meter-name"},"flags":{"description":"Meter configuration flags","type":"string","enum":["meter-kbps","meter-pktps","meter-burst","meter-stats"],"minItems":0,"default":"meter-kbps meter-stats","uniqueItems":true},"container-name":{"description":"Name of container","type":"string","example":"Some container-name"}},"xml":{"name":"updated-batched-meter","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-update-meters_updated-batched-meter_meter-band-headers":{"title":"sal-meters-batch_batch-update-meters_updated-batched-meter_meter-band-headers","type":"object","properties":{"meter-band-header":{"type":"array","items":{"$ref":"#/components/schemas/sal-meters-batch_batch-update-meters_updated-batched-meter_meter-band-headers_meter-band-header"},"description":""}},"xml":{"name":"meter-band-headers","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-update-meters_updated-batched-meter_meter-band-headers_meter-band-header":{"title":"sal-meters-batch_batch-update-meters_updated-batched-meter_meter-band-headers_meter-band-header","type":"object","properties":{"band-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"drop-rate":{"description":"Rate for dropping packets","type":"integer","format":"int64","example":0},"drop-burst-size":{"description":"Size of bursts","type":"integer","format":"int64","example":0},"band-id":{"description":"Meter band id","type":"integer","format":"int64","example":0},"meter-band-types":{"$ref":"#/components/schemas/sal-meters-batch_batch-update-meters_updated-batched-meter_meter-band-headers_meter-band-header_meter-band-types"},"band-rate":{"description":"Rate for this band","type":"integer","format":"int64","example":0}},"xml":{"name":"meter-band-header","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_batch-update-meters_updated-batched-meter_meter-band-headers_meter-band-header_meter-band-types":{"title":"sal-meters-batch_batch-update-meters_updated-batched-meter_meter-band-headers_meter-band-header_meter-band-types","type":"object","properties":{"flags":{"description":"Meter band flags","type":"string","enum":["ofpmbt-drop","ofpmbt-dscp-remark","ofpmbt-experimenter"],"minItems":0,"default":"ofpmbt-drop ofpmbt-experimenter","uniqueItems":true}},"xml":{"name":"meter-band-types","namespace":"urn:opendaylight:meters:service"}},"sal-meters-batch_update-meters-batch_output":{"title":"sal-meters-batch_update-meters-batch_output","type":"object","properties":{"batch-failed-meters-output":{"type":"array","items":{"$ref":"#/components/schemas/sal-meters-batch_batch-failed-meters-output"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:meters:service"}},"sal-port_update-port_input":{"title":"sal-port_update-port_input","type":"object","properties":{"original-port":{"$ref":"#/components/schemas/sal-port_original-port"},"updated-port":{"$ref":"#/components/schemas/sal-port_updated-port"},"node":{"description":"A reference to a particular node.","type":"string"},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:port:service"}},"sal-port_original-port":{"title":"sal-port_original-port","type":"object","properties":{"port":{"$ref":"#/components/schemas/sal-port_original-port_port"}},"xml":{"name":"original-port","namespace":"urn:opendaylight:port:service"}},"sal-port_original-port_port":{"title":"sal-port_original-port_port","type":"object","properties":{"port":{"type":"array","items":{"$ref":"#/components/schemas/sal-port_original-port_port_port"},"description":""}},"xml":{"name":"port","namespace":"urn:opendaylight:port:service"}},"sal-port_original-port_port_port":{"title":"sal-port_original-port_port_port","type":"object","properties":{"barrier":{"description":"","type":"boolean","example":true},"configuration":{"description":"Bit map of OFPPC-* flags","type":"string","enum":["PORT-DOWN","NO-RECV","NO-FWD","NO-PACKET-IN"],"minItems":0,"default":"PORT-DOWN NO-PACKET-IN","uniqueItems":true},"port-mod-order":{"description":"","type":"integer","format":"int64","example":0},"container-name":{"description":"","type":"string","example":"Some container-name"},"port-number":{"description":"","type":"integer","format":"int64","example":0},"hardware-address":{"description":"MAC Address of the port","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"port-name":{"description":"","type":"string","example":"Some port-name"},"mask":{"description":"Bitmap of OFPPC-* flags to be changed","type":"string","enum":["PORT-DOWN","NO-RECV","NO-FWD","NO-PACKET-IN"],"minItems":0,"default":"PORT-DOWN NO-PACKET-IN","uniqueItems":true},"advertised-features":{"description":"Features being advertised by the port","type":"string","enum":["ten-mb-hd","ten-mb-fd","hundred-mb-hd","hundred-mb-fd","one-gb-hd","one-gb-fd","ten-gb-fd","forty-gb-fd","hundred-gb-fd","one-tb-fd","other","copper","fiber","autoeng","pause","pause-asym"],"minItems":0,"default":"ten-mb-hd pause-asym","uniqueItems":true}},"xml":{"name":"port","namespace":"urn:opendaylight:port:service"}},"sal-port_updated-port":{"title":"sal-port_updated-port","type":"object","properties":{"port":{"$ref":"#/components/schemas/sal-port_updated-port_port"}},"xml":{"name":"updated-port","namespace":"urn:opendaylight:port:service"}},"sal-port_updated-port_port":{"title":"sal-port_updated-port_port","type":"object","properties":{"port":{"type":"array","items":{"$ref":"#/components/schemas/sal-port_updated-port_port_port"},"description":""}},"xml":{"name":"port","namespace":"urn:opendaylight:port:service"}},"sal-port_updated-port_port_port":{"title":"sal-port_updated-port_port_port","type":"object","properties":{"barrier":{"description":"","type":"boolean","example":true},"configuration":{"description":"Bit map of OFPPC-* flags","type":"string","enum":["PORT-DOWN","NO-RECV","NO-FWD","NO-PACKET-IN"],"minItems":0,"default":"PORT-DOWN NO-PACKET-IN","uniqueItems":true},"port-mod-order":{"description":"","type":"integer","format":"int64","example":0},"container-name":{"description":"","type":"string","example":"Some container-name"},"port-number":{"description":"","type":"integer","format":"int64","example":0},"hardware-address":{"description":"MAC Address of the port","type":"string","example":"00:00:00:00:00:00","minLength":0,"maxLength":2147483647},"port-name":{"description":"","type":"string","example":"Some port-name"},"mask":{"description":"Bitmap of OFPPC-* flags to be changed","type":"string","enum":["PORT-DOWN","NO-RECV","NO-FWD","NO-PACKET-IN"],"minItems":0,"default":"PORT-DOWN NO-PACKET-IN","uniqueItems":true},"advertised-features":{"description":"Features being advertised by the port","type":"string","enum":["ten-mb-hd","ten-mb-fd","hundred-mb-hd","hundred-mb-fd","one-gb-hd","one-gb-fd","ten-gb-fd","forty-gb-fd","hundred-gb-fd","one-tb-fd","other","copper","fiber","autoeng","pause","pause-asym"],"minItems":0,"default":"ten-mb-hd pause-asym","uniqueItems":true}},"xml":{"name":"port","namespace":"urn:opendaylight:port:service"}},"sal-port_update-port_output":{"title":"sal-port_update-port_output","type":"object","properties":{"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:port:service"}},"sal-queue_get-queue_input":{"title":"sal-queue_get-queue_input","type":"object","properties":{"node":{"description":"A reference to a particular node.","type":"string"},"port-number":{"description":"Port to be queried.\nShould refer to a valid physical port (i.e. &lt; OFPP_MAX),\nor OFPP_ANY to request all configured queues.","type":"integer","format":"int64","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:queue:service"}},"sal-queue_get-queue_output":{"title":"sal-queue_get-queue_output","type":"object","properties":{"packet-queues":{"type":"array","items":{"$ref":"#/components/schemas/sal-queue_packet-queues"},"description":""}},"xml":{"name":"output","namespace":"urn:opendaylight:queue:service"}},"sal-queue_packet-queues":{"title":"sal-queue_packet-queues","type":"object","properties":{"queue-id":{"description":"id for the specific queue.","type":"integer","format":"int64","example":0},"port":{"description":"Port this queue is attached to.","type":"integer","format":"int64","example":0},"property":{"description":"One of OFPQT_. TODO:: use queue-properties type.","type":"integer","format":"int32","example":0}},"xml":{"name":"packet-queues","namespace":"urn:opendaylight:queue:service"}},"sal-remote_create-data-change-event-subscription_input":{"title":"sal-remote_create-data-change-event-subscription_input","type":"object","properties":{"path":{"description":"Subtree path. ","type":"string"},"sal-remote-augment:datastore":{"description":"","type":"string","enum":["OPERATIONAL","CONFIGURATION"],"default":"CONFIGURATION","example":"OPERATIONAL","xml":{"name":"datastore","namespace":"urn:sal:restconf:event:subscription"}},"sal-remote-augment:scope":{"description":"","type":"string","enum":["BASE","ONE","SUBTREE"],"example":"BASE","xml":{"name":"scope","namespace":"urn:sal:restconf:event:subscription"}},"sal-remote-augment:notification-output-type":{"description":"Input parameter which type of output will be parsed on notification","type":"string","enum":["JSON","XML"],"default":"XML","example":"JSON","xml":{"name":"notification-output-type","namespace":"urn:sal:restconf:event:subscription"}}},"required":["path"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"}},"sal-remote_create-data-change-event-subscription_output":{"title":"sal-remote_create-data-change-event-subscription_output","type":"object","properties":{"stream-name":{"description":"Notification stream name.","type":"string","example":"Some stream-name"}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"}},"sal-remote_create-notification-stream_input":{"title":"sal-remote_create-notification-stream_input","type":"object","properties":{"notifications":{"type":"array","minItems":1,"items":{"type":"string","example":"Some notifications"},"description":"Notification QNames","example":["Some notifications"]},"sal-remote-augment:notification-output-type":{"description":"Input parameter which type of output will be parsed on notification","type":"string","enum":["JSON","XML"],"default":"XML","example":"JSON","xml":{"name":"notification-output-type","namespace":"urn:sal:restconf:event:subscription"}}},"required":["notifications"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"}},"sal-remote_create-notification-stream_output":{"title":"sal-remote_create-notification-stream_output","type":"object","properties":{"notification-stream-identifier":{"description":"Unique notification stream identifier, in which notifications will be propagated","type":"string","example":"Some notification-stream-identifier"}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"}},"sal-remote_begin-transaction_output":{"title":"sal-remote_begin-transaction_output","type":"object","properties":{"data-modification-transaction":{"description":"DataModificationTransaction xml (This is unknown data, need to be filled by user.)","example":{},"type":"object"}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"}},"sal-role_set-role_input":{"title":"sal-role_set-role_input","type":"object","properties":{"transaction-uri":{"description":"","type":"string","example":"Some transaction-uri"},"node":{"description":"A reference to a particular node.","type":"string"},"controller-role":{"description":"","type":"string","enum":["NOCHANGE","BECOMEMASTER","BECOMESLAVE"],"example":"NOCHANGE"}},"xml":{"name":"input","namespace":"urn:opendaylight:role:service"}},"sal-role_set-role_output":{"title":"sal-role_set-role_output","type":"object","properties":{"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:role:service"}},"sal-table_update-table_input":{"title":"sal-table_update-table_input","type":"object","properties":{"transaction-uri":{"description":"","type":"string","example":"Some transaction-uri"},"table-ref":{"description":"","type":"string"},"original-table":{"$ref":"#/components/schemas/sal-table_original-table"},"updated-table":{"$ref":"#/components/schemas/sal-table_updated-table"},"node":{"description":"A reference to a particular node.","type":"string"},"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"input","namespace":"urn:opendaylight:table:service"}},"sal-table_original-table":{"title":"sal-table_original-table","type":"object","properties":{"table-features":{"type":"array","items":{"$ref":"#/components/schemas/sal-table_original-table_table-features"},"description":""}},"xml":{"name":"original-table","namespace":"urn:opendaylight:table:service"}},"sal-table_original-table_table-features":{"title":"sal-table_original-table_table-features","type":"object","properties":{"table-properties":{"$ref":"#/components/schemas/sal-table_original-table_table-features_table-properties"},"metadata-match":{"description":"Bits of metadata table can match","type":"integer","example":0},"metadata-write":{"description":"Bits of metadata table can write","type":"integer","example":0},"name":{"description":"Name of the table","type":"string","example":"Some name"},"max-entries":{"description":"Max number of entries supported","type":"integer","format":"int64","example":0},"table-id":{"description":"","type":"integer","format":"int32","example":0},"config":{"description":"Bitmap of OFPTC_ values","type":"string","enum":["DEPRECATED-MASK"],"minItems":0,"default":"DEPRECATED-MASK DEPRECATED-MASK","uniqueItems":true}},"xml":{"name":"table-features","namespace":"urn:opendaylight:table:service"}},"sal-table_original-table_table-features_table-properties":{"title":"sal-table_original-table_table-features_table-properties","type":"object","properties":{"table-feature-properties":{"type":"array","items":{"$ref":"#/components/schemas/sal-table_original-table_table-features_table-properties_table-feature-properties"},"description":""}},"xml":{"name":"table-properties","namespace":"urn:opendaylight:table:service"}},"sal-table_original-table_table-features_table-properties_table-feature-properties":{"title":"sal-table_original-table_table-features_table-properties_table-feature-properties","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/sal-table_original-table_table-features_table-properties_table-feature-properties_instructions"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"table-feature-properties","namespace":"urn:opendaylight:table:service"}},"sal-table_original-table_table-features_table-properties_table-feature-properties_instructions":{"title":"sal-table_original-table_table-features_table-properties_table-feature-properties_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/sal-table_original-table_table-features_table-properties_table-feature-properties_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:table:service"}},"sal-table_original-table_table-features_table-properties_table-feature-properties_instructions_instruction":{"title":"sal-table_original-table_table-features_table-properties_table-feature-properties_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/sal-table_original-table_table-features_table-properties_table-feature-properties_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:table:service"}},"sal-table_original-table_table-features_table-properties_table-feature-properties_instructions_instruction_go-to-table":{"title":"sal-table_original-table_table-features_table-properties_table-feature-properties_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:table:service"}},"sal-table_updated-table":{"title":"sal-table_updated-table","type":"object","properties":{"table-features":{"type":"array","items":{"$ref":"#/components/schemas/sal-table_updated-table_table-features"},"description":""}},"xml":{"name":"updated-table","namespace":"urn:opendaylight:table:service"}},"sal-table_updated-table_table-features":{"title":"sal-table_updated-table_table-features","type":"object","properties":{"table-properties":{"$ref":"#/components/schemas/sal-table_updated-table_table-features_table-properties"},"metadata-match":{"description":"Bits of metadata table can match","type":"integer","example":0},"metadata-write":{"description":"Bits of metadata table can write","type":"integer","example":0},"name":{"description":"Name of the table","type":"string","example":"Some name"},"max-entries":{"description":"Max number of entries supported","type":"integer","format":"int64","example":0},"table-id":{"description":"","type":"integer","format":"int32","example":0},"config":{"description":"Bitmap of OFPTC_ values","type":"string","enum":["DEPRECATED-MASK"],"minItems":0,"default":"DEPRECATED-MASK DEPRECATED-MASK","uniqueItems":true}},"xml":{"name":"table-features","namespace":"urn:opendaylight:table:service"}},"sal-table_updated-table_table-features_table-properties":{"title":"sal-table_updated-table_table-features_table-properties","type":"object","properties":{"table-feature-properties":{"type":"array","items":{"$ref":"#/components/schemas/sal-table_updated-table_table-features_table-properties_table-feature-properties"},"description":""}},"xml":{"name":"table-properties","namespace":"urn:opendaylight:table:service"}},"sal-table_updated-table_table-features_table-properties_table-feature-properties":{"title":"sal-table_updated-table_table-features_table-properties_table-feature-properties","type":"object","properties":{"instructions":{"$ref":"#/components/schemas/sal-table_updated-table_table-features_table-properties_table-feature-properties_instructions"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"table-feature-properties","namespace":"urn:opendaylight:table:service"}},"sal-table_updated-table_table-features_table-properties_table-feature-properties_instructions":{"title":"sal-table_updated-table_table-features_table-properties_table-feature-properties_instructions","type":"object","properties":{"instruction":{"type":"array","items":{"$ref":"#/components/schemas/sal-table_updated-table_table-features_table-properties_table-feature-properties_instructions_instruction"},"description":""}},"xml":{"name":"instructions","namespace":"urn:opendaylight:table:service"}},"sal-table_updated-table_table-features_table-properties_table-feature-properties_instructions_instruction":{"title":"sal-table_updated-table_table-features_table-properties_table-feature-properties_instructions_instruction","type":"object","properties":{"go-to-table":{"$ref":"#/components/schemas/sal-table_updated-table_table-features_table-properties_table-feature-properties_instructions_instruction_go-to-table"},"order":{"description":"","type":"integer","format":"int32","example":-2147483648}},"xml":{"name":"instruction","namespace":"urn:opendaylight:table:service"}},"sal-table_updated-table_table-features_table-properties_table-feature-properties_instructions_instruction_go-to-table":{"title":"sal-table_updated-table_table-features_table-properties_table-feature-properties_instructions_instruction_go-to-table","type":"object","properties":{"table_id":{"description":"","type":"integer","format":"int32","example":0}},"xml":{"name":"go-to-table","namespace":"urn:opendaylight:table:service"}},"sal-table_update-table_output":{"title":"sal-table_update-table_output","type":"object","properties":{"transaction-id":{"description":"","type":"integer","example":0}},"xml":{"name":"output","namespace":"urn:opendaylight:table:service"}},"statistics-manager-control_change-statistics-work-mode_input":{"title":"statistics-manager-control_change-statistics-work-mode_input","type":"object","properties":{"mode":{"description":"","type":"string","enum":["COLLECT_ALL","FULLY_DISABLED"],"example":"COLLECT_ALL"}},"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control"}},"statistics-manager-control_get-statistics-work-mode_output":{"title":"statistics-manager-control_get-statistics-work-mode_output","type":"object","properties":{"mode":{"description":"","type":"string","enum":["COLLECT_ALL","FULLY_DISABLED"],"example":"COLLECT_ALL"}},"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control"}},"topology-lldp-discovery-config_topology-lldp-discovery-config":{"title":"topology-lldp-discovery-config_topology-lldp-discovery-config","type":"object","properties":{"topology-lldp-expiration-interval":{"description":"Timeout duration for LLDP response message","type":"integer","format":"int64","default":60000,"example":1},"topology-lldp-interval":{"description":"Periodic interval for sending LLDP packet for link discovery","type":"integer","format":"int64","default":5000,"example":1},"lldp-secure-key":{"description":"Provided key will be used to generate LLDP custom security hash","type":"string","example":"Some lldp-secure-key"}},"required":["lldp-secure-key"],"xml":{"name":"topology-lldp-discovery-config","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config"}},"topology-tunnel-pcep-programming_pcep-create-p2p-tunnel_input":{"title":"topology-tunnel-pcep-programming_pcep-create-p2p-tunnel_input","type":"object","properties":{"destination":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_destination"},"source":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_source"},"network-topology-ref":{"description":"","type":"string"},"id":{"description":"","type":"string","example":"Some id"},"deadline":{"description":"","type":"integer","example":0},"preconditions":{"type":"array","items":{"type":"string","example":"Some preconditions"},"description":""},"explicit-hops":{"type":"array","items":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_explicit-hops"},"description":""},"symbolic-path-name":{"description":"","type":"string","example":"Some symbolic-path-name"},"class-type":{"description":"","type":"integer","format":"int32","example":1},"bandwidth":{"description":"","type":"string","format":"byte"},"local-protection-desired":{"description":"","type":"boolean","default":false,"example":true},"label-recording-desired":{"description":"","type":"boolean","default":false,"example":true},"se-style-desired":{"description":"","type":"boolean","default":false,"example":true},"session-name":{"description":"","type":"string","example":"Some session-name"},"include-any":{"description":"","type":"integer","format":"int64","example":0},"exclude-any":{"description":"","type":"integer","format":"int64","example":0},"include-all":{"description":"","type":"integer","format":"int64","example":0},"hold-priority":{"description":"","type":"string","default":"0"},"setup-priority":{"description":"","type":"string","default":"0"},"odl-pcep-ietf-stateful:administrative-status":{"description":"","type":"string","enum":["active","inactive"],"example":"active","xml":{"name":"administrative-status","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}}},"required":["destination","source","network-topology-ref","id","deadline"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming"}},"topology-tunnel-pcep-programming_destination":{"title":"topology-tunnel-pcep-programming_destination","type":"object","properties":{"node":{"description":"","type":"string","example":"Some node"},"tp":{"description":"","type":"string","example":"Some tp"}},"required":["node","tp"],"xml":{"name":"destination","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming"}},"topology-tunnel-pcep-programming_source":{"title":"topology-tunnel-pcep-programming_source","type":"object","properties":{"node":{"description":"","type":"string","example":"Some node"},"tp":{"description":"","type":"string","example":"Some tp"}},"required":["node","tp"],"xml":{"name":"source","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming"}},"topology-tunnel-pcep-programming_explicit-hops":{"title":"topology-tunnel-pcep-programming_explicit-hops","type":"object","properties":{"loose":{"description":"","type":"boolean","example":true},"order":{"description":"","type":"integer","format":"int64","example":0}},"required":["loose","order"],"xml":{"name":"explicit-hops","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming"}},"topology-tunnel-pcep-programming_pcep-create-p2p-tunnel_output":{"title":"topology-tunnel-pcep-programming_pcep-create-p2p-tunnel_output","type":"object","properties":{"link-id":{"description":"","type":"string","example":"Some link-id"},"failure":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_failure"}},"required":["link-id","failure"],"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming"}},"topology-tunnel-pcep-programming_failure":{"title":"topology-tunnel-pcep-programming_failure","type":"object","properties":{"type":{"description":"","type":"string","enum":["submit-failure","dead-on-arrival","unknown-precondition-id","too-many-instructions","duplicate-instruction-id"],"example":"submit-failure"},"failed-preconditions":{"type":"array","items":{"type":"string","example":"Some failed-preconditions"},"description":""}},"required":["type"],"xml":{"name":"failure","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming"}},"topology-tunnel-pcep-programming_pcep-destroy-tunnel_input":{"title":"topology-tunnel-pcep-programming_pcep-destroy-tunnel_input","type":"object","properties":{"link-id":{"description":"","type":"string","example":"Some link-id"},"network-topology-ref":{"description":"","type":"string"},"id":{"description":"","type":"string","example":"Some id"},"deadline":{"description":"","type":"integer","example":0},"preconditions":{"type":"array","items":{"type":"string","example":"Some preconditions"},"description":""}},"required":["link-id","network-topology-ref","id","deadline"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming"}},"topology-tunnel-pcep-programming_pcep-destroy-tunnel_output":{"title":"topology-tunnel-pcep-programming_pcep-destroy-tunnel_output","type":"object","properties":{"failure":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_failure"}},"required":["failure"],"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming"}},"topology-tunnel-pcep-programming_pcep-update-tunnel_input":{"title":"topology-tunnel-pcep-programming_pcep-update-tunnel_input","type":"object","properties":{"link-id":{"description":"","type":"string","example":"Some link-id"},"network-topology-ref":{"description":"","type":"string"},"id":{"description":"","type":"string","example":"Some id"},"deadline":{"description":"","type":"integer","example":0},"preconditions":{"type":"array","items":{"type":"string","example":"Some preconditions"},"description":""},"explicit-hops":{"type":"array","items":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_explicit-hops1"},"description":""},"symbolic-path-name":{"description":"","type":"string","example":"Some symbolic-path-name"},"class-type":{"description":"","type":"integer","format":"int32","example":1},"bandwidth":{"description":"","type":"string","format":"byte"},"local-protection-desired":{"description":"","type":"boolean","default":false,"example":true},"label-recording-desired":{"description":"","type":"boolean","default":false,"example":true},"se-style-desired":{"description":"","type":"boolean","default":false,"example":true},"session-name":{"description":"","type":"string","example":"Some session-name"},"include-any":{"description":"","type":"integer","format":"int64","example":0},"exclude-any":{"description":"","type":"integer","format":"int64","example":0},"include-all":{"description":"","type":"integer","format":"int64","example":0},"hold-priority":{"description":"","type":"string","default":"0"},"setup-priority":{"description":"","type":"string","default":"0"},"odl-pcep-ietf-stateful:administrative-status":{"description":"","type":"string","enum":["active","inactive"],"example":"active","xml":{"name":"administrative-status","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful"}}},"required":["link-id","network-topology-ref","id","deadline"],"xml":{"name":"input","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming"}},"topology-tunnel-pcep-programming_explicit-hops1":{"title":"topology-tunnel-pcep-programming_explicit-hops","type":"object","properties":{"loose":{"description":"","type":"boolean","example":true},"order":{"description":"","type":"integer","format":"int64","example":0}},"required":["loose","order"],"xml":{"name":"explicit-hops","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming"}},"topology-tunnel-pcep-programming_pcep-update-tunnel_output":{"title":"topology-tunnel-pcep-programming_pcep-update-tunnel_output","type":"object","properties":{"failure":{"$ref":"#/components/schemas/topology-tunnel-pcep-programming_failure"}},"required":["failure"],"xml":{"name":"output","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming"}}},"securitySchemes":{"basicAuth":{"scheme":"basic","type":"http"}}},"security":[{"basicAuth":[]}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:23.890136" elapsed="0.088355"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:23.889910" elapsed="0.088670"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:23.889887" elapsed="0.088731"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:23.983083" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:23.979017" elapsed="0.004116"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:23.978707" elapsed="0.004462"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:23.978681" elapsed="0.004514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:23.983944" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:23.983320" elapsed="0.000652"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:23.984228" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:23.984044" elapsed="0.000243"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:23.984815" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:23.984417" elapsed="0.000424"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:23.984311" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:23.984026" elapsed="0.000873"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:23.985366" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:23.985006" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:23.985663" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:23.985483" elapsed="0.000237"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:23.986141" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:23.985849" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:23.985744" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:23.985465" elapsed="0.000757"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:23.986336" elapsed="0.000368"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:35:23.987131" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:23.986826" elapsed="0.000331"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:35:23.987270" elapsed="0.001712"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:35:23.889390" elapsed="0.099662"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:35:23.989228" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:23.989122" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:23.989104" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:35:26.516486" level="INFO">${text_normalized} = {
 "components": {
  "schemas": {
   "aaa-app-config_datastore-config": {
    "properties": {
     "store": {
      "description": "Available data store types.",
      "enum": [
       "h2-data-store"...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:35:23.989402" elapsed="2.527142"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:35:26.516636" elapsed="0.000058"/>
</return>
<msg time="2026-04-05T00:35:26.516857" level="INFO">${response_text} = {
 "components": {
  "schemas": {
   "aaa-app-config_datastore-config": {
    "properties": {
     "store": {
      "description": "Available data store types.",
      "enum": [
       "h2-data-store"...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:35:19.993557" elapsed="6.523328"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:35:26.516952" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:26.517111" level="INFO">${response_text} = {
 "components": {
  "schemas": {
   "aaa-app-config_datastore-config": {
    "properties": {
     "store": {
      "description": "Available data store types.",
      "enum": [
       "h2-data-store"...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:35:19.919639" elapsed="6.597498"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:26.517578" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:26.517235" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:26.517214" elapsed="0.000593"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:35:26.517841" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:26.517997" level="INFO">${resp} = {
 "components": {
  "schemas": {
   "aaa-app-config_datastore-config": {
    "properties": {
     "store": {
      "description": "Available data store types.",
      "enum": [
       "h2-data-store"...</msg>
<var>${resp}</var>
<arg>folder=${VAR_DIR}/${path}</arg>
<arg>http_timeout=90</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-05T00:35:19.916387" elapsed="6.601637"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp}</arg>
<arg>api</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:26.518167" elapsed="0.001425"/>
</kw>
<doc>Get the Apidoc Apis list, check 200 status and apis string presence.</doc>
<status status="PASS" start="2026-04-05T00:35:19.849134" elapsed="6.670589"/>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-04-05T00:35:26.520487" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-05T00:35:26.520376" elapsed="0.000209"/>
</kw>
<doc>Test suite to verify Apidocs is OK.</doc>
<status status="PASS" start="2026-04-05T00:35:19.802235" elapsed="6.718383"/>
</suite>
<status status="PASS" start="2026-04-05T00:35:19.800834" elapsed="6.720547"/>
</suite>
<suite id="s1-s3" name="MDSAL" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/MDSAL">
<suite id="s1-s3-s1" name="Northbound" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/MDSAL/northbound.robot">
<kw name="Setup_Everything" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.594035" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:26.590307" elapsed="0.003775"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-05T00:35:26.590104" elapsed="0.004041"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.598453" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-05T00:35:26.595173" elapsed="0.003308"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-05T00:35:26.598666" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:26.598559" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:26.598539" elapsed="0.000189"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.599213" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:26.598867" elapsed="0.000387"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.599723" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-05T00:35:26.599400" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-05T00:35:26.600252" elapsed="0.000298"/>
</kw>
<msg time="2026-04-05T00:35:26.600646" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:26.600692" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:26.599930" elapsed="0.000785"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.601230" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:26.600866" elapsed="0.000389"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.602194" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:26.601934" elapsed="0.000287"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.602624" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:26.602353" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.603072" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:35:26.602792" elapsed="0.000306"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-05T00:35:26.605920" elapsed="0.000200"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.606609" level="INFO">${member_ip} = 10.30.170.184</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:26.606263" elapsed="0.000373"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:35:26.606772" elapsed="0.000227"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.607759" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:26.607468" elapsed="0.000317"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:35:26.607905" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:35:26.608062" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:35:26.607178" elapsed="0.000909"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:35:26.608797" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4bcbaf690&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:35:26.608226" elapsed="0.000708"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-05T00:35:26.609082" elapsed="0.000190"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-05T00:35:26.605363" elapsed="0.003969"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:26.605189" elapsed="0.004188"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-05T00:35:26.603154" elapsed="0.006254"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.609970" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:26.609572" elapsed="0.000441"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.610568" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.184'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:26.610158" elapsed="0.000453"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.611136" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:26.610757" elapsed="0.000420"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-05T00:35:26.601505" elapsed="0.009731"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-05T00:35:26.594852" elapsed="0.016439"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:26.611486" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:26.611357" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:26.611338" elapsed="0.000214"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.614370" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:26.613999" elapsed="0.000398"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.614849" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:26.614558" elapsed="0.000316"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:26.614918" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:26.615069" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:26.613683" elapsed="0.001410"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:26.616071" level="INFO">${member_ip} = 10.30.170.184</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:26.615783" elapsed="0.000314"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:26.616828" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:35:26.616929" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:35:26.616655" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:26.620443" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:26.619739" elapsed="0.000813"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:26.619693" elapsed="0.000929"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:26.621268" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:35:26.620883" elapsed="0.000850"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.622621" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.184" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:26.621984" elapsed="0.000795"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:26.623781" level="INFO">${conn_id} = 15</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:26.623037" elapsed="0.000891"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.625677" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:35:26.625756" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:35:26.625239" elapsed="0.000542"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:26.625974" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:35:26.627190" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:35:26.964592" 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 Apr  5 00:35:03 UTC 2026

  System load:  0.21               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:35:03 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:35:26.626866" elapsed="0.337880"/>
</kw>
<msg time="2026-04-05T00:35:26.964849" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:26.626517" elapsed="0.338417"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:35:26.624295" elapsed="0.340904"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:26.966062" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-05T00:35:26.978849" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-05T00:35:26.979511" level="INFO">${stdout} = </msg>
<msg time="2026-04-05T00:35:26.979837" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:26.965588" elapsed="0.014471"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:26.980692" elapsed="0.001257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.984333" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:26.983152" elapsed="0.001570"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-05T00:35:26.985653" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:26.985061" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:26.984954" elapsed="0.000903"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-05T00:35:26.986399" elapsed="0.000169"/>
</return>
<status status="PASS" start="2026-04-05T00:35:26.986043" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:26.985988" elapsed="0.000909"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-05T00:35:26.987024" elapsed="0.000024"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:26.991362" elapsed="0.000568"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:26.992267" elapsed="0.000344"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:26.992928" elapsed="0.000224"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:26.987814" elapsed="0.005485"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-05T00:35:26.618696" elapsed="0.374955"/>
</kw>
<msg time="2026-04-05T00:35:26.993840" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:26.618051" elapsed="0.375843"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:35:26.617592" elapsed="0.376381"/>
</kw>
<msg time="2026-04-05T00:35:26.994013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:26.617096" elapsed="0.376961"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:26.996513" elapsed="0.000306"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:26.996969" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:26.997261" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:26.994332" elapsed="0.003079"/>
</kw>
<msg time="2026-04-05T00:35:26.997523" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-05T00:35:26.616297" elapsed="0.381250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:26.997950" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:26.997706" elapsed="0.000285"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:35:26.998033" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-05T00:35:26.615445" elapsed="0.382711"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:26.615267" elapsed="0.382927"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:26.615144" elapsed="0.383086"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-05T00:35:26.611759" elapsed="0.386528"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:26.998481" elapsed="0.000214"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:27.011307" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:27.011198" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.011178" elapsed="0.000198"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:27.011667" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:35:27.011770" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:35:27.011531" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:27.012191" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:27.011935" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:27.012633" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:27.012372" elapsed="0.000305"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:27.013411" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-05T00:35:27.013161" elapsed="0.000375">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-05T00:35:27.013642" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-05T00:35:27.013687" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:27.012819" elapsed="0.000891"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:27.013993" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:27.013787" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.013768" elapsed="0.000323"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:27.014858" level="INFO">${ip_address} = 10.30.170.184</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:27.014591" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-05T00:35:27.014933" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:27.015082" level="INFO">${odl_ip} = 10.30.170.184</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-05T00:35:27.014278" elapsed="0.000828"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:27.015244" elapsed="0.000421"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:27.015928" level="INFO">index=18
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:35:27.016026" level="INFO">${karaf_connection_object} = index=18
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:35:27.015821" elapsed="0.000232"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:35:27.016185" elapsed="0.001989"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-05T00:35:27.018603" level="INFO">Logging into '10.30.170.184:8101' as 'karaf'.</msg>
<msg time="2026-04-05T00:35:27.254225" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-05T00:35:27.018324" elapsed="0.236125"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:27.257964" elapsed="0.000449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:27.258590" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:27.258896" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:27.255601" elapsed="0.003451"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:27.254874" elapsed="0.004224"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-05T00:35:27.010919" elapsed="0.248231"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:35:26.999381" elapsed="0.259819"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:26.999026" elapsed="0.260228"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:26.998900" elapsed="0.260395"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-05T00:35:26.998752" elapsed="0.260581"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-05T00:35:26.594417" elapsed="0.664983"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:27.261839" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:27.261723" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.261698" elapsed="0.000215"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:27.266209" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:27.266086" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.266068" elapsed="0.000210"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:27.267215" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:27.266828" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:27.267767" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:27.267468" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:27.267838" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:35:27.267998" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:27.266509" elapsed="0.001513"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:27.272881" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:27.272775" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.272756" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:27.274225" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:27.274029" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.274012" elapsed="0.000359"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:27.274939" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:27.274524" elapsed="0.000458"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:27.275470" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:27.275208" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:27.318672" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "n "e "t "[78Cc "[A[78Co</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:27.276951" elapsed="0.041927"/>
</kw>
<msg time="2026-04-05T00:35:27.319069" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:27.319145" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:27.275724" elapsed="0.043472"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:27.390455" level="INFO">"n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "n "e "t "c "o "n "f "/ "M "D "S "A "L "/ "n "o "r "t "h "b "o "[78Cu "[A[78Cn
 "d ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:27.320787" elapsed="0.069848"/>
</kw>
<msg time="2026-04-05T00:35:27.390791" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:27.390864" level="INFO">${message_wait} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:27.319497" elapsed="0.071418"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:27.391413" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:27.391084" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.391058" elapsed="0.000551"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:27.392288" level="INFO"> "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "n "e "t "c "o "n "f "/ "M "D "S "A "L "/ "n "o "r "t "h "b "o "[78Cu "[A[78Cn
 "d ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:27.391744" elapsed="0.000663"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:27.392848" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:27.392550" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.392529" elapsed="0.000486"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:27.393050" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:27.395199" elapsed="0.000331"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:27.395729" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:27.396069" elapsed="0.000101"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:27.394491" elapsed="0.001788"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:27.393325" elapsed="0.003051"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:27.273682" elapsed="0.122868"/>
</kw>
<msg time="2026-04-05T00:35:27.396644" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:27.396687" level="INFO">${message} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:27.273084" elapsed="0.123640"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:27.396909" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:27.396801" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.396783" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:27.397418" elapsed="0.000046"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:27.397809" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:27.397883" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:27.272487" elapsed="0.125505"/>
</kw>
<msg time="2026-04-05T00:35:27.398085" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:27.398129" level="INFO">${output} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:27.268382" elapsed="0.129783"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:27.398549" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:27.398240" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.398223" elapsed="0.000418"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:27.268251" elapsed="0.130417"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:27.268077" elapsed="0.130624"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:27.265798" elapsed="0.132957"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-05T00:35:27.259989" elapsed="0.138821"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:27.259563" elapsed="0.139287"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-05T00:35:26.589811" elapsed="0.809089"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:35:27.399322" level="INFO">Creating Session using : alias=config, url=http://10.30.170.184:8181/rests/data, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4cd057d90&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>config</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}${REST_API}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:35:27.399036" elapsed="0.000481"/>
</kw>
<doc>Setup resources and create session for Restconf checking.</doc>
<status status="PASS" start="2026-04-05T00:35:26.589536" elapsed="0.810044"/>
</kw>
<test id="s1-s3-s1-t1" name="Connect_To_ODL_Netconf" line="57">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:27.403618" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:27.403352" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:27.404856" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:27.404747" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.404728" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:27.409508" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:27.409386" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.409368" elapsed="0.000207"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:27.410555" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:27.410152" elapsed="0.000430"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:27.411080" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:27.410772" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:27.411202" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:35:27.411363" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:27.409794" elapsed="0.001594"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:27.416572" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:27.416460" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.416439" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:27.417821" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:27.417715" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.417698" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:27.418378" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:27.418019" elapsed="0.000386"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:27.418868" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:27.418569" elapsed="0.000326"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:27.464856" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:27.419415" elapsed="0.045605"/>
</kw>
<msg time="2026-04-05T00:35:27.465191" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:27.465237" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:27.419042" elapsed="0.046231"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:27.514211" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:27.465834" elapsed="0.048558"/>
</kw>
<msg time="2026-04-05T00:35:27.514592" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:27.514638" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ "N "e ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:27.465455" elapsed="0.049219"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:27.515008" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:27.514758" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.514735" elapsed="0.000376"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:27.515661" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:27.515242" elapsed="0.000486"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:27.515994" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:27.515795" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.515777" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:27.516127" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:27.518337" elapsed="0.000533"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:27.519735" elapsed="0.000489"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:27.521036" elapsed="0.000326"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:27.516988" elapsed="0.004458"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:27.516394" elapsed="0.005170"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:27.417391" elapsed="0.104274"/>
</kw>
<msg time="2026-04-05T00:35:27.521758" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:27.521802" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ "N "e ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:27.416784" elapsed="0.105108"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:27.522080" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:27.521972" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.521953" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:27.522571" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:27.522893" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:27.522966" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:27.416102" elapsed="0.107012"/>
</kw>
<msg time="2026-04-05T00:35:27.523210" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:27.523254" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ "N "e ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:27.411772" elapsed="0.111519"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:27.523638" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:27.523368" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:27.523350" elapsed="0.000365"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:27.411643" elapsed="0.112094"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:27.411460" elapsed="0.112309"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:27.409016" elapsed="0.114809"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:27.404424" elapsed="0.119457"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:27.404014" elapsed="0.119911"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:27.401277" elapsed="0.122701"/>
</kw>
<kw name="Create_ODL_Netconf_Connection">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:27.524996" level="INFO">${control} = 22</msg>
<var>${control}</var>
<arg>${host}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=60s</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:27.524641" elapsed="0.000381"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:35:27.527065" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:35:27.527149" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:35:27.526748" elapsed="0.000425"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:27.527321" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:35:27.528619" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:35:27.851692" 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 Apr  5 00:35:03 UTC 2026

  System load:  0.21               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:35:26 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:35:27.528173" elapsed="0.323660"/>
</kw>
<msg time="2026-04-05T00:35:27.851912" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:27.527829" elapsed="0.324161"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:35:27.526064" elapsed="0.326042"/>
</kw>
<msg time="2026-04-05T00:35:27.852157" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:27.525695" elapsed="0.326591"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:35:27.525210" elapsed="0.327157"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:27.856807" level="INFO">${ssh_control} = 22</msg>
<arg>${ssh_control}</arg>
<arg>${control}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:27.852598" elapsed="0.004255"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:27.857388" level="INFO">${netconf} = 23</msg>
<var>${netconf}</var>
<arg>${host}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=60s</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:27.857005" elapsed="0.000409"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:35:27.859199" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:35:27.859275" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:35:27.858916" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:27.859460" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:35:27.860642" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:35:28.206166" 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 Apr  5 00:35:03 UTC 2026

  System load:  0.21               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:35:27 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:35:27.860312" elapsed="0.345962"/>
</kw>
<msg time="2026-04-05T00:35:28.206344" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:27.859949" elapsed="0.346462"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:35:27.858441" elapsed="0.348090"/>
</kw>
<msg time="2026-04-05T00:35:28.206583" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:27.858036" elapsed="0.348592"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:35:27.857653" elapsed="0.349052"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:28.211164" level="INFO">${ssh_netconf} = 23</msg>
<arg>${ssh_netconf}</arg>
<arg>${netconf}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:28.206894" elapsed="0.004315"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:28.215080" level="INFO">${ssh_port} = 2830</msg>
<arg>${ssh_port}</arg>
<arg>${port}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:28.211360" elapsed="0.003764"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:28.219119" level="INFO">${ssh_user} = admin</msg>
<arg>${ssh_user}</arg>
<arg>${user}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:28.215275" elapsed="0.003889"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:28.223257" level="INFO">${ssh_password} = admin</msg>
<arg>${ssh_password}</arg>
<arg>${password}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:28.219315" elapsed="0.003986"/>
</kw>
<doc>Open a netconf connecion to the given machine.</doc>
<status status="PASS" start="2026-04-05T00:35:27.524166" elapsed="0.699196"/>
</kw>
<kw name="Open_ODL_Netconf_Connection">
<kw name="Reopen_ODL_Netconf_Connection">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:28.226803" level="INFO">sshpass -p admin ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@127.0.0.1 -p 2830 -s netconf</msg>
<arg>sshpass -p ${ssh_password} ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${ssh_user}\@127.0.0.1 -p ${ssh_port} -s netconf</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:28.224095" elapsed="0.002765"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.083777" level="INFO">[?2004lWarning: Permanently added '[127.0.0.1]:2830' (ECDSA) to the list of known hosts.
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;capabilities&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config?module=odl-pcep-topology-sync-optimizations-config&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&amp;amp;revision=2011-06-01&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:serviceutils:srm:types?module=odl-srm-types&amp;amp;revision=2018-06-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats?module=odl-pcep-stateful-stats&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs?module=iana-ssh-key-exchange-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp?module=openconfig-bgp&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:nicira:action?module=openflowplugin-extension-nicira-action&amp;amp;revision=2014-07-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:netconf-node-topology?module=netconf-node-topology&amp;amp;revision=2025-12-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:echo:service?module=sal-echo&amp;amp;revision=2015-03-05&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-nmda?module=ietf-netconf-nmda&amp;amp;revision=2019-01-07&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:serviceutils:srm:ops?module=odl-srm-ops&amp;amp;revision=2018-06-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config?module=lldp-speaker-config&amp;amp;revision=2016-05-12&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart?module=bgp-ll-graceful-restart&amp;amp;revision=2018-11-12&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:network:topology?module=odl-network-topology&amp;amp;revision=2014-01-13&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:types?module=opendaylight-flow-types&amp;amp;revision=2013-10-26&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:inventory?module=flow-node-inventory&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-patch?module=ietf-yang-patch&amp;amp;revision=2017-02-22&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-origin?module=ietf-origin&amp;amp;revision=2018-02-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:model:topology:inventory?module=opendaylight-topology-inventory&amp;amp;revision=2013-10-30&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote?module=sal-remote&amp;amp;revision=2014-01-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:extension:yang-ext?module=yang-ext&amp;amp;revision=2013-07-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config?module=odl-bgp-topology-config&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/local-routing?module=openconfig-local-routing&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:async-config:service?module=sal-async-config&amp;amp;revision=2017-06-19&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-crypto-types?module=ietf-crypto-types&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:exi:1.0&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/interfaces?module=openconfig-interfaces&amp;amp;revision=2016-04-12&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:types:queue?module=opendaylight-queue-types&amp;amp;revision=2013-09-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:pcep?module=network-topology-pcep&amp;amp;revision=2025-03-28&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:system?module=system-notifications&amp;amp;revision=2013-09-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:ieee754?module=ieee754&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control?module=statistics-manager-control&amp;amp;revision=2015-08-12&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin?module=cluster-admin&amp;amp;revision=2025-01-31&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:common:instruction?module=openflow-instruction&amp;amp;revision=2013-07-31&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:ietf-stateful-config?module=odl-pcep-ietf-stateful-config&amp;amp;revision=2023-01-15&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:candidate:1.0&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people?module=car-people&amp;amp;revision=2014-08-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types?module=odl-bgp-topology-types&amp;amp;revision=2016-05-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6?module=bgp-mvpn-ipv6&amp;amp;revision=2018-04-17&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:aaa:password:service:config?module=aaa-password-service-config&amp;amp;revision=2017-06-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:entity-owners?module=odl-entity-owners&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowjava:nx:match?module=nicira-match&amp;amp;revision=2014-04-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:table:statistics?module=opendaylight-flow-table-statistics&amp;amp;revision=2013-12-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:topology:discovery?module=flow-topology-discovery&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:config?module=pcep-config&amp;amp;revision=2025-06-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:p2mp:te:lsp?module=odl-pcep-p2mp-te-lsp&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:model:statistics:types?module=opendaylight-statistics-types&amp;amp;revision=2013-09-25&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs?module=iana-ssh-mac-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;config:aaa:authn:encrypt:service:config?module=aaa-encrypt-service-config&amp;amp;revision=2024-02-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:sr?module=network-topology-sr&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-vpn?module=bgp-vpn&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:experimenter-mp-message:service?module=sal-experimenter-mp-message&amp;amp;revision=2015-10-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config?module=topology-lldp-discovery-config&amp;amp;revision=2016-05-11&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-http-server?module=ietf-http-server&amp;amp;revision=2024-02-08&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service?module=frm-reconciliation&amp;amp;revision=2018-02-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:network:concepts?module=network-concepts&amp;amp;revision=2013-11-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol?module=bgp-multiprotocol&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:pcep:sync:optimizations?module=odl-pcep-sync-optimizations&amp;amp;revision=2020-07-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs?module=iana-ssh-public-key-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-flowspec?module=bgp-flowspec&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:netmod:notification?module=nc-notifications&amp;amp;revision=2008-07-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:packet:service?module=packet-processing&amp;amp;revision=2013-07-09&lt;/capability&gt;
        &lt;capability&gt;urn:sal:restconf:event:subscription?module=sal-remote-augment&amp;amp;revision=2023-11-03&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:pcep:auto:bandwidth?module=odl-pcep-auto-bandwidth&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:aaa:app:config?module=aaa-app-config&amp;amp;revision=2017-06-19&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:base:1.1&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity?module=odl-general-entity&amp;amp;revision=2015-09-30&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:base:1.0&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:queue:statistics?module=opendaylight-queue-statistics&amp;amp;revision=2013-12-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:inet-binary-types?module=odl-inet-binary-types&amp;amp;revision=2016-03-03&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-afn-safi?module=iana-afn-safi&amp;amp;revision=2013-07-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:protocol?module=openflow-protocol&amp;amp;revision=2013-07-31&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:action:types?module=opendaylight-action-types&amp;amp;revision=2013-11-12&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp-operational?module=openconfig-bgp-operational&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car?module=car&amp;amp;revision=2014-08-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:arbitrary:bitmask:fields?module=opendaylight-arbitrary-bitmask-fields&amp;amp;revision=2016-01-30&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&amp;amp;revision=2013-07-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4?module=bgp-mvpn-ipv4&amp;amp;revision=2018-04-17&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:multipart:types?module=opendaylight-multipart-types&amp;amp;revision=2017-01-12&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&amp;amp;revision=2014-08-06&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&amp;amp;revision=2010-10-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:meter:service?module=sal-meter&amp;amp;revision=2013-09-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:meter:types?module=opendaylight-meter-types&amp;amp;revision=2013-09-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-segment-routing?module=bgp-segment-routing&amp;amp;revision=2024-12-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:jsonrpc?module=jsonrpc&amp;amp;revision=2016-12-01&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:serviceutils:srm:rpc?module=odl-srm-rpcs&amp;amp;revision=2018-06-26&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/openconfig-ext?module=openconfig-extensions&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology?module=l3-unicast-igp-topology&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:onf?module=onf-extensions&amp;amp;revision=2017-01-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy?module=odl-bgp-policy&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&amp;amp;revision=2019-01-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flat-batch:service?module=sal-flat-batch&amp;amp;revision=2016-03-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:config?module=openflow-configuration&amp;amp;revision=2014-06-30&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-truststore?module=ietf-truststore&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-metadata?module=ietf-yang-metadata&amp;amp;revision=2016-08-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4?module=bgp-vpn-ipv4&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:url:1.0?scheme=file&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:queue:service?module=sal-queue&amp;amp;revision=2015-03-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:daexim?module=data-export-import&amp;amp;revision=2016-09-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-message?module=bgp-message&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:ospf-topology?module=ospf-topology&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:oxm?module=openflow-extensible-match&amp;amp;revision=2015-02-25&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&amp;amp;revision=2011-06-01&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg?module=rfc2385&amp;amp;revision=2016-03-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:aaa:cert:mdsal?module=aaa-cert-mdsal&amp;amp;revision=2016-03-21&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?module=ietf-restconf-monitoring&amp;amp;revision=2017-01-26&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-datastores?module=ietf-datastores&amp;amp;revision=2018-02-14&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:network-topology?module=network-topology&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:netconf-node-optional?module=netconf-node-optional&amp;amp;revision=2022-12-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:statistics?module=opendaylight-flow-statistics&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:nicira:match?module=openflowplugin-extension-nicira-match&amp;amp;revision=2014-07-14&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications?module=ietf-restconf-subscribed-notifications&amp;amp;revision=2019-11-17&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:programming?module=programming&amp;amp;revision=2015-07-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel?module=topology-tunnel&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service?module=arbitrator-reconcile&amp;amp;revision=2018-02-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:controller:basic-rpc-test?module=basic-rpc-test&amp;amp;revision=2016-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&amp;amp;revision=2018-02-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bmp-monitor?module=bmp-monitor&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast?module=bgp-labeled-unicast&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?module=people&amp;amp;revision=2014-08-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:mappingservice?module=odl-mappingservice&amp;amp;revision=2015-09-06&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-routing-types?module=iana-routing-types&amp;amp;revision=2022-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config?module=forwarding-rules-manager-config&amp;amp;revision=2016-05-11&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp-policy?module=openconfig-bgp-policy&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount?module=ietf-yang-schema-mount&amp;amp;revision=2019-01-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:inventory?module=opendaylight-inventory&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pmsi-tunnel?module=pmsi-tunnel&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-http-client?module=ietf-http-client&amp;amp;revision=2024-02-08&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-linkstate?module=bgp-linkstate&amp;amp;revision=2024-12-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state?module=reconciliation-result-state&amp;amp;revision=2017-07-13&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:service:barrier:common?module=barrier-common&amp;amp;revision=2016-03-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:segment:routing?module=odl-pcep-segment-routing&amp;amp;revision=2025-04-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:cds:types?module=odl-controller-cds-types&amp;amp;revision=2025-01-31&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tls-common?module=ietf-tls-common&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config?module=topology-tunnel-pcep-config&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain?module=bgp-route-target-constrain&amp;amp;revision=2018-06-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:types?module=pcep-types&amp;amp;revision=2025-06-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:table:types?module=opendaylight-table-types&amp;amp;revision=2013-10-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:table:service?module=sal-table&amp;amp;revision=2013-10-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:l2:types?module=opendaylight-l2-types&amp;amp;revision=2013-08-27&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tcp-client?module=ietf-tcp-client&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs?module=iana-tls-cipher-suite-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications?module=ietf-subscribed-notifications&amp;amp;revision=2019-09-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:general?module=openflowplugin-extension-general&amp;amp;revision=2014-07-14&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tcp-server?module=ietf-tcp-server&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6?module=bgp-vpn-ipv6&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-routing-types?module=ietf-routing-types&amp;amp;revision=2017-12-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker?module=lldp-speaker&amp;amp;revision=2014-10-23&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:model:match:types?module=opendaylight-match-types&amp;amp;revision=2013-10-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p?module=topology-tunnel-p2p&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:common:action?module=openflow-action&amp;amp;revision=2015-02-03&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:group:types?module=opendaylight-group-types&amp;amp;revision=2013-10-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:direct:statistics?module=opendaylight-direct-statistics&amp;amp;revision=2016-05-11&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:extension:codegen?module=odl-codegen-extensions&amp;amp;revision=2024-06-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:server?module=pcep-server&amp;amp;revision=2022-03-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:meters:service?module=sal-meters-batch&amp;amp;revision=2016-03-16&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?module=ietf-x509-cert-to-name&amp;amp;revision=2014-12-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-ip?module=ietf-ip&amp;amp;revision=2018-02-22&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/policy-types?module=openconfig-policy-types&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;tag:opendaylight.org,2017:controller:yang:lowlevel:target?module=odl-mdsal-lowlevel-target&amp;amp;revision=2017-02-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?module=car-purchase&amp;amp;revision=2014-08-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:graph?module=graph&amp;amp;revision=2025-01-15&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/openconfig-types?module=openconfig-types&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?module=ietf-netconf-notifications&amp;amp;revision=2012-02-06&lt;/capability&gt;
        &lt;capability&gt;tag:opendaylight.org,2017:controller:yang:lowlevel:control?module=odl-mdsal-lowlevel-control&amp;amp;revision=2017-02-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bmp-message?module=bmp-message&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:node-ssl-connection-error:service?module=node-ssl-connection-error&amp;amp;revision=2019-07-23&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&amp;amp;revision=2013-07-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:pcep:stats?module=network-pcep-topology-stats&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep?module=topology-tunnel-pcep&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&amp;amp;revision=2018-02-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions?module=bgp-openconfig-extensions&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:service?module=sal-flow&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:meter:statistics?module=opendaylight-meter-statistics&amp;amp;revision=2013-11-11&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:mvpn?module=bgp-mvpn&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tls-server?module=ietf-tls-server&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:test?module=bgp-test&amp;amp;revision=2018-05-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-rib?module=bgp-rib&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;tag:opendaylight.org,2017:controller:yang:lowlevel:common?module=odl-mdsal-lowlevel-common&amp;amp;revision=2017-02-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming?module=topology-tunnel-pcep-programming&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:aaa:cert?module=aaa-cert&amp;amp;revision=2015-11-26&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-restconf?module=ietf-restconf&amp;amp;revision=2017-01-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config?module=odl-bgp-peer-acceptor-config&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:serviceutils:upgrade?module=odl-serviceutils-upgrade&amp;amp;revision=2018-07-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowjava:nx:action?module=nicira-action&amp;amp;revision=2014-04-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflow:provider:config?module=openflow-provider-config&amp;amp;revision=2016-05-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-keystore?module=ietf-keystore&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:message?module=pcep-message&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:netconf:monitoring?module=odl-netconf-monitoring&amp;amp;revision=2022-07-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-epe?module=bgp-epe&amp;amp;revision=2024-12-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bmp-monitor-config?module=odl-bmp-monitor-config&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:common:types?module=openflow-types&amp;amp;revision=2013-07-31&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:iana?module=iana&amp;amp;revision=2013-08-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:module:config?module=node-config&amp;amp;revision=2014-10-15&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-ssh-client?module=ietf-ssh-client&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:approved:extensions?module=openflow-approved-extensions&amp;amp;revision=2016-08-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming?module=topology-tunnel-programming&amp;amp;revision=2013-09-30&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc?module=bgp-peer-rpc&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:service:batch:common?module=batch-common&amp;amp;revision=2016-03-22&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:lisp-binary-address-types?module=odl-lisp-address-types&amp;amp;revision=2016-05-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:group:statistics?module=opendaylight-group-statistics&amp;amp;revision=2013-11-11&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:rsvp?module=rsvp&amp;amp;revision=2015-08-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:stats?module=pcep-session-stats&amp;amp;revision=2017-11-13&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep?module=hwvtep&amp;amp;revision=2015-09-01&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/network-instance?module=openconfig-network-instance&amp;amp;revision=2015-10-18&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:notification:1.0&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:overlay?module=overlay&amp;amp;revision=2015-01-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:group:service?module=sal-group&amp;amp;revision=2013-09-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:port:service?module=sal-port&amp;amp;revision=2013-11-07&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:augments?module=openflow-augments&amp;amp;revision=2015-02-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider?module=odl-pcep-topology-provider&amp;amp;revision=2023-01-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:device:notification?module=odl-device-notification&amp;amp;revision=2024-02-18&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp-multiprotocol?module=openconfig-bgp-multiprotocol&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:netconf:device?module=odl-netconf-device&amp;amp;revision=2025-12-05&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-ssh-common?module=ietf-ssh-common&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:ietf:initiated?module=odl-pcep-ietf-initiated&amp;amp;revision=2020-07-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:types:port?module=opendaylight-port-types&amp;amp;revision=2013-09-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast?module=bgp-l3vpn-mcast&amp;amp;revision=2018-04-17&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:errors?module=flow-errors&amp;amp;revision=2013-11-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:aaa?module=aaa&amp;amp;revision=2016-12-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config?module=odl-pcep-stats-provider&amp;amp;revision=2022-07-30&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:programming?module=network-topology-programming&amp;amp;revision=2013-11-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:groups:service?module=sal-groups-batch&amp;amp;revision=2016-03-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-evpn?module=odl-bgp-evpn&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful?module=odl-pcep-ietf-stateful&amp;amp;revision=2025-03-28&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields?module=opendaylight-ipv6-arbitrary-bitmask-fields&amp;amp;revision=2016-02-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:lisp-proto?module=odl-lisp-proto&amp;amp;revision=2015-11-05&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&amp;amp;revision=2015-10-18&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tcp-common?module=ietf-tcp-common&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:aaa:cert:rpc?module=aaa-cert-rpc&amp;amp;revision=2015-12-15&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-client?module=ietf-netconf-client&amp;amp;revision=2024-08-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-inet?module=bgp-inet&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:pcep:programming?module=network-topology-pcep-programming&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tls-client?module=ietf-tls-client&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider?module=distributed-datastore-provider&amp;amp;revision=2025-01-30&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:network:isis-topology?module=isis-topology&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr?module=topology-tunnel-sr&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:role:service?module=sal-role&amp;amp;revision=2015-07-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:jsonrpc:ibm?module=jsonrpc-inband-models&amp;amp;revision=2019-01-12&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-restconf-server?module=ietf-restconf-server&amp;amp;revision=2024-08-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:daexim-internal?module=data-export-import-internal&amp;amp;revision=2016-09-21&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:network:ted?module=ted&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:netconf:keystore?module=netconf-keystore&amp;amp;revision=2024-07-08&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:experimenter-message:service?module=sal-experimenter-message&amp;amp;revision=2015-10-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:onf:bundle:service?module=sal-bundle&amp;amp;revision=2017-01-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:ovsdb?module=ovsdb&amp;amp;revision=2015-01-05&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-ssh-server?module=ietf-ssh-server&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:experimenter:types?module=openflowplugin-experimenter-types&amp;amp;revision=2015-10-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:lisp-sb?module=odl-lisp-sb&amp;amp;revision=2015-09-04&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:interleave:1.0&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flows:service?module=sal-flows-batch&amp;amp;revision=2016-03-14&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:netconf:notification:1.0?module=notifications&amp;amp;revision=2008-07-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:transaction?module=flow-capable-transaction&amp;amp;revision=2015-03-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:path:computation?module=path-computation&amp;amp;revision=2022-03-24&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-lisp-address-types?module=ietf-lisp-address-types&amp;amp;revision=2015-11-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc?module=pcep-topology-stats-rpc&amp;amp;revision=2019-03-21&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-network-instance?module=ietf-network-instance&amp;amp;revision=2019-01-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:port:statistics?module=opendaylight-port-statistics&amp;amp;revision=2013-12-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config?module=openflow-switch-connection-config&amp;amp;revision=2016-05-06&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs?module=iana-ssh-encryption-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-types?module=bgp-types&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-server?module=ietf-netconf-server&amp;amp;revision=2024-08-14&lt;/capability&gt;
    &lt;/capabilities&gt;
    &lt;session-id&gt;11&lt;/session-id&gt;
&lt;/hello&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:29.084667" level="INFO">${hello} = [?2004lWarning: Permanently added '[127.0.0.1]:2830' (ECDSA) to the list of known hosts.
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1...</msg>
<var>${hello}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:28.227007" elapsed="0.857694"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${ssh_control}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:29.084968" elapsed="0.000204"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.085445" level="INFO">Executing command 'ps -A | grep sshpass | awk '{print $1}''.</msg>
<msg time="2026-04-05T00:35:29.109204" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:35:29.109302" level="INFO">${pid} = 4503</msg>
<var>${pid}</var>
<arg>ps -A | grep sshpass | awk '{print $1}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:29.085324" elapsed="0.024003"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:29.109969" level="INFO">${ssh_netconf_pid} = 4503</msg>
<arg>${ssh_netconf_pid}</arg>
<arg>${pid}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:29.109515" elapsed="0.000497"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${ssh_netconf}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:29.110153" elapsed="0.000143"/>
</kw>
<return>
<value>${hello}</value>
<status status="PASS" start="2026-04-05T00:35:29.110346" elapsed="0.000047"/>
</return>
<msg time="2026-04-05T00:35:29.110551" level="INFO">${hello} = [?2004lWarning: Permanently added '[127.0.0.1]:2830' (ECDSA) to the list of known hosts.
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1...</msg>
<var>${hello}</var>
<doc>Reopen a closed netconf connection.</doc>
<status status="PASS" start="2026-04-05T00:35:28.223851" elapsed="0.886731"/>
</kw>
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:29.111286" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/hello.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/hello.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:29.111509" level="INFO">${data} = &lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;capabilities&gt;
&lt;capability&gt;urn:ietf:params:netconf:base:1.0&lt;/capability&gt;
&lt;/capabilities&gt;
&lt;/hello&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:29.111065" elapsed="0.000473"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:29.111590" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:29.111737" level="INFO">${hello_message} = &lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;capabilities&gt;
&lt;capability&gt;urn:ietf:params:netconf:base:1.0&lt;/capability&gt;
&lt;/capabilities&gt;
&lt;/hello&gt;
</msg>
<var>${hello_message}</var>
<arg>hello</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:29.110759" elapsed="0.001006"/>
</kw>
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.114047" level="INFO">&lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:29.112215" elapsed="0.001888"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.114599" level="INFO">&lt;capabilities&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:29.114242" elapsed="0.000408"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.115871" level="INFO">&lt;capability&gt;urn:ietf:params:netconf:base:1.0&lt;/capability&gt;
&lt;/capabilities&gt;
&lt;/hello&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:29.114787" elapsed="0.001143"/>
</kw>
<arg>${hello_message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:29.111916" elapsed="0.004071"/>
</kw>
<return>
<value>${hello}</value>
<status status="PASS" start="2026-04-05T00:35:29.116026" elapsed="0.000029"/>
</return>
<doc>Open a prepared netconf connecion.</doc>
<status status="PASS" start="2026-04-05T00:35:28.223561" elapsed="0.892587"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.117424" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:29.117011" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.116989" elapsed="0.000541"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:29.117667" elapsed="0.000335"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:29.122893" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:29.122473" elapsed="0.000448"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:29.123136" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:29.122994" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.122976" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.123349" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.123525" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.123684" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.123920" elapsed="0.000022"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.124078" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.124232" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.124384" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:29.122164" elapsed="0.002311"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:29.116797" elapsed="0.007729"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:29.116411" elapsed="0.008154"/>
</kw>
<doc>Connect to ODL Netconf and fail if that is not possible.</doc>
<status status="PASS" start="2026-04-05T00:35:27.399656" elapsed="1.724952"/>
</test>
<test id="s1-s3-s1-t2" name="Get_Config_Running" line="62">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:29.127716" elapsed="0.000220"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:29.127469" elapsed="0.000521"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.128961" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:29.128851" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.128824" elapsed="0.000205"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.133404" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:29.133300" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.133282" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:29.134453" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:29.134058" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:29.134924" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:29.134631" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:29.134993" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:29.135145" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:29.133701" elapsed="0.001469"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.141735" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:29.141625" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.141606" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.143007" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:29.142902" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.142885" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:29.143584" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:29.143202" elapsed="0.000408"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.144026" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:29.143753" elapsed="0.000299"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.183900" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:29.144581" elapsed="0.039513"/>
</kw>
<msg time="2026-04-05T00:35:29.184268" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:29.184314" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.144195" elapsed="0.040156"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.202469" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:29.185005" elapsed="0.017636"/>
</kw>
<msg time="2026-04-05T00:35:29.202808" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:29.202853" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.184531" elapsed="0.018358"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.203179" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:29.202968" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.202947" elapsed="0.000332"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:29.203805" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:29.203408" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.204161" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:29.203936" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.203918" elapsed="0.000342"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:29.204293" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:29.207120" elapsed="0.000146"/>
</kw>
<msg time="2026-04-05T00:35:29.207335" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:29.206495" elapsed="0.000995"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.208291" elapsed="0.000035"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.209131" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:29.205144" elapsed="0.004100"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:29.204572" elapsed="0.004789"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:29.142606" elapsed="0.066871"/>
</kw>
<msg time="2026-04-05T00:35:29.209570" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:29.209614" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.141944" elapsed="0.067707"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:29.209832" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:29.209727" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.209709" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.210295" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.210629" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.210700" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:29.141258" elapsed="0.069549"/>
</kw>
<msg time="2026-04-05T00:35:29.210901" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:29.210944" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.135553" elapsed="0.075429"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.211291" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:29.211058" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.211040" elapsed="0.000327"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:29.135405" elapsed="0.075985"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:29.135229" elapsed="0.076246"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:29.132949" elapsed="0.078588"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:29.128557" elapsed="0.083034"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.128125" elapsed="0.083511"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:29.125336" elapsed="0.086352"/>
</kw>
<kw name="Check_Test_Objects_Not_Present_In_Config">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:29.213225" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:29.213469" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:29.212804" elapsed="0.000696"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:29.213546" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:29.213694" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:29.212502" elapsed="0.001219"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:29.214458" elapsed="0.000276"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.216258" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:29.214883" elapsed="0.001430"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.217799" level="INFO">&lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:29.216639" elapsed="0.001213"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:29.214152" elapsed="0.003756"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.623611" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfig.net/yang/network-instance"&gt;
            &lt;network-instance&gt;
                &lt;name&gt;global-bgp&lt;/name&gt;
                &lt;protocols/&gt;
            &lt;/network-instance&gt;
        &lt;/network-instances&gt;
        &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;
                &lt;node&gt;
                    &lt;node-id&gt;43.43.43.43&lt;/node-id&gt;
                    &lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;password&gt;topsecret&lt;/password&gt;
                        &lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;
                    &lt;/session-config&gt;
                &lt;/node&gt;
                &lt;topology-types&gt;
                    &lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;
                        &lt;session-config&gt;
                            &lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;
                            &lt;listen-port&gt;4189&lt;/listen-port&gt;
                            &lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;
                            &lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;
                            &lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;
                        &lt;/session-config&gt;
                    &lt;/topology-pcep&gt;
                &lt;/topology-types&gt;
            &lt;/topology&gt;
        &lt;/network-topology&gt;
        &lt;key-stores xmlns="urn:opendaylight:yang:aaa:cert:mdsal"&gt;
            &lt;id&gt;KeyStores:1&lt;/id&gt;
            &lt;ssl-data&gt;
                &lt;bundle-name&gt;opendaylight&lt;/bundle-name&gt;
                &lt;tls-protocols/&gt;
                &lt;odl-keystore&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j7eR9+jY/ReL6ScBdTboi/ykrFmYXQQ7xFuusDY=&lt;/store-password&gt;
                    &lt;sign-alg&gt;SHA1WithRSAEncryption&lt;/sign-alg&gt;
                    &lt;validity&gt;365&lt;/validity&gt;
                    &lt;alias&gt;controller&lt;/alias&gt;
                    &lt;name&gt;ctl.jks&lt;/name&gt;
                    &lt;dname&gt;CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA&lt;/dname&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTGHQubhwHV9aYycwWBO28GdM+0EbfzFmaKhmDhRYeXS6rzNXHoliYz24Nm9Rrgrt6HUbPrex4U1IKGVHfZ0Ok7NBGIva1O3gjWP564Pdsk02VALY+3x/pSHApp4XbOoK9VYCcR27ceSz8ZakXtNqIJSP+ns/tei6wcB1xSE+4cbVJyYGh1UDqWS1/VdQBlNy6nfXdApw0tanG7ZJFszyDip/doAf8261x3CC98HK81B7ThgpPdwkfKnvxYuSkF3b/1W4TMZRXQKoNXSvvbt7QShC9dyN22zdxIdTlv2E9FgZtMCzHJbnTYQbVnfqASfUj5iF5Ghkz+IM8Ctr6HcZo+25RTqGaKLuZdDKZsbvA3YcX7uBb/X1nA/l2LI0ZdEShpllIgbm3+J55OpqL0QTF2WZCJWu7Da/ancqEis6zpVPrbdOAE1k22Fr+Ctg0l0irt86r8kcXv1m/S5c5k9OItEy6ZsXWcPBbLtn9vnpWI2Dvf6pB53cBpe3xC6ucl3Y31l0zrhw8JROv6BOV1HsYa2L7AMj+iaHNbumqX3rTxLSXsEEPVFiw07o5dj4j2lmaBUCQCGfvTCMExpzSs5/HrTOQhLHQzIkzuu9OEYw9OJOM9PPormeqd4mDlQo3opDFfVwJzc0TICklSr+OcNsKHMoYGuMYgcDR+W3fF13PF/ADvelxR6Jyc9nossRkhn8boEwu2OUhnUrgkfj5dvcaIyEt3QXbN0bp7fLAjJL3bmmqJh3BA6hnVheoEvZU8igAkdqL2y4J9UlXx+JkqZVoJEWizc4jYLpurXL9S0WYbXa37xZBh21j77UbBUBT6fCKjFbnYCjJKOPIfraTehhVxFKiHwwaUk0rYaUMbQMAasY8Z9h921xnfci307Gz2WuvN2blL3RG0n2ylzVTO9W4KWZf8lN1jpLT416KmVoaY7ltl58IQJHIn8Xda2pYe9o9QcgzVBY0gk8IfXThTKl2yFNREbE41NvCmkKQ70wg1/0BOuKAvMkje+CuHggKZXw/h+uw5wS7PGLv+P5ttt2sLjnbxtnFPu1NSS89AJ7iu4djWlEyMTXRGG9N2k1CLygLBXe4SAImLTZdd7N527Q28A3HqMgJQY6Lttme9oIpm+DQl9aQIIJgDZb9vvh9f/w4bYvCRHiwBqWNv+u9+PX0+seqNR1kpGOk933QFd0DGlQhpDrcB3yfQ9amX0V2ThyS6hqtMqgJDsacXG0DsZvotEq/uQ0Y/y++7b8g/3qto/eQ8AtVYnMwDwZJxNfEPJaWlC75coGq26S82cZdXjs48kjW88bcyW4+vhsW6eV+vR4z8u7YgQDBpNqbp1R6LixkqEiMRzkK6tbzvhdOxKzMO5qwuG1j3a2S4AjNxnfph0KUM0o5X/jDpjA7NndqzsanXunCTbr1gC0NKgoSzIfb5FtAVlGocJ+YWMrQYAfZ5EQyPVHTI0oW5V2T4jV7dATMpSXFBJ9Rp7PH02d0rtETqUF0b6Yzd8j2eNG82MXrU9yeshDY6xAD2PK0IQ2iMIXVTvohvMwvXKq7AiGiBI7RGUb+yWlkaYNBbz4L78d98li8+AT1wyfjSS06oa+UeAqFY3ADccuHzX1ZyUzlghNQCEu3mrLW2cIaQFftP+h3QfT0nRI7X7/3qeBiMD7VjhZfSVJwrY6DIdtrax4cUmqVrY1qxnbtmygGasXfC1c7vN/mrMPw+GLHjEaC8hRSQFs3WCV6uGu+LJ9Du3STlQKWEM/BhBU2oSGqaJkeI85I3JypXY=&lt;/keystoreFile&gt;
                    &lt;key-alg&gt;RSA&lt;/key-alg&gt;
                    &lt;keysize&gt;1024&lt;/keysize&gt;
                &lt;/odl-keystore&gt;
                &lt;cipher-suites&gt;
                    &lt;suiteName/&gt;
                &lt;/cipher-suites&gt;
                &lt;trust-keystore&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTcoJvqo8Gw5sBv9S7MPdfC8Ey5w0ERj70l1baW6SoxGbO2hfKQ==&lt;/keystoreFile&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j6X21ePQ7B2NsEEpHtEh2FY13wcfZiComYctBEY=&lt;/store-password&gt;
                    &lt;name&gt;truststore.jks&lt;/name&gt;
                &lt;/trust-keystore&gt;
            &lt;/ssl-data&gt;
        &lt;/key-stores&gt;
        &lt;odl-bmp-monitors xmlns="urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"&gt;
            &lt;bmp-monitor-config&gt;
                &lt;monitor-id&gt;example-bmp-monitor&lt;/monitor-id&gt;
                &lt;server&gt;
                    &lt;binding-port&gt;12345&lt;/binding-port&gt;
                    &lt;binding-address&gt;0.0.0.0&lt;/binding-address&gt;
                &lt;/server&gt;
            &lt;/bmp-monitor-config&gt;
        &lt;/odl-bmp-monitors&gt;
        &lt;aaa-encrypt-service-config xmlns="config:aaa:authn:encrypt:service:config"&gt;
            &lt;encrypt-type&gt;AES&lt;/encrypt-type&gt;
            &lt;encrypt-key-length&gt;128&lt;/encrypt-key-length&gt;
            &lt;password-length&gt;12&lt;/password-length&gt;
            &lt;cipher-transforms&gt;AES/GCM/NoPadding&lt;/cipher-transforms&gt;
            &lt;encrypt-key&gt;DYmlnajBzTZj&lt;/encrypt-key&gt;
            &lt;encrypt-salt&gt;CwWGOgKD82i1gQRzdbP9jw==&lt;/encrypt-salt&gt;
            &lt;auth-tag-length&gt;128&lt;/auth-tag-length&gt;
            &lt;encrypt-method&gt;PBKDF2WithHmacSHA1&lt;/encrypt-method&gt;
            &lt;encrypt-iteration-count&gt;32768&lt;/encrypt-iteration-count&gt;
        &lt;/aaa-encrypt-service-config&gt;
        &lt;routing-policy xmlns="http://openconfig.net/yang/routing-policy"&gt;
            &lt;defined-sets&gt;
                &lt;bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                    &lt;role-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-internal&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ibgp&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;all&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ebgp&lt;/role-set-name&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;ibgp-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                    &lt;/role-sets&gt;
                    &lt;originator-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;originator-id-set&gt;
                            &lt;originator-id-set-name&gt;local-originator-id&lt;/originator-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/originator-id-set&gt;
                    &lt;/originator-id-sets&gt;
                    &lt;cluster-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;cluster-id-set&gt;
                            &lt;cluster-id-set-name&gt;local-cluster-id&lt;/cluster-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/cluster-id-set&gt;
                    &lt;/cluster-id-sets&gt;
                &lt;/bgp-defined-sets&gt;
            &lt;/defined-sets&gt;
            &lt;policy-definitions&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-export-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-odl-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="all"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-odl-internal-to-internal-or-rr-client&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-rr-client-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-not-in xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy" xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-not-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-next-hop&gt;SELF&lt;/set-next-hop&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;vpn-membership-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV6-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV4-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;vpn-non-member xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-import-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-non-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                            &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                    &lt;match-cluster-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;cluster-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/cluster-id-sets/cluster-id-set[cluster-set-name="local-cluster-id"]&lt;/cluster-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-cluster-id-set-condition&gt;
                                    &lt;match-originator-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;originator-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/originator-id-sets/originator-id-set[originator-set-name="local-originator-id"]&lt;/originator-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-originator-id-set-condition&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
            &lt;/policy-definitions&gt;
        &lt;/routing-policy&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-default-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6653&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-legacy-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6633&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:29.624360" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfi...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:29.218042" elapsed="0.406352"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:29.624514" elapsed="0.000069"/>
</return>
<msg time="2026-04-05T00:35:29.624759" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfi...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:29.213865" elapsed="0.410925"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:29.624838" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:29.624987" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfi...</msg>
<var>${reply}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:29.212166" elapsed="0.412850"/>
</kw>
<kw name="Check_Test_Objects_Absent">
<kw name="Check_First_Batch_Data_Not_Present">
<kw name="Check_First_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.626844" elapsed="0.000340"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.626315" elapsed="0.000925"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.627824" elapsed="0.000289"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.627381" elapsed="0.000787"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.628734" elapsed="0.000289"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.628306" elapsed="0.000772"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.629683" elapsed="0.000285"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.629241" elapsed="0.000781"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_Not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:29.625951" elapsed="0.004128"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:29.625654" elapsed="0.004475"/>
</kw>
<kw name="Check_Second_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;OLD001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.631016" elapsed="0.000290"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;OLD001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.630602" elapsed="0.000758"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST002&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.631929" elapsed="0.000292"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST002&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.631515" elapsed="0.000761"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;OLD001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.632848" elapsed="0.000288"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;OLD001&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.632415" elapsed="0.000804"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST002&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.633796" elapsed="0.000287"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST002&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.633363" elapsed="0.000776"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:29.630263" elapsed="0.003934"/>
</kw>
<kw name="Check_Multiple_Batch_Data_Absent">
<kw name="Check_Multiple_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.635503" elapsed="0.000489"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.635058" elapsed="0.000992"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.636628" elapsed="0.000292"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.636193" elapsed="0.000782"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.637587" elapsed="0.000288"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.637117" elapsed="0.000812"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.638546" elapsed="0.000290"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.638110" elapsed="0.000781"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CARYOUNG&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.639464" elapsed="0.000289"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CARYOUNG&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.639032" elapsed="0.000775"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTYOUNG&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.640363" elapsed="0.000351"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTYOUNG&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.639948" elapsed="0.000826"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARYOUNG&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.641352" elapsed="0.000339"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARYOUNG&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.640915" elapsed="0.000830"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.642296" elapsed="0.000299"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.641887" elapsed="0.000763"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CARMID&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.643198" elapsed="0.000301"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CARMID&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.642790" elapsed="0.000763"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTMID&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.644102" elapsed="0.000283"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTMID&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.643693" elapsed="0.000763"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARMID&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.645007" elapsed="0.000296"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARMID&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.644597" elapsed="0.000760"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTMID&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.645973" elapsed="0.000284"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTMID&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.645526" elapsed="0.000786"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD2&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.646916" elapsed="0.000285"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD2&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.646473" elapsed="0.000782"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD2&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.647873" elapsed="0.000287"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD2&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.647396" elapsed="0.000818"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD2&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.648795" elapsed="0.000284"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD2&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.648354" elapsed="0.000781"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.649796" elapsed="0.000281"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.649302" elapsed="0.000829"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:29.634736" elapsed="0.015451"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:29.634315" elapsed="0.015922"/>
</kw>
<kw name="Check_Auxiliary_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTBAD&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.651141" elapsed="0.000301"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTBAD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.650727" elapsed="0.000778"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.652081" elapsed="0.000286"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:29.651670" elapsed="0.000818"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:29.650359" elapsed="0.002200"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.652723" elapsed="0.000293"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:29.625280" elapsed="0.027797"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;REPLACE&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:29.653207" elapsed="0.000352"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:29.653620" elapsed="0.000035"/>
</return>
<arg>get-config</arg>
<doc>Use dataset with the specified name to get the configuration and check that none of our test objects are there.</doc>
<status status="PASS" start="2026-04-05T00:35:29.211847" elapsed="0.441907"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.655020" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:29.654618" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.654596" elapsed="0.000512"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:29.655241" elapsed="0.000329"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:29.660572" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:29.660118" elapsed="0.000488"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:29.660847" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:29.660700" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.660677" elapsed="0.000251"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.661064" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.661220" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.661388" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.661554" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.661714" elapsed="0.000024"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.661891" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.662041" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:29.659825" elapsed="0.002292"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:29.654384" elapsed="0.007784"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:29.654019" elapsed="0.008189"/>
</kw>
<doc>Make sure the configuration has only the default elements in it.</doc>
<status status="PASS" start="2026-04-05T00:35:29.124855" elapsed="0.537392"/>
</test>
<test id="s1-s3-s1-t3" name="Missing_Message_ID_Attribute" line="66">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:29.665270" elapsed="0.000252"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:29.665024" elapsed="0.000552"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.666528" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:29.666402" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.666384" elapsed="0.000218"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.671136" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:29.671030" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.671012" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:29.672233" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:29.671798" elapsed="0.000496"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:29.672761" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:29.672460" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:29.672832" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:29.672987" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:29.671418" elapsed="0.001593"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.678262" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:29.678154" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.678135" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.679551" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:29.679407" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.679389" elapsed="0.000245"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:29.680136" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:29.679777" elapsed="0.000386"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.680580" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:29.680310" elapsed="0.000296"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.712775" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:29.681121" elapsed="0.031859"/>
</kw>
<msg time="2026-04-05T00:35:29.713166" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:29.713213" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.680751" elapsed="0.032499"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.734821" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "i "s "s "i "n "g "_ "M "e "s "s "a "g "e "_ "I "D "_ "A "t "t "r "i "b "u "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:29.713841" elapsed="0.021156"/>
</kw>
<msg time="2026-04-05T00:35:29.735166" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:29.735212" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "i "s "s "i "n "g "_ "M "e "s "s "a "g "e "_ "I ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.713450" elapsed="0.021798"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.735556" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:29.735326" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.735306" elapsed="0.000350"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:29.736165" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "i "s "s "i "n "g "_ "M "e "s "s "a "g "e "_ "I "D "_ "A "t "t "r "i "b "u "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:29.735786" elapsed="0.000447"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.736522" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:29.736300" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.736282" elapsed="0.000342"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:29.736657" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:29.739508" elapsed="0.000151"/>
</kw>
<msg time="2026-04-05T00:35:29.739730" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:29.738886" elapsed="0.000942"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.740654" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.741489" elapsed="0.000106"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:29.737522" elapsed="0.004162"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:29.736915" elapsed="0.004888"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:29.679110" elapsed="0.062793"/>
</kw>
<msg time="2026-04-05T00:35:29.741995" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:29.742038" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "i "s "s "i "n "g "_ "M "e "s "s "a "g "e "_ "I ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.678482" elapsed="0.063593"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:29.742257" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:29.742151" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.742132" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.742741" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.743062" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.743134" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:29.677816" elapsed="0.065425"/>
</kw>
<msg time="2026-04-05T00:35:29.743334" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:29.743376" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "i "s "s "i "n "g "_ "M "e "s "s "a "g "e "_ "I ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.673407" elapsed="0.070005"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.743737" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:29.743504" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.743486" elapsed="0.000327"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:29.673247" elapsed="0.070589"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:29.673069" elapsed="0.070797"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:29.670672" elapsed="0.073247"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:29.666120" elapsed="0.077854"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.665712" elapsed="0.078306"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:29.663070" elapsed="0.080998"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:29.745654" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/missing-attr-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/missing-attr-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:29.745842" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
  &lt;get-config&gt;
    &lt;source&gt;
      &lt;running/&gt;
    &lt;/source&gt;
  &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:29.745189" elapsed="0.000682"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:29.745917" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:29.746064" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
  &lt;get-config&gt;
    &lt;source&gt;
      &lt;running/&gt;
    &lt;/source&gt;
  &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:29.744886" elapsed="0.001204"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.748731" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:29.746829" elapsed="0.001958"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.749275" level="INFO">&lt;get-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:29.748928" elapsed="0.000399"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.750434" level="INFO">&lt;source&gt;
      &lt;running/&gt;
    &lt;/source&gt;
  &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:29.749483" elapsed="0.001007"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:29.746540" elapsed="0.004043"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.761138" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;rpc&lt;/error-type&gt;
        &lt;error-tag&gt;missing-attribute&lt;/error-tag&gt;
        &lt;error-severity&gt;error&lt;/error-severity&gt;
        &lt;error-message&gt;Missing attribute rpc&lt;/error-message&gt;
        &lt;error-info&gt;
            &lt;bad-attribute&gt;message-id&lt;/bad-attribute&gt;
            &lt;bad-element&gt;rpc&lt;/bad-element&gt;
        &lt;/error-info&gt;
    &lt;/rpc-error&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:29.761235" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;rpc&lt;/error-type&gt;
        &lt;error-tag&gt;missing...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:29.750723" elapsed="0.010540"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:29.761309" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:29.761479" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;rpc&lt;/error-type&gt;
        &lt;error-tag&gt;missing...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:29.746233" elapsed="0.015274"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:29.761577" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:29.761723" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;rpc&lt;/error-type&gt;
        &lt;error-tag&gt;missing...</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:29.744594" elapsed="0.017158"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:29.762713" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/missing-attr-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/missing-attr-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:29.762841" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;rpc-error&gt;
&lt;error-type&gt;rpc&lt;/error-type&gt;
&lt;error-tag&gt;missing-attribute&lt;/error-tag&gt;
&lt;er...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:29.762501" elapsed="0.000369"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:29.762916" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:29.763062" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;rpc-error&gt;
&lt;error-type&gt;rpc&lt;/error-type&gt;
&lt;error-tag&gt;missing-attribute&lt;/error-tag&gt;
&lt;er...</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:29.762181" elapsed="0.000909"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:29.763132" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:29.763277" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;rpc-error&gt;
&lt;error-type&gt;rpc&lt;/error-type&gt;
&lt;error-tag&gt;missing-attribute&lt;/error-tag&gt;
&lt;er...</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:29.761891" elapsed="0.001413"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:29.763670" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;rpc&lt;/error-type&gt;
        &lt;error-tag&gt;missing...</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:29.763462" elapsed="0.000238"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:29.764078" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;rpc&lt;/error-type&gt;
        &lt;error-tag&gt;missing-a...</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:29.763844" elapsed="0.000265"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:29.764252" elapsed="0.000924"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:29.765231" elapsed="0.000028"/>
</return>
<arg>missing-attr</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:29.744240" elapsed="0.021116"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.766597" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:29.766220" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.766201" elapsed="0.000482"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:29.766813" elapsed="0.000307"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:29.772071" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:29.771652" elapsed="0.000481"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:29.772355" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:29.772211" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.772193" elapsed="0.000264"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.772621" elapsed="0.000027"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.772786" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.772942" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.773092" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.773243" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.773394" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.773600" elapsed="0.000025"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:29.771310" elapsed="0.002378"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:29.765992" elapsed="0.007746"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:29.765651" elapsed="0.008127"/>
</kw>
<doc>Check that messages with missing "message-ID" attribute are rejected with the correct error (RFC 6241, section 4.1).</doc>
<status status="PASS" start="2026-04-05T00:35:29.662486" elapsed="0.111329"/>
</test>
<test id="s1-s3-s1-t4" name="Additional_Attributes_In_Message" line="70">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:29.776859" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:29.776616" elapsed="0.000502"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.778094" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:29.777987" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.777969" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.782616" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:29.782479" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.782457" elapsed="0.000230"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:29.783688" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:29.783256" elapsed="0.000463"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:29.784153" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:29.783862" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:29.784222" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:29.784373" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:29.782896" elapsed="0.001501"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.789756" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:29.789644" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.789625" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.791007" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:29.790901" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.790883" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:29.791575" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:29.791204" elapsed="0.000398"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.791986" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:29.791745" elapsed="0.000301"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.832445" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:29.792611" elapsed="0.040030"/>
</kw>
<msg time="2026-04-05T00:35:29.832824" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:29.832871" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.792195" elapsed="0.040714"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.858214" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "A "d "d "i "t "i "o "n "a "l "_ "A "t "t "r "i "b "u "t "e "s "_ "I "n "_ "M "e "s "s "a "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:29.833488" elapsed="0.024902"/>
</kw>
<msg time="2026-04-05T00:35:29.858587" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:29.858633" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "A "d "d "i "t "i "o "n "a "l "_ "A "t "t "r "i "b ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.833079" elapsed="0.025590"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.858954" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:29.858747" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.858727" elapsed="0.000328"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:29.859617" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "A "d "d "i "t "i "o "n "a "l "_ "A "t "t "r "i "b "u "t "e "s "_ "I "n "_ "M "e "s "s "a "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:29.859193" elapsed="0.000505"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.859964" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:29.859765" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.859747" elapsed="0.000316"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:29.860096" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:29.863039" elapsed="0.000145"/>
</kw>
<msg time="2026-04-05T00:35:29.863254" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:29.862420" elapsed="0.000931"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.864193" elapsed="0.000035"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.865009" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:29.860931" elapsed="0.004192"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:29.860339" elapsed="0.004897"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:29.790602" elapsed="0.074730"/>
</kw>
<msg time="2026-04-05T00:35:29.865438" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:29.865489" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "A "d "d "i "t "i "o "n "a "l "_ "A "t "t "r "i "b ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.789962" elapsed="0.075572"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:29.865740" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:29.865630" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.865607" elapsed="0.000241"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.866222" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.866581" elapsed="0.000031"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:29.866670" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:29.789275" elapsed="0.077506"/>
</kw>
<msg time="2026-04-05T00:35:29.866927" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:29.866971" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "A "d "d "i "t "i "o "n "a "l "_ "A "t "t "r "i "b ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.784765" elapsed="0.082243"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:29.867320" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:29.867082" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:29.867065" elapsed="0.000331"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:29.784637" elapsed="0.082782"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:29.784464" elapsed="0.083015"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:29.782100" elapsed="0.085434"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:29.777696" elapsed="0.089893"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:29.777250" elapsed="0.090382"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:29.774675" elapsed="0.093009"/>
</kw>
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:29.868630" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/additional-attr-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/additional-attr-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:29.868776" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1" attribute="something" additional="otherthing" xmlns:prefix="http://www.example.com/my-schema-example.html"&gt;
    &lt;get-config&gt;
       ...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:29.868398" elapsed="0.000407"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:29.868851" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:29.868998" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1" attribute="something" additional="otherthing" xmlns:prefix="http://www.example.com/my-schema-example.html"&gt;
    &lt;get-config&gt;
       ...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:29.868100" elapsed="0.000925"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.872715" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1" attribute="something" additional="otherthing" xmlns:prefix="http://www.example.com/my-schema-example.html"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:29.869976" elapsed="0.002797"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.873279" level="INFO">&lt;get-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:29.872912" elapsed="0.000419"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:29.874673" level="INFO">&lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:29.873482" elapsed="0.001246"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:29.869673" elapsed="0.005111"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.287192" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:prefix="http://www.example.com/my-schema-example.html" additional="otherthing" attribute="something" message-id="1"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfig.net/yang/network-instance"&gt;
            &lt;network-instance&gt;
                &lt;name&gt;global-bgp&lt;/name&gt;
                &lt;protocols/&gt;
            &lt;/network-instance&gt;
        &lt;/network-instances&gt;
        &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;
                &lt;node&gt;
                    &lt;node-id&gt;43.43.43.43&lt;/node-id&gt;
                    &lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;password&gt;topsecret&lt;/password&gt;
                        &lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;
                    &lt;/session-config&gt;
                &lt;/node&gt;
                &lt;topology-types&gt;
                    &lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;
                        &lt;session-config&gt;
                            &lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;
                            &lt;listen-port&gt;4189&lt;/listen-port&gt;
                            &lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;
                            &lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;
                            &lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;
                        &lt;/session-config&gt;
                    &lt;/topology-pcep&gt;
                &lt;/topology-types&gt;
            &lt;/topology&gt;
        &lt;/network-topology&gt;
        &lt;key-stores xmlns="urn:opendaylight:yang:aaa:cert:mdsal"&gt;
            &lt;id&gt;KeyStores:1&lt;/id&gt;
            &lt;ssl-data&gt;
                &lt;bundle-name&gt;opendaylight&lt;/bundle-name&gt;
                &lt;tls-protocols/&gt;
                &lt;odl-keystore&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j7eR9+jY/ReL6ScBdTboi/ykrFmYXQQ7xFuusDY=&lt;/store-password&gt;
                    &lt;sign-alg&gt;SHA1WithRSAEncryption&lt;/sign-alg&gt;
                    &lt;validity&gt;365&lt;/validity&gt;
                    &lt;alias&gt;controller&lt;/alias&gt;
                    &lt;name&gt;ctl.jks&lt;/name&gt;
                    &lt;dname&gt;CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA&lt;/dname&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTGHQubhwHV9aYycwWBO28GdM+0EbfzFmaKhmDhRYeXS6rzNXHoliYz24Nm9Rrgrt6HUbPrex4U1IKGVHfZ0Ok7NBGIva1O3gjWP564Pdsk02VALY+3x/pSHApp4XbOoK9VYCcR27ceSz8ZakXtNqIJSP+ns/tei6wcB1xSE+4cbVJyYGh1UDqWS1/VdQBlNy6nfXdApw0tanG7ZJFszyDip/doAf8261x3CC98HK81B7ThgpPdwkfKnvxYuSkF3b/1W4TMZRXQKoNXSvvbt7QShC9dyN22zdxIdTlv2E9FgZtMCzHJbnTYQbVnfqASfUj5iF5Ghkz+IM8Ctr6HcZo+25RTqGaKLuZdDKZsbvA3YcX7uBb/X1nA/l2LI0ZdEShpllIgbm3+J55OpqL0QTF2WZCJWu7Da/ancqEis6zpVPrbdOAE1k22Fr+Ctg0l0irt86r8kcXv1m/S5c5k9OItEy6ZsXWcPBbLtn9vnpWI2Dvf6pB53cBpe3xC6ucl3Y31l0zrhw8JROv6BOV1HsYa2L7AMj+iaHNbumqX3rTxLSXsEEPVFiw07o5dj4j2lmaBUCQCGfvTCMExpzSs5/HrTOQhLHQzIkzuu9OEYw9OJOM9PPormeqd4mDlQo3opDFfVwJzc0TICklSr+OcNsKHMoYGuMYgcDR+W3fF13PF/ADvelxR6Jyc9nossRkhn8boEwu2OUhnUrgkfj5dvcaIyEt3QXbN0bp7fLAjJL3bmmqJh3BA6hnVheoEvZU8igAkdqL2y4J9UlXx+JkqZVoJEWizc4jYLpurXL9S0WYbXa37xZBh21j77UbBUBT6fCKjFbnYCjJKOPIfraTehhVxFKiHwwaUk0rYaUMbQMAasY8Z9h921xnfci307Gz2WuvN2blL3RG0n2ylzVTO9W4KWZf8lN1jpLT416KmVoaY7ltl58IQJHIn8Xda2pYe9o9QcgzVBY0gk8IfXThTKl2yFNREbE41NvCmkKQ70wg1/0BOuKAvMkje+CuHggKZXw/h+uw5wS7PGLv+P5ttt2sLjnbxtnFPu1NSS89AJ7iu4djWlEyMTXRGG9N2k1CLygLBXe4SAImLTZdd7N527Q28A3HqMgJQY6Lttme9oIpm+DQl9aQIIJgDZb9vvh9f/w4bYvCRHiwBqWNv+u9+PX0+seqNR1kpGOk933QFd0DGlQhpDrcB3yfQ9amX0V2ThyS6hqtMqgJDsacXG0DsZvotEq/uQ0Y/y++7b8g/3qto/eQ8AtVYnMwDwZJxNfEPJaWlC75coGq26S82cZdXjs48kjW88bcyW4+vhsW6eV+vR4z8u7YgQDBpNqbp1R6LixkqEiMRzkK6tbzvhdOxKzMO5qwuG1j3a2S4AjNxnfph0KUM0o5X/jDpjA7NndqzsanXunCTbr1gC0NKgoSzIfb5FtAVlGocJ+YWMrQYAfZ5EQyPVHTI0oW5V2T4jV7dATMpSXFBJ9Rp7PH02d0rtETqUF0b6Yzd8j2eNG82MXrU9yeshDY6xAD2PK0IQ2iMIXVTvohvMwvXKq7AiGiBI7RGUb+yWlkaYNBbz4L78d98li8+AT1wyfjSS06oa+UeAqFY3ADccuHzX1ZyUzlghNQCEu3mrLW2cIaQFftP+h3QfT0nRI7X7/3qeBiMD7VjhZfSVJwrY6DIdtrax4cUmqVrY1qxnbtmygGasXfC1c7vN/mrMPw+GLHjEaC8hRSQFs3WCV6uGu+LJ9Du3STlQKWEM/BhBU2oSGqaJkeI85I3JypXY=&lt;/keystoreFile&gt;
                    &lt;key-alg&gt;RSA&lt;/key-alg&gt;
                    &lt;keysize&gt;1024&lt;/keysize&gt;
                &lt;/odl-keystore&gt;
                &lt;cipher-suites&gt;
                    &lt;suiteName/&gt;
                &lt;/cipher-suites&gt;
                &lt;trust-keystore&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTcoJvqo8Gw5sBv9S7MPdfC8Ey5w0ERj70l1baW6SoxGbO2hfKQ==&lt;/keystoreFile&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j6X21ePQ7B2NsEEpHtEh2FY13wcfZiComYctBEY=&lt;/store-password&gt;
                    &lt;name&gt;truststore.jks&lt;/name&gt;
                &lt;/trust-keystore&gt;
            &lt;/ssl-data&gt;
        &lt;/key-stores&gt;
        &lt;odl-bmp-monitors xmlns="urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"&gt;
            &lt;bmp-monitor-config&gt;
                &lt;monitor-id&gt;example-bmp-monitor&lt;/monitor-id&gt;
                &lt;server&gt;
                    &lt;binding-port&gt;12345&lt;/binding-port&gt;
                    &lt;binding-address&gt;0.0.0.0&lt;/binding-address&gt;
                &lt;/server&gt;
            &lt;/bmp-monitor-config&gt;
        &lt;/odl-bmp-monitors&gt;
        &lt;aaa-encrypt-service-config xmlns="config:aaa:authn:encrypt:service:config"&gt;
            &lt;encrypt-type&gt;AES&lt;/encrypt-type&gt;
            &lt;encrypt-key-length&gt;128&lt;/encrypt-key-length&gt;
            &lt;password-length&gt;12&lt;/password-length&gt;
            &lt;cipher-transforms&gt;AES/GCM/NoPadding&lt;/cipher-transforms&gt;
            &lt;encrypt-key&gt;DYmlnajBzTZj&lt;/encrypt-key&gt;
            &lt;encrypt-salt&gt;CwWGOgKD82i1gQRzdbP9jw==&lt;/encrypt-salt&gt;
            &lt;auth-tag-length&gt;128&lt;/auth-tag-length&gt;
            &lt;encrypt-method&gt;PBKDF2WithHmacSHA1&lt;/encrypt-method&gt;
            &lt;encrypt-iteration-count&gt;32768&lt;/encrypt-iteration-count&gt;
        &lt;/aaa-encrypt-service-config&gt;
        &lt;routing-policy xmlns="http://openconfig.net/yang/routing-policy"&gt;
            &lt;defined-sets&gt;
                &lt;bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                    &lt;role-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-internal&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ibgp&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;all&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ebgp&lt;/role-set-name&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;ibgp-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                    &lt;/role-sets&gt;
                    &lt;originator-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;originator-id-set&gt;
                            &lt;originator-id-set-name&gt;local-originator-id&lt;/originator-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/originator-id-set&gt;
                    &lt;/originator-id-sets&gt;
                    &lt;cluster-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;cluster-id-set&gt;
                            &lt;cluster-id-set-name&gt;local-cluster-id&lt;/cluster-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/cluster-id-set&gt;
                    &lt;/cluster-id-sets&gt;
                &lt;/bgp-defined-sets&gt;
            &lt;/defined-sets&gt;
            &lt;policy-definitions&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-export-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-odl-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="all"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-odl-internal-to-internal-or-rr-client&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-rr-client-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-not-in xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy" xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-not-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-next-hop&gt;SELF&lt;/set-next-hop&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;vpn-membership-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV6-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV4-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;vpn-non-member xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-import-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-non-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                            &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                    &lt;match-cluster-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;cluster-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/cluster-id-sets/cluster-id-set[cluster-set-name="local-cluster-id"]&lt;/cluster-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-cluster-id-set-condition&gt;
                                    &lt;match-originator-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;originator-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/originator-id-sets/originator-id-set[originator-set-name="local-originator-id"]&lt;/originator-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-originator-id-set-condition&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
            &lt;/policy-definitions&gt;
        &lt;/routing-policy&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-default-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6653&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-legacy-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6633&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:30.287688" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:prefix="http://www.example.com/my-schema-example.html" additional="otherthing...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:29.874920" elapsed="0.412798"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:30.287766" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:35:30.287920" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:prefix="http://www.example.com/my-schema-example.html" additional="otherthing...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:29.869167" elapsed="0.418780"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:30.287991" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:30.288133" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:prefix="http://www.example.com/my-schema-example.html" additional="otherthing...</msg>
<var>${reply}</var>
<arg>additional-attr</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:29.867832" elapsed="0.420328"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:30.288311" elapsed="0.000349"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>message-id="1"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:30.288804" elapsed="0.000292"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>attribute="something"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:30.289238" elapsed="0.000306"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>additional="otherthing"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:30.289686" elapsed="0.000287"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>xmlns:prefix="http://www.example.com/my-schema-example.html"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:30.290113" elapsed="0.000282"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.291642" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:30.291256" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.291238" elapsed="0.000492"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:30.291864" elapsed="0.000306"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:30.296847" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:30.296318" elapsed="0.000557"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:30.297097" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:30.296949" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.296931" elapsed="0.000246"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.297311" elapsed="0.000020"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.297486" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.297646" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.297794" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.297942" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.298091" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.298237" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:30.296029" elapsed="0.002283"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:30.291048" elapsed="0.007314"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:30.290670" elapsed="0.007734"/>
</kw>
<doc>Check that additional attributes in messages are returned properly (RFC 6241, sections 4.1 and 4.2).</doc>
<status status="PASS" start="2026-04-05T00:35:29.774132" elapsed="0.524326"/>
</test>
<test id="s1-s3-s1-t5" name="Send_Stuff_In_Undefined_Namespace" line="79">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:30.301930" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:30.301663" elapsed="0.000529"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.303164" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:30.303056" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.303037" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.307582" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:30.307472" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.307453" elapsed="0.000196"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:30.308599" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:30.308208" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:30.309062" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:30.308770" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:30.309131" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:30.309299" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:30.307855" elapsed="0.001468"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.314298" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:30.314193" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.314174" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.315697" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:30.315593" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.315575" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:30.316250" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:30.315893" elapsed="0.000383"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.316692" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:30.316420" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.356509" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:30.317230" elapsed="0.039450"/>
</kw>
<msg time="2026-04-05T00:35:30.356848" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:30.356894" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.316862" elapsed="0.040068"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.382307" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "S "e "n "d "_ "S "t "u "f "f "_ "I "n "_ "U "n "d "e "f "i "n "e "d "_ "N "a "m "e "s "p "a "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:30.357482" elapsed="0.025020"/>
</kw>
<msg time="2026-04-05T00:35:30.382669" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:30.382713" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "S "e "n "d "_ "S "t "u "f "f "_ "I "n "_ "U "n "d ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.357085" elapsed="0.025664"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.383036" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:30.382827" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.382806" elapsed="0.000348"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:30.383681" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "S "e "n "d "_ "S "t "u "f "f "_ "I "n "_ "U "n "d "e "f "i "n "e "d "_ "N "a "m "e "s "p "a "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:30.383288" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.384055" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:30.383853" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.383834" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:30.384186" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:30.386897" elapsed="0.000143"/>
</kw>
<msg time="2026-04-05T00:35:30.387139" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:30.386301" elapsed="0.000939"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.388043" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.388863" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:30.385000" elapsed="0.003975"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:30.384443" elapsed="0.004646"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:30.315271" elapsed="0.073915"/>
</kw>
<msg time="2026-04-05T00:35:30.389275" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:30.389318" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "S "e "n "d "_ "S "t "u "f "f "_ "I "n "_ "U "n "d ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.314517" elapsed="0.074836"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:30.389553" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:30.389445" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.389411" elapsed="0.000224"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.390003" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.390329" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.390399" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:30.313863" elapsed="0.076659"/>
</kw>
<msg time="2026-04-05T00:35:30.390613" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:30.390655" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "S "e "n "d "_ "S "t "u "f "f "_ "I "n "_ "U "n "d ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.309692" elapsed="0.080999"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.390997" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:30.390765" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.390747" elapsed="0.000325"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:30.309563" elapsed="0.081534"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:30.309376" elapsed="0.081772"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:30.307105" elapsed="0.084105"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:30.302758" elapsed="0.088509"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.302329" elapsed="0.088982"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:30.299299" elapsed="0.092062"/>
</kw>
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:30.392322" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-nonexistent-namespace-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-nonexistent-namespace-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:30.392472" level="INFO">${data} = &lt;rpc message-id="2" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
  &lt;edit-config&gt;
    &lt;target&gt;
      &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;default-operation&gt;merge&lt;/default-operation&gt;
    &lt;config&gt;
...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:30.392112" elapsed="0.000390"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:30.392577" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:30.392726" level="INFO">${request} = &lt;rpc message-id="2" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
  &lt;edit-config&gt;
    &lt;target&gt;
      &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;default-operation&gt;merge&lt;/default-operation&gt;
    &lt;config&gt;
...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:30.391814" elapsed="0.000940"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.395373" level="INFO">&lt;rpc message-id="2" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:30.393486" elapsed="0.001983"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.396036" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:30.395613" elapsed="0.000474"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.400142" level="INFO">&lt;target&gt;
      &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;default-operation&gt;merge&lt;/default-operation&gt;
    &lt;config&gt;
      &lt;does-not-exist xmlns="urn:this:is:in:a:nonexistent:namespace"&gt;
        &lt;entry&gt;
          &lt;id&gt;TOY001&lt;/id&gt;
          &lt;name&gt;Some Toy&lt;/name&gt;
          &lt;year&gt;2016&lt;/year&gt;
          &lt;category&gt;toys&lt;/category&gt;
        &lt;/entry&gt;
      &lt;/does-not-exist&gt;
    &lt;/config&gt;
  &lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:30.396224" elapsed="0.003981"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:30.393181" elapsed="0.007081"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.414350" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply a="64" message-id="2" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;application&lt;/error-type&gt;
        &lt;error-tag&gt;unknown-namespace&lt;/error-tag&gt;
        &lt;error-severity&gt;error&lt;/error-severity&gt;
        &lt;error-message&gt;Unable to find module by namespace: urn:this:is:in:a:nonexistent:namespace&lt;/error-message&gt;
    &lt;/rpc-error&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:30.414467" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply a="64" message-id="2" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;application&lt;/error-typ...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:30.400398" elapsed="0.014098"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:30.414544" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:35:30.414697" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply a="64" message-id="2" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;application&lt;/error-typ...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:30.392894" elapsed="0.021831"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:30.414769" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:30.414913" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply a="64" message-id="2" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;application&lt;/error-typ...</msg>
<var>${reply}</var>
<arg>merge-nonexistent-namespace</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:30.391543" elapsed="0.023399"/>
</kw>
<kw name="Set_Known_Bug_Id" owner="SetupUtils">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:30.415837" level="INFO">${SetupUtils__Known_Bug_ID} = 5125</msg>
<arg>${SetupUtils__Known_Bug_ID}</arg>
<arg>${id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:30.415473" elapsed="0.000406"/>
</kw>
<arg>5125</arg>
<doc>Tell the Teardown keywords that any failure from now on is due to the specified known bug.</doc>
<status status="PASS" start="2026-04-05T00:35:30.415129" elapsed="0.000808"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>java.lang.NullPointerException</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:30.416072" elapsed="0.000296"/>
</kw>
<kw name="Set_Unknown_Bug_Id" owner="SetupUtils">
<kw name="Set_Known_Bug_Id" owner="SetupUtils">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:30.419537" level="INFO">${SetupUtils__Known_Bug_ID} = </msg>
<arg>${SetupUtils__Known_Bug_ID}</arg>
<arg>${id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:30.419125" elapsed="0.000455"/>
</kw>
<arg>${EMPTY}</arg>
<doc>Tell the Teardown keywords that any failure from now on is due to the specified known bug.</doc>
<status status="PASS" start="2026-04-05T00:35:30.417059" elapsed="0.002579"/>
</kw>
<doc>Tell the Teardown keywords that from now on there is no longer known bug causing the failure so it should use linked bugs.</doc>
<status status="PASS" start="2026-04-05T00:35:30.416570" elapsed="0.003117"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>urn:this:is:in:a:nonexistent:namespace</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:30.419819" elapsed="0.000363"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;rpc-error&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:30.420326" elapsed="0.000306"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.421809" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:30.421442" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.421406" elapsed="0.000490"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:30.422028" elapsed="0.000425"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:30.427009" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:30.426610" elapsed="0.000426"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:30.427283" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:30.427109" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.427091" elapsed="0.000276"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.427523" elapsed="0.000028"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.427687" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.427841" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.427990" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.428137" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.428285" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.428446" elapsed="0.000021"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:30.426309" elapsed="0.002213"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:30.421219" elapsed="0.007353"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:30.420880" elapsed="0.007731"/>
</kw>
<doc>Try to send something within an undefined namespace and check the reply complains about the nonexistent namespace and element.</doc>
<status status="PASS" start="2026-04-05T00:35:30.298682" elapsed="0.129967"/>
</test>
<test id="s1-s3-s1-t6" name="Edit_Config_First_Batch_Merge" line="88">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:30.431583" elapsed="0.000203"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:30.431315" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.432778" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:30.432672" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.432653" elapsed="0.000192"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.438867" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:30.438761" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.438743" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:30.439926" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:30.439548" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:30.440391" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:30.440097" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:30.440478" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:30.440633" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:30.439142" elapsed="0.001515"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.445635" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:30.445530" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.445511" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.446873" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:30.446769" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.446751" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:30.447494" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:30.447066" elapsed="0.000461"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.447915" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:30.447671" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.490815" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:30.448466" elapsed="0.042530"/>
</kw>
<msg time="2026-04-05T00:35:30.491164" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:30.491209" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.448083" elapsed="0.043162"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.522016" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "F "i "r "s "t "_ "B "a "t "c "h "_ "M "e "r "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:30.491875" elapsed="0.030493"/>
</kw>
<msg time="2026-04-05T00:35:30.522678" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:30.522726" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "F "i "r "s "t ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.491493" elapsed="0.031272"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.523257" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:30.522910" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.522861" elapsed="0.000508"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:30.524036" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "F "i "r "s "t "_ "B "a "t "c "h "_ "M "e "r "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:30.523543" elapsed="0.000569"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.524382" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:30.524180" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.524161" elapsed="0.000340"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:30.524540" elapsed="0.000048"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:30.527772" elapsed="0.000156"/>
</kw>
<msg time="2026-04-05T00:35:30.528001" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:30.527097" elapsed="0.001014"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.528946" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.529789" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:30.525530" elapsed="0.004374"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:30.524872" elapsed="0.005149"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:30.446468" elapsed="0.083652"/>
</kw>
<msg time="2026-04-05T00:35:30.530215" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:30.530259" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "F "i "r "s "t ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.445837" elapsed="0.084465"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:30.530794" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:30.530677" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.530362" elapsed="0.000518"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.531296" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.531659" elapsed="0.000084"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.531792" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:30.445181" elapsed="0.086721"/>
</kw>
<msg time="2026-04-05T00:35:30.531996" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:30.532039" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "F "i "r "s "t ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.441008" elapsed="0.091067"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.532387" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:30.532152" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.532135" elapsed="0.000356"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:30.440882" elapsed="0.091634"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:30.440711" elapsed="0.091839"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:30.438388" elapsed="0.094222"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:30.432374" elapsed="0.100296"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.431972" elapsed="0.100745"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:30.429370" elapsed="0.103405"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:30.534082" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-1-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-1-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:30.534292" level="INFO">${data} = &lt;rpc message-id="2" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:openday...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:30.533855" elapsed="0.000466"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:30.534367" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:30.534533" level="INFO">${request} = &lt;rpc message-id="2" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:openday...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:30.533555" elapsed="0.001007"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.537530" level="INFO">&lt;rpc message-id="2" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:30.535291" elapsed="0.002296"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.538075" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:30.537727" elapsed="0.000400"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.545828" level="INFO">&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;TOY001&lt;/id&gt;
    &lt;model&gt;Toyota Corolla&lt;/model&gt;
    &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
    &lt;year&gt;2016&lt;/year&gt;
    &lt;category&gt;sedan&lt;/category&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;
&lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
  &lt;person&gt;
    &lt;id&gt;CUST001&lt;/id&gt;
    &lt;age&gt;32&lt;/age&gt;
  &lt;/person&gt;
&lt;/people&gt;
&lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
  &lt;car-person&gt;
    &lt;car-id&gt;TOY001&lt;/car-id&gt;
    &lt;person-id&gt;CUST001&lt;/person-id&gt;
  &lt;/car-person&gt;
&lt;/car-people&gt;
&lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:30.538265" elapsed="0.007636"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:30.535000" elapsed="0.010958"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.550098" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="2"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:30.550189" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="2"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:30.546095" elapsed="0.004121"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:30.550261" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:30.550410" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="2"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:30.534708" elapsed="0.015781"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:30.550535" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:30.550679" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="2"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:30.533249" elapsed="0.017457"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:30.551710" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-1-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-1-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:30.551838" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="2"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:30.551460" elapsed="0.000405"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:30.551911" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:30.552057" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="2"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:30.551141" elapsed="0.000943"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:30.552127" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:30.552271" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="2"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:30.550847" elapsed="0.001450"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:30.552665" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="2"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:30.552454" elapsed="0.000241"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:30.553079" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="2"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:30.552840" elapsed="0.000268"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:30.553254" elapsed="0.000507"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:30.553815" elapsed="0.000028"/>
</return>
<arg>merge-1</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:30.532967" elapsed="0.020971"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.555382" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:30.555013" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.554995" elapsed="0.000489"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:30.555628" elapsed="0.000309"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:30.560603" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:30.560167" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:30.560844" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:30.560704" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.560686" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.561059" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.561217" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.561374" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.561547" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.561699" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.561849" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.562037" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:30.559882" elapsed="0.002233"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:30.554801" elapsed="0.007364"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:30.554201" elapsed="0.008005"/>
</kw>
<doc>Request a "merge" operation adding an element in candidate configuration and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:30.428847" elapsed="0.133400"/>
</test>
<test id="s1-s3-s1-t7" name="Get_Config_Running_To_Confirm_No_Edit_Before_Commit" line="92">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:30.565286" elapsed="0.000226"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:30.565041" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.566524" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:30.566398" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.566380" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.571050" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:30.570945" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.570927" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:30.572100" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:30.571719" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:30.572582" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:30.572271" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:30.572653" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:30.572805" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:30.571328" elapsed="0.001501"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.578017" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:30.577910" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.577891" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.579247" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:30.579143" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.579124" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:30.579855" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:30.579464" elapsed="0.000418"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.580270" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:30.580027" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.621967" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:30.580831" elapsed="0.041311"/>
</kw>
<msg time="2026-04-05T00:35:30.622308" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:30.622353" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.580459" elapsed="0.041931"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.659408" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n "g "_ "T "o "_ "C "o "n "f "i "r "m "_ "N "o "_ "E "d "i "t "_ "B "e "f "o "r "e "_ "C "o "m "m "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:30.622947" elapsed="0.036680"/>
</kw>
<msg time="2026-04-05T00:35:30.659824" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:30.659874" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.622569" elapsed="0.037387"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.660274" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:30.660047" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.660022" elapsed="0.000356"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:30.660933" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n "g "_ "T "o "_ "C "o "n "f "i "r "m "_ "N "o "_ "E "d "i "t "_ "B "e "f "o "r "e "_ "C "o "m "m "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:30.660531" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.661279" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:30.661078" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.661059" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:30.661413" elapsed="0.000055"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:30.664322" elapsed="0.000164"/>
</kw>
<msg time="2026-04-05T00:35:30.664564" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:30.663689" elapsed="0.000976"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.665486" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.666301" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:30.662295" elapsed="0.004120"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:30.661715" elapsed="0.004836"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:30.578846" elapsed="0.087807"/>
</kw>
<msg time="2026-04-05T00:35:30.666747" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:30.666791" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.578222" elapsed="0.088606"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:30.667012" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:30.666906" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.666887" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.667505" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.667846" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:30.667918" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:30.577577" elapsed="0.090449"/>
</kw>
<msg time="2026-04-05T00:35:30.668118" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:30.668162" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.573191" elapsed="0.095008"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:30.668527" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:30.668276" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:30.668258" elapsed="0.000351"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:30.573062" elapsed="0.095571"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:30.572887" elapsed="0.095777"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:30.570591" elapsed="0.098128"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:30.566112" elapsed="0.102662"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:30.565701" elapsed="0.103154"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:30.563074" elapsed="0.105837"/>
</kw>
<kw name="Check_Test_Objects_Not_Present_In_Config">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:30.670403" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-no-edit-before-commit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-no-edit-before-commit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:30.670630" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:30.669983" elapsed="0.000677"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:30.670708" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:30.670856" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:30.669680" elapsed="0.001203"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.673370" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:30.671626" elapsed="0.001986"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.674127" level="INFO">&lt;get-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:30.673758" elapsed="0.000420"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:30.675443" level="INFO">&lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:30.674315" elapsed="0.001183"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:30.671313" elapsed="0.004241"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.083251" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfig.net/yang/network-instance"&gt;
            &lt;network-instance&gt;
                &lt;name&gt;global-bgp&lt;/name&gt;
                &lt;protocols/&gt;
            &lt;/network-instance&gt;
        &lt;/network-instances&gt;
        &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;
                &lt;node&gt;
                    &lt;node-id&gt;43.43.43.43&lt;/node-id&gt;
                    &lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;password&gt;topsecret&lt;/password&gt;
                        &lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;
                    &lt;/session-config&gt;
                &lt;/node&gt;
                &lt;topology-types&gt;
                    &lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;
                        &lt;session-config&gt;
                            &lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;
                            &lt;listen-port&gt;4189&lt;/listen-port&gt;
                            &lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;
                            &lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;
                            &lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;
                        &lt;/session-config&gt;
                    &lt;/topology-pcep&gt;
                &lt;/topology-types&gt;
            &lt;/topology&gt;
        &lt;/network-topology&gt;
        &lt;key-stores xmlns="urn:opendaylight:yang:aaa:cert:mdsal"&gt;
            &lt;id&gt;KeyStores:1&lt;/id&gt;
            &lt;ssl-data&gt;
                &lt;bundle-name&gt;opendaylight&lt;/bundle-name&gt;
                &lt;tls-protocols/&gt;
                &lt;odl-keystore&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j7eR9+jY/ReL6ScBdTboi/ykrFmYXQQ7xFuusDY=&lt;/store-password&gt;
                    &lt;sign-alg&gt;SHA1WithRSAEncryption&lt;/sign-alg&gt;
                    &lt;validity&gt;365&lt;/validity&gt;
                    &lt;alias&gt;controller&lt;/alias&gt;
                    &lt;name&gt;ctl.jks&lt;/name&gt;
                    &lt;dname&gt;CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA&lt;/dname&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTGHQubhwHV9aYycwWBO28GdM+0EbfzFmaKhmDhRYeXS6rzNXHoliYz24Nm9Rrgrt6HUbPrex4U1IKGVHfZ0Ok7NBGIva1O3gjWP564Pdsk02VALY+3x/pSHApp4XbOoK9VYCcR27ceSz8ZakXtNqIJSP+ns/tei6wcB1xSE+4cbVJyYGh1UDqWS1/VdQBlNy6nfXdApw0tanG7ZJFszyDip/doAf8261x3CC98HK81B7ThgpPdwkfKnvxYuSkF3b/1W4TMZRXQKoNXSvvbt7QShC9dyN22zdxIdTlv2E9FgZtMCzHJbnTYQbVnfqASfUj5iF5Ghkz+IM8Ctr6HcZo+25RTqGaKLuZdDKZsbvA3YcX7uBb/X1nA/l2LI0ZdEShpllIgbm3+J55OpqL0QTF2WZCJWu7Da/ancqEis6zpVPrbdOAE1k22Fr+Ctg0l0irt86r8kcXv1m/S5c5k9OItEy6ZsXWcPBbLtn9vnpWI2Dvf6pB53cBpe3xC6ucl3Y31l0zrhw8JROv6BOV1HsYa2L7AMj+iaHNbumqX3rTxLSXsEEPVFiw07o5dj4j2lmaBUCQCGfvTCMExpzSs5/HrTOQhLHQzIkzuu9OEYw9OJOM9PPormeqd4mDlQo3opDFfVwJzc0TICklSr+OcNsKHMoYGuMYgcDR+W3fF13PF/ADvelxR6Jyc9nossRkhn8boEwu2OUhnUrgkfj5dvcaIyEt3QXbN0bp7fLAjJL3bmmqJh3BA6hnVheoEvZU8igAkdqL2y4J9UlXx+JkqZVoJEWizc4jYLpurXL9S0WYbXa37xZBh21j77UbBUBT6fCKjFbnYCjJKOPIfraTehhVxFKiHwwaUk0rYaUMbQMAasY8Z9h921xnfci307Gz2WuvN2blL3RG0n2ylzVTO9W4KWZf8lN1jpLT416KmVoaY7ltl58IQJHIn8Xda2pYe9o9QcgzVBY0gk8IfXThTKl2yFNREbE41NvCmkKQ70wg1/0BOuKAvMkje+CuHggKZXw/h+uw5wS7PGLv+P5ttt2sLjnbxtnFPu1NSS89AJ7iu4djWlEyMTXRGG9N2k1CLygLBXe4SAImLTZdd7N527Q28A3HqMgJQY6Lttme9oIpm+DQl9aQIIJgDZb9vvh9f/w4bYvCRHiwBqWNv+u9+PX0+seqNR1kpGOk933QFd0DGlQhpDrcB3yfQ9amX0V2ThyS6hqtMqgJDsacXG0DsZvotEq/uQ0Y/y++7b8g/3qto/eQ8AtVYnMwDwZJxNfEPJaWlC75coGq26S82cZdXjs48kjW88bcyW4+vhsW6eV+vR4z8u7YgQDBpNqbp1R6LixkqEiMRzkK6tbzvhdOxKzMO5qwuG1j3a2S4AjNxnfph0KUM0o5X/jDpjA7NndqzsanXunCTbr1gC0NKgoSzIfb5FtAVlGocJ+YWMrQYAfZ5EQyPVHTI0oW5V2T4jV7dATMpSXFBJ9Rp7PH02d0rtETqUF0b6Yzd8j2eNG82MXrU9yeshDY6xAD2PK0IQ2iMIXVTvohvMwvXKq7AiGiBI7RGUb+yWlkaYNBbz4L78d98li8+AT1wyfjSS06oa+UeAqFY3ADccuHzX1ZyUzlghNQCEu3mrLW2cIaQFftP+h3QfT0nRI7X7/3qeBiMD7VjhZfSVJwrY6DIdtrax4cUmqVrY1qxnbtmygGasXfC1c7vN/mrMPw+GLHjEaC8hRSQFs3WCV6uGu+LJ9Du3STlQKWEM/BhBU2oSGqaJkeI85I3JypXY=&lt;/keystoreFile&gt;
                    &lt;key-alg&gt;RSA&lt;/key-alg&gt;
                    &lt;keysize&gt;1024&lt;/keysize&gt;
                &lt;/odl-keystore&gt;
                &lt;cipher-suites&gt;
                    &lt;suiteName/&gt;
                &lt;/cipher-suites&gt;
                &lt;trust-keystore&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTcoJvqo8Gw5sBv9S7MPdfC8Ey5w0ERj70l1baW6SoxGbO2hfKQ==&lt;/keystoreFile&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j6X21ePQ7B2NsEEpHtEh2FY13wcfZiComYctBEY=&lt;/store-password&gt;
                    &lt;name&gt;truststore.jks&lt;/name&gt;
                &lt;/trust-keystore&gt;
            &lt;/ssl-data&gt;
        &lt;/key-stores&gt;
        &lt;odl-bmp-monitors xmlns="urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"&gt;
            &lt;bmp-monitor-config&gt;
                &lt;monitor-id&gt;example-bmp-monitor&lt;/monitor-id&gt;
                &lt;server&gt;
                    &lt;binding-port&gt;12345&lt;/binding-port&gt;
                    &lt;binding-address&gt;0.0.0.0&lt;/binding-address&gt;
                &lt;/server&gt;
            &lt;/bmp-monitor-config&gt;
        &lt;/odl-bmp-monitors&gt;
        &lt;aaa-encrypt-service-config xmlns="config:aaa:authn:encrypt:service:config"&gt;
            &lt;encrypt-type&gt;AES&lt;/encrypt-type&gt;
            &lt;encrypt-key-length&gt;128&lt;/encrypt-key-length&gt;
            &lt;password-length&gt;12&lt;/password-length&gt;
            &lt;cipher-transforms&gt;AES/GCM/NoPadding&lt;/cipher-transforms&gt;
            &lt;encrypt-key&gt;DYmlnajBzTZj&lt;/encrypt-key&gt;
            &lt;encrypt-salt&gt;CwWGOgKD82i1gQRzdbP9jw==&lt;/encrypt-salt&gt;
            &lt;auth-tag-length&gt;128&lt;/auth-tag-length&gt;
            &lt;encrypt-method&gt;PBKDF2WithHmacSHA1&lt;/encrypt-method&gt;
            &lt;encrypt-iteration-count&gt;32768&lt;/encrypt-iteration-count&gt;
        &lt;/aaa-encrypt-service-config&gt;
        &lt;routing-policy xmlns="http://openconfig.net/yang/routing-policy"&gt;
            &lt;defined-sets&gt;
                &lt;bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                    &lt;role-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-internal&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ibgp&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;all&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ebgp&lt;/role-set-name&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;ibgp-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                    &lt;/role-sets&gt;
                    &lt;originator-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;originator-id-set&gt;
                            &lt;originator-id-set-name&gt;local-originator-id&lt;/originator-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/originator-id-set&gt;
                    &lt;/originator-id-sets&gt;
                    &lt;cluster-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;cluster-id-set&gt;
                            &lt;cluster-id-set-name&gt;local-cluster-id&lt;/cluster-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/cluster-id-set&gt;
                    &lt;/cluster-id-sets&gt;
                &lt;/bgp-defined-sets&gt;
            &lt;/defined-sets&gt;
            &lt;policy-definitions&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-export-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-odl-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="all"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-odl-internal-to-internal-or-rr-client&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-rr-client-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-not-in xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy" xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-not-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-next-hop&gt;SELF&lt;/set-next-hop&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;vpn-membership-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV6-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV4-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;vpn-non-member xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-import-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-non-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                            &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                    &lt;match-cluster-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;cluster-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/cluster-id-sets/cluster-id-set[cluster-set-name="local-cluster-id"]&lt;/cluster-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-cluster-id-set-condition&gt;
                                    &lt;match-originator-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;originator-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/originator-id-sets/originator-id-set[originator-set-name="local-originator-id"]&lt;/originator-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-originator-id-set-condition&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
            &lt;/policy-definitions&gt;
        &lt;/routing-policy&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-default-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6653&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-legacy-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6633&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:31.083896" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfi...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:30.675692" elapsed="0.408237"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:31.084010" elapsed="0.000057"/>
</return>
<msg time="2026-04-05T00:35:31.084221" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfi...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:30.671026" elapsed="0.413224"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:31.084297" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:31.084462" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfi...</msg>
<var>${reply}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:30.669354" elapsed="0.415139"/>
</kw>
<kw name="Check_Test_Objects_Absent">
<kw name="Check_First_Batch_Data_Not_Present">
<kw name="Check_First_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.086243" elapsed="0.000366"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.085740" elapsed="0.000939"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.087237" elapsed="0.000305"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.086825" elapsed="0.000772"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.088146" elapsed="0.000305"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.087737" elapsed="0.000771"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.089088" elapsed="0.000281"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.088648" elapsed="0.000789"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_Not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:31.085367" elapsed="0.004130"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:31.085074" elapsed="0.004471"/>
</kw>
<kw name="Check_Second_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;OLD001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.090413" elapsed="0.000342"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;OLD001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.090000" elapsed="0.000809"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST002&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.091357" elapsed="0.000303"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST002&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.090948" elapsed="0.000766"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;OLD001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.092396" elapsed="0.000307"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;OLD001&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.091976" elapsed="0.000796"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST002&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.093327" elapsed="0.000305"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST002&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.092919" elapsed="0.000769"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:31.089680" elapsed="0.004063"/>
</kw>
<kw name="Check_Multiple_Batch_Data_Absent">
<kw name="Check_Multiple_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.094984" elapsed="0.000496"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.094543" elapsed="0.000994"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.096089" elapsed="0.000283"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.095677" elapsed="0.000765"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.097024" elapsed="0.000285"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.096587" elapsed="0.000776"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.097979" elapsed="0.000282"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.097558" elapsed="0.000757"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CARYOUNG&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.098919" elapsed="0.000282"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CARYOUNG&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.098472" elapsed="0.000782"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTYOUNG&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.099819" elapsed="0.000286"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTYOUNG&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.099394" elapsed="0.000765"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARYOUNG&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.100722" elapsed="0.000298"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARYOUNG&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.100298" elapsed="0.000775"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.101640" elapsed="0.000280"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.101213" elapsed="0.000760"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CARMID&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.102533" elapsed="0.000314"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CARMID&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.102112" elapsed="0.000788"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTMID&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.103463" elapsed="0.000290"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTMID&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.103040" elapsed="0.000766"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARMID&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.104351" elapsed="0.000302"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARMID&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.103945" elapsed="0.000761"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTMID&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.105279" elapsed="0.000300"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTMID&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.104868" elapsed="0.000769"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD2&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.106187" elapsed="0.000299"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD2&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.105778" elapsed="0.000765"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD2&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.107122" elapsed="0.000283"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD2&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.106715" elapsed="0.000761"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD2&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.108025" elapsed="0.000283"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD2&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.107616" elapsed="0.000747"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.108947" elapsed="0.000285"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.108519" elapsed="0.000767"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:31.094215" elapsed="0.015129"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:31.093861" elapsed="0.015533"/>
</kw>
<kw name="Check_Auxiliary_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTBAD&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.110268" elapsed="0.000314"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTBAD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.109853" elapsed="0.000795"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.111205" elapsed="0.000306"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.110798" elapsed="0.000808"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:31.109533" elapsed="0.002130"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.111794" elapsed="0.000291"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:31.084732" elapsed="0.027414"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;REPLACE&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.112275" elapsed="0.000302"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:31.112626" elapsed="0.000029"/>
</return>
<arg>get-config-no-edit-before-commit</arg>
<doc>Use dataset with the specified name to get the configuration and check that none of our test objects are there.</doc>
<status status="PASS" start="2026-04-05T00:35:30.669076" elapsed="0.443673"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.114051" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:31.113642" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.113619" elapsed="0.000519"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:31.114271" elapsed="0.000343"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.119471" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:31.119045" elapsed="0.000454"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:31.119715" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:31.119574" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.119556" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.119927" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.120083" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.120239" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.120389" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.120558" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.120710" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.120883" elapsed="0.000021"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:31.118755" elapsed="0.002206"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:31.113406" elapsed="0.007605"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:31.113041" elapsed="0.008010"/>
</kw>
<doc>Make sure the running configuration is still unchanged as the change was not commited yet.</doc>
<status status="PASS" start="2026-04-05T00:35:30.562484" elapsed="0.558607"/>
</test>
<test id="s1-s3-s1-t8" name="Commit_Edit" line="96">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:31.123954" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:31.123709" elapsed="0.000503"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.125185" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.125079" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.125061" elapsed="0.000191"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.129781" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.129675" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.129657" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.130818" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:31.130437" elapsed="0.000446"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.131332" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:31.131033" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:31.131403" elapsed="0.000044"/>
</return>
<msg time="2026-04-05T00:35:31.131576" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:31.130063" elapsed="0.001538"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.136780" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.136670" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.136651" elapsed="0.000226"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.138081" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.137975" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.137957" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:31.138670" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:31.138279" elapsed="0.000418"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.139093" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:31.138844" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.179946" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:31.139657" elapsed="0.040455"/>
</kw>
<msg time="2026-04-05T00:35:31.180285" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:31.180330" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.139265" elapsed="0.041102"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.205477" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "E "d "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:31.180914" elapsed="0.024734"/>
</kw>
<msg time="2026-04-05T00:35:31.205818" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:31.205863" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "E "d "i "t "[K"
[?1l&gt;[?2004l[?1h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.180538" elapsed="0.025363"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.206186" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:31.205979" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.205958" elapsed="0.000327"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.206807" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "E "d "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:31.206415" elapsed="0.000454"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.207134" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:31.206935" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.206917" elapsed="0.000316"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:31.207266" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:31.210078" elapsed="0.000143"/>
</kw>
<msg time="2026-04-05T00:35:31.210290" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:31.209479" elapsed="0.000908"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.211191" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.212032" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:31.208109" elapsed="0.004071"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:31.207540" elapsed="0.004757"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:31.137676" elapsed="0.074720"/>
</kw>
<msg time="2026-04-05T00:35:31.212514" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:31.212558" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "E "d "i "t "[K"
[?1l&gt;[?2004l[?1h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.137015" elapsed="0.075582"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:31.212781" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:31.212674" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.212656" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.213256" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.213623" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.213696" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:31.136313" elapsed="0.077492"/>
</kw>
<msg time="2026-04-05T00:35:31.213897" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:31.213941" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "E "d "i "t "[K"
[?1l&gt;[?2004l[?1h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.131960" elapsed="0.082019"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.214287" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:31.214054" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.214036" elapsed="0.000326"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:31.131832" elapsed="0.082554"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:31.131657" elapsed="0.082759"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:31.129303" elapsed="0.085190"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:31.124780" elapsed="0.089768"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.124346" elapsed="0.090247"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:31.121751" elapsed="0.092892"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:31.216110" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:31.216292" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:31.215689" elapsed="0.000631"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:31.216366" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:31.216529" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:31.215371" elapsed="0.001186"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.219323" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:31.217309" elapsed="0.002072"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.219851" level="INFO">&lt;commit/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:31.219541" elapsed="0.000361"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.220502" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:31.220041" elapsed="0.000514"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:31.216990" elapsed="0.003621"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.226990" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:31.227119" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:31.220748" elapsed="0.006399"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:31.227193" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:35:31.227344" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:31.216703" elapsed="0.010669"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:31.227415" elapsed="0.000043"/>
</return>
<msg time="2026-04-05T00:35:31.227576" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:31.215083" elapsed="0.012520"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:31.228560" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:31.228732" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:31.228335" elapsed="0.000426"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:31.228808" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:31.228955" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:31.228033" elapsed="0.000948"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:31.229024" elapsed="0.000038"/>
</return>
<msg time="2026-04-05T00:35:31.229182" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:31.227741" elapsed="0.001468"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:31.229579" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:31.229349" elapsed="0.000261"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:31.229980" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:31.229754" elapsed="0.000255"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:31.230153" elapsed="0.000465"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:31.230671" elapsed="0.000028"/>
</return>
<arg>commit-edit</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:31.214808" elapsed="0.015985"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.231954" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:31.231595" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.231576" elapsed="0.000465"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:31.232179" elapsed="0.000330"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.237394" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:31.236974" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:31.237654" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:35:31.237513" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.237495" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.237871" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.238027" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.238184" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.238393" elapsed="0.000042"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.238620" elapsed="0.000023"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.238801" elapsed="0.000028"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.238997" elapsed="0.000028"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:31.236681" elapsed="0.002424"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:31.231370" elapsed="0.007802"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:31.231033" elapsed="0.008182"/>
</kw>
<doc>Commit the change and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:31.121308" elapsed="0.117946"/>
</test>
<test id="s1-s3-s1-t9" name="First_Batch_In_Config_Running_To_Confirm_Edit_After_Commit" line="100">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:31.242255" elapsed="0.000227"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:31.242008" elapsed="0.000529"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.243504" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.243379" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.243360" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.248080" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.247975" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.247956" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.249134" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:31.248736" elapsed="0.000426"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.249760" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:31.249306" elapsed="0.000481"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:31.249832" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:31.249988" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:31.248356" elapsed="0.001657"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.255281" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.255168" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.255148" elapsed="0.000202"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.256564" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.256455" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.256415" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:31.257151" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:31.256762" elapsed="0.000417"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.257606" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:31.257324" elapsed="0.000308"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.295341" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:31.258149" elapsed="0.037437"/>
</kw>
<msg time="2026-04-05T00:35:31.295762" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:31.295809" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.257777" elapsed="0.038069"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.332443" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "F "i "r "s "t "_ "B "a "t "c "h "_ "I "n "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n "g "_ "T "o "_ "C "o "n "f "i "r "m "_ "E "d "i "t "_ "A "f "t "e "r "_ "C "o "m "[78Cm "[A[78Ci
 "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:31.296391" elapsed="0.036243"/>
</kw>
<msg time="2026-04-05T00:35:31.332806" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:31.332852" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "F "i "r "s "t "_ "B "a "t "c "h "_ "I "n "_ "C "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.296008" elapsed="0.036881"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.333181" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:31.332968" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.332947" elapsed="0.000335"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.333839" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "F "i "r "s "t "_ "B "a "t "c "h "_ "I "n "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n "g "_ "T "o "_ "C "o "n "f "i "r "m "_ "E "d "i "t "_ "A "f "t "e "r "_ "C "o "m "[78Cm "[A[78Ci
 "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:31.333457" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.334189" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:31.333986" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.333968" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:31.334322" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:31.337127" elapsed="0.000145"/>
</kw>
<msg time="2026-04-05T00:35:31.337357" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:31.336530" elapsed="0.000945"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.338256" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.339090" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:31.335165" elapsed="0.004038"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:31.334592" elapsed="0.004726"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:31.256135" elapsed="0.083281"/>
</kw>
<msg time="2026-04-05T00:35:31.339535" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:31.339584" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "F "i "r "s "t "_ "B "a "t "c "h "_ "I "n "_ "C "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.255504" elapsed="0.084117"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:31.339806" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:31.339699" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.339680" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.340270" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.340631" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.340703" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:31.254819" elapsed="0.085992"/>
</kw>
<msg time="2026-04-05T00:35:31.340904" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:31.340949" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "F "i "r "s "t "_ "B "a "t "c "h "_ "I "n "_ "C "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.250385" elapsed="0.090601"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.341297" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:31.341061" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.341044" elapsed="0.000412"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:31.250251" elapsed="0.091235"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:31.250067" elapsed="0.091451"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:31.247616" elapsed="0.093959"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:31.243094" elapsed="0.098539"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.242673" elapsed="0.099005"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:31.240002" elapsed="0.101728"/>
</kw>
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:31.342697" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-edit-after-commit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-edit-after-commit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:31.342845" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:31.342479" elapsed="0.000395"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:31.342919" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:31.343064" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:31.342159" elapsed="0.000932"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.345910" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:31.344215" elapsed="0.001755"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.346494" level="INFO">&lt;get-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:31.346112" elapsed="0.000433"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.347883" level="INFO">&lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:31.346682" elapsed="0.001256"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:31.343922" elapsed="0.004072"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.775696" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
            &lt;person&gt;
                &lt;id&gt;CUST001&lt;/id&gt;
                &lt;age&gt;32&lt;/age&gt;
            &lt;/person&gt;
        &lt;/people&gt;
        &lt;network-instances xmlns="http://openconfig.net/yang/network-instance"&gt;
            &lt;network-instance&gt;
                &lt;name&gt;global-bgp&lt;/name&gt;
                &lt;protocols/&gt;
            &lt;/network-instance&gt;
        &lt;/network-instances&gt;
        &lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;TOY001&lt;/car-id&gt;
                &lt;person-id&gt;CUST001&lt;/person-id&gt;
            &lt;/car-person&gt;
        &lt;/car-people&gt;
        &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;
                &lt;node&gt;
                    &lt;node-id&gt;43.43.43.43&lt;/node-id&gt;
                    &lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;password&gt;topsecret&lt;/password&gt;
                        &lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;
                    &lt;/session-config&gt;
                &lt;/node&gt;
                &lt;topology-types&gt;
                    &lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;
                        &lt;session-config&gt;
                            &lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;
                            &lt;listen-port&gt;4189&lt;/listen-port&gt;
                            &lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;
                            &lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;
                            &lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;
                        &lt;/session-config&gt;
                    &lt;/topology-pcep&gt;
                &lt;/topology-types&gt;
            &lt;/topology&gt;
        &lt;/network-topology&gt;
        &lt;key-stores xmlns="urn:opendaylight:yang:aaa:cert:mdsal"&gt;
            &lt;id&gt;KeyStores:1&lt;/id&gt;
            &lt;ssl-data&gt;
                &lt;bundle-name&gt;opendaylight&lt;/bundle-name&gt;
                &lt;tls-protocols/&gt;
                &lt;odl-keystore&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j7eR9+jY/ReL6ScBdTboi/ykrFmYXQQ7xFuusDY=&lt;/store-password&gt;
                    &lt;sign-alg&gt;SHA1WithRSAEncryption&lt;/sign-alg&gt;
                    &lt;validity&gt;365&lt;/validity&gt;
                    &lt;alias&gt;controller&lt;/alias&gt;
                    &lt;name&gt;ctl.jks&lt;/name&gt;
                    &lt;dname&gt;CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA&lt;/dname&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTGHQubhwHV9aYycwWBO28GdM+0EbfzFmaKhmDhRYeXS6rzNXHoliYz24Nm9Rrgrt6HUbPrex4U1IKGVHfZ0Ok7NBGIva1O3gjWP564Pdsk02VALY+3x/pSHApp4XbOoK9VYCcR27ceSz8ZakXtNqIJSP+ns/tei6wcB1xSE+4cbVJyYGh1UDqWS1/VdQBlNy6nfXdApw0tanG7ZJFszyDip/doAf8261x3CC98HK81B7ThgpPdwkfKnvxYuSkF3b/1W4TMZRXQKoNXSvvbt7QShC9dyN22zdxIdTlv2E9FgZtMCzHJbnTYQbVnfqASfUj5iF5Ghkz+IM8Ctr6HcZo+25RTqGaKLuZdDKZsbvA3YcX7uBb/X1nA/l2LI0ZdEShpllIgbm3+J55OpqL0QTF2WZCJWu7Da/ancqEis6zpVPrbdOAE1k22Fr+Ctg0l0irt86r8kcXv1m/S5c5k9OItEy6ZsXWcPBbLtn9vnpWI2Dvf6pB53cBpe3xC6ucl3Y31l0zrhw8JROv6BOV1HsYa2L7AMj+iaHNbumqX3rTxLSXsEEPVFiw07o5dj4j2lmaBUCQCGfvTCMExpzSs5/HrTOQhLHQzIkzuu9OEYw9OJOM9PPormeqd4mDlQo3opDFfVwJzc0TICklSr+OcNsKHMoYGuMYgcDR+W3fF13PF/ADvelxR6Jyc9nossRkhn8boEwu2OUhnUrgkfj5dvcaIyEt3QXbN0bp7fLAjJL3bmmqJh3BA6hnVheoEvZU8igAkdqL2y4J9UlXx+JkqZVoJEWizc4jYLpurXL9S0WYbXa37xZBh21j77UbBUBT6fCKjFbnYCjJKOPIfraTehhVxFKiHwwaUk0rYaUMbQMAasY8Z9h921xnfci307Gz2WuvN2blL3RG0n2ylzVTO9W4KWZf8lN1jpLT416KmVoaY7ltl58IQJHIn8Xda2pYe9o9QcgzVBY0gk8IfXThTKl2yFNREbE41NvCmkKQ70wg1/0BOuKAvMkje+CuHggKZXw/h+uw5wS7PGLv+P5ttt2sLjnbxtnFPu1NSS89AJ7iu4djWlEyMTXRGG9N2k1CLygLBXe4SAImLTZdd7N527Q28A3HqMgJQY6Lttme9oIpm+DQl9aQIIJgDZb9vvh9f/w4bYvCRHiwBqWNv+u9+PX0+seqNR1kpGOk933QFd0DGlQhpDrcB3yfQ9amX0V2ThyS6hqtMqgJDsacXG0DsZvotEq/uQ0Y/y++7b8g/3qto/eQ8AtVYnMwDwZJxNfEPJaWlC75coGq26S82cZdXjs48kjW88bcyW4+vhsW6eV+vR4z8u7YgQDBpNqbp1R6LixkqEiMRzkK6tbzvhdOxKzMO5qwuG1j3a2S4AjNxnfph0KUM0o5X/jDpjA7NndqzsanXunCTbr1gC0NKgoSzIfb5FtAVlGocJ+YWMrQYAfZ5EQyPVHTI0oW5V2T4jV7dATMpSXFBJ9Rp7PH02d0rtETqUF0b6Yzd8j2eNG82MXrU9yeshDY6xAD2PK0IQ2iMIXVTvohvMwvXKq7AiGiBI7RGUb+yWlkaYNBbz4L78d98li8+AT1wyfjSS06oa+UeAqFY3ADccuHzX1ZyUzlghNQCEu3mrLW2cIaQFftP+h3QfT0nRI7X7/3qeBiMD7VjhZfSVJwrY6DIdtrax4cUmqVrY1qxnbtmygGasXfC1c7vN/mrMPw+GLHjEaC8hRSQFs3WCV6uGu+LJ9Du3STlQKWEM/BhBU2oSGqaJkeI85I3JypXY=&lt;/keystoreFile&gt;
                    &lt;key-alg&gt;RSA&lt;/key-alg&gt;
                    &lt;keysize&gt;1024&lt;/keysize&gt;
                &lt;/odl-keystore&gt;
                &lt;cipher-suites&gt;
                    &lt;suiteName/&gt;
                &lt;/cipher-suites&gt;
                &lt;trust-keystore&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTcoJvqo8Gw5sBv9S7MPdfC8Ey5w0ERj70l1baW6SoxGbO2hfKQ==&lt;/keystoreFile&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j6X21ePQ7B2NsEEpHtEh2FY13wcfZiComYctBEY=&lt;/store-password&gt;
                    &lt;name&gt;truststore.jks&lt;/name&gt;
                &lt;/trust-keystore&gt;
            &lt;/ssl-data&gt;
        &lt;/key-stores&gt;
        &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
            &lt;car-entry&gt;
                &lt;id&gt;TOY001&lt;/id&gt;
                &lt;model&gt;Toyota Corolla&lt;/model&gt;
                &lt;year&gt;2016&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
                &lt;category&gt;sedan&lt;/category&gt;
            &lt;/car-entry&gt;
        &lt;/cars&gt;
        &lt;odl-bmp-monitors xmlns="urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"&gt;
            &lt;bmp-monitor-config&gt;
                &lt;monitor-id&gt;example-bmp-monitor&lt;/monitor-id&gt;
                &lt;server&gt;
                    &lt;binding-port&gt;12345&lt;/binding-port&gt;
                    &lt;binding-address&gt;0.0.0.0&lt;/binding-address&gt;
                &lt;/server&gt;
            &lt;/bmp-monitor-config&gt;
        &lt;/odl-bmp-monitors&gt;
        &lt;aaa-encrypt-service-config xmlns="config:aaa:authn:encrypt:service:config"&gt;
            &lt;encrypt-type&gt;AES&lt;/encrypt-type&gt;
            &lt;encrypt-key-length&gt;128&lt;/encrypt-key-length&gt;
            &lt;password-length&gt;12&lt;/password-length&gt;
            &lt;cipher-transforms&gt;AES/GCM/NoPadding&lt;/cipher-transforms&gt;
            &lt;encrypt-key&gt;DYmlnajBzTZj&lt;/encrypt-key&gt;
            &lt;encrypt-salt&gt;CwWGOgKD82i1gQRzdbP9jw==&lt;/encrypt-salt&gt;
            &lt;auth-tag-length&gt;128&lt;/auth-tag-length&gt;
            &lt;encrypt-method&gt;PBKDF2WithHmacSHA1&lt;/encrypt-method&gt;
            &lt;encrypt-iteration-count&gt;32768&lt;/encrypt-iteration-count&gt;
        &lt;/aaa-encrypt-service-config&gt;
        &lt;routing-policy xmlns="http://openconfig.net/yang/routing-policy"&gt;
            &lt;defined-sets&gt;
                &lt;bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                    &lt;role-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-internal&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ibgp&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;all&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ebgp&lt;/role-set-name&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;ibgp-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                    &lt;/role-sets&gt;
                    &lt;originator-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;originator-id-set&gt;
                            &lt;originator-id-set-name&gt;local-originator-id&lt;/originator-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/originator-id-set&gt;
                    &lt;/originator-id-sets&gt;
                    &lt;cluster-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;cluster-id-set&gt;
                            &lt;cluster-id-set-name&gt;local-cluster-id&lt;/cluster-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/cluster-id-set&gt;
                    &lt;/cluster-id-sets&gt;
                &lt;/bgp-defined-sets&gt;
            &lt;/defined-sets&gt;
            &lt;policy-definitions&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-export-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-odl-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="all"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-odl-internal-to-internal-or-rr-client&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-rr-client-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-not-in xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy" xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-not-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-next-hop&gt;SELF&lt;/set-next-hop&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;vpn-membership-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV6-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV4-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;vpn-non-member xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-import-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-non-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                            &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                    &lt;match-cluster-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;cluster-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/cluster-id-sets/cluster-id-set[cluster-set-name="local-cluster-id"]&lt;/cluster-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-cluster-id-set-condition&gt;
                                    &lt;match-originator-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;originator-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/originator-id-sets/originator-id-set[originator-set-name="local-originator-id"]&lt;/originator-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-originator-id-set-condition&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
            &lt;/policy-definitions&gt;
        &lt;/routing-policy&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-default-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6653&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-legacy-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6633&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:31.776452" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:31.348130" elapsed="0.428356"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:31.776578" elapsed="0.000060"/>
</return>
<msg time="2026-04-05T00:35:31.776799" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:31.343233" elapsed="0.433596"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:31.776878" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:31.777041" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:...</msg>
<var>${reply}</var>
<arg>get-config-edit-after-commit</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:31.341886" elapsed="0.435186"/>
</kw>
<kw name="Check_First_Batch_Data_Present">
<kw name="Check_First_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.778522" elapsed="0.000324"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.777997" elapsed="0.000908"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.779482" elapsed="0.000292"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.779050" elapsed="0.000780"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.780384" elapsed="0.000297"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.779971" elapsed="0.000765"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:31.781286" elapsed="0.000299"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:31.780877" elapsed="0.000764"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:31.777643" elapsed="0.004056"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:31.777274" elapsed="0.004475"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.783018" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:31.782630" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.782609" elapsed="0.000495"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:31.783235" elapsed="0.000326"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.788126" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:31.787718" elapsed="0.000435"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:31.788370" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:31.788228" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.788210" elapsed="0.000259"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.788605" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.788762" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.788920" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.789072" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.789222" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.789375" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.789542" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:31.787411" elapsed="0.002244"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:31.782394" elapsed="0.007313"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:31.782003" elapsed="0.007745"/>
</kw>
<doc>Check that the change is now in the configuration.</doc>
<status status="PASS" start="2026-04-05T00:35:31.239469" elapsed="0.550319"/>
</test>
<test id="s1-s3-s1-t10" name="Terminate_Connection_Gracefully" line="105">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:31.794475" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:31.794187" elapsed="0.000551"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.795691" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.795582" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.795564" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.800152" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.800046" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.800028" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.801194" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:31.800815" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.801683" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:31.801367" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:31.801753" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:31.801908" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:31.800447" elapsed="0.001487"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.807121" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.807013" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.806994" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.808392" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.808287" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.808269" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:31.808973" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:31.808614" elapsed="0.000385"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.809392" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:31.809144" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.871813" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:31.809948" elapsed="0.062068"/>
</kw>
<msg time="2026-04-05T00:35:31.872201" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:31.872249" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.809579" elapsed="0.062708"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.894558" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "T "e "r "m "i "n "a "t "e "_ "C "o "n "n "e "c "t "i "o "n "_ "G "r "a "c "e "f "u "l "l "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:31.872896" elapsed="0.021850"/>
</kw>
<msg time="2026-04-05T00:35:31.894926" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:31.894972" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "T "e "r "m "i "n "a "t "e "_ "C "o "n "n "e "c "t ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.872493" elapsed="0.022517"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.895383" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:31.895153" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.895126" elapsed="0.000389"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.896046" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "T "e "r "m "i "n "a "t "e "_ "C "o "n "n "e "c "t "i "o "n "_ "G "r "a "c "e "f "u "l "l "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:31.895653" elapsed="0.000464"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.896385" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:31.896184" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.896166" elapsed="0.000334"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:31.896535" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:31.899464" elapsed="0.000151"/>
</kw>
<msg time="2026-04-05T00:35:31.899688" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:31.898829" elapsed="0.000960"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.900593" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.901402" elapsed="0.000051"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:31.897397" elapsed="0.004137"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:31.896815" elapsed="0.004840"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:31.807990" elapsed="0.093765"/>
</kw>
<msg time="2026-04-05T00:35:31.901848" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:31.901894" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "T "e "r "m "i "n "a "t "e "_ "C "o "n "n "e "c "t ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.807328" elapsed="0.094604"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:31.902116" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:31.902009" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.901991" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.902622" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.902947" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.903017" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:31.806672" elapsed="0.096453"/>
</kw>
<msg time="2026-04-05T00:35:31.903220" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:31.903264" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "T "e "r "m "i "n "a "t "e "_ "C "o "n "n "e "c "t ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.802303" elapsed="0.100998"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.903631" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:31.903377" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.903360" elapsed="0.000349"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:31.802159" elapsed="0.101573"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:31.801987" elapsed="0.101775"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:31.799690" elapsed="0.104125"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:31.795279" elapsed="0.108592"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.794873" elapsed="0.109042"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:31.790618" elapsed="0.113348"/>
</kw>
<kw name="Close_ODL_Netconf_Connection_Gracefully">
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:31.905585" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/close-session-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/close-session-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:31.905764" level="INFO">${data} = &lt;rpc message-id="999" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;close-session/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:31.905344" elapsed="0.000448"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:31.905838" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:31.905985" level="INFO">${request} = &lt;rpc message-id="999" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;close-session/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:31.905040" elapsed="0.000972"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.908766" level="INFO">&lt;rpc message-id="999" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:31.906808" elapsed="0.002027"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.909519" level="INFO">&lt;close-session/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:31.909008" elapsed="0.000574"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.910365" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:31.909785" elapsed="0.000663"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:31.906461" elapsed="0.004083"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.915520" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:31.915642" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:31.910726" elapsed="0.004954"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:31.915741" elapsed="0.000042"/>
</return>
<msg time="2026-04-05T00:35:31.915940" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:31.906155" elapsed="0.009821"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:31.916033" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:35:31.916214" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:31.904745" elapsed="0.011506"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:31.917764" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/close-session-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/close-session-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:31.917931" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:31.917539" elapsed="0.000420"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:31.918004" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:31.918154" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:31.917192" elapsed="0.000990"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:31.918225" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:31.918370" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:31.916452" elapsed="0.001945"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:31.918771" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:31.918567" elapsed="0.000233"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:31.919164" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:31.918940" elapsed="0.000252"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:31.919336" elapsed="0.000540"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:31.919928" elapsed="0.000028"/>
</return>
<arg>close-session</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:31.904413" elapsed="0.015692"/>
</kw>
<kw name="Abort_ODL_Netconf_Connection">
<if>
<branch type="IF" condition="${ssh_netconf_pid} == -1">
<return>
<status status="NOT RUN" start="2026-04-05T00:35:31.920654" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.920513" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.920493" elapsed="0.000227"/>
</if>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.921166" level="INFO">${kill_command} = kill 4503</msg>
<var>${kill_command}</var>
<arg>kill ${ssh_netconf_pid}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:31.920853" elapsed="0.000339"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.921703" level="INFO">${ssh_netconf_pid} = -1</msg>
<arg>${ssh_netconf_pid}</arg>
<arg>-1</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:31.921341" elapsed="0.000404"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${ssh_control}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:31.921883" elapsed="0.000137"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.923959" level="INFO">kill 4503</msg>
<arg>${kill_command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:31.922155" elapsed="0.001861"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.925270" level="INFO">[?2004l-bash: kill: (4503) - No such process
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-05T00:35:31.924162" elapsed="0.001163"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${ssh_netconf}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:31.925478" elapsed="0.000134"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.926640" level="INFO">Connection to 127.0.0.1 closed by remote host.
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-05T00:35:31.925749" elapsed="0.000942"/>
</kw>
<doc>Correctly close the Netconf connection and make sure it is really dead.</doc>
<status status="PASS" start="2026-04-05T00:35:31.920308" elapsed="0.006434"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:31.904140" elapsed="0.022649"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.928019" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:31.927633" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.927610" elapsed="0.000496"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:31.928237" elapsed="0.000328"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.933261" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:31.932846" elapsed="0.000442"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:31.933528" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:31.933364" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.933346" elapsed="0.000264"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.933746" elapsed="0.000020"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.933902" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.934058" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.934211" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.934362" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.934531" elapsed="0.000037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:31.934704" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:31.932557" elapsed="0.002222"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:31.927387" elapsed="0.007441"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:31.927038" elapsed="0.007831"/>
</kw>
<doc>Close the session and disconnect.</doc>
<status status="PASS" start="2026-04-05T00:35:31.790130" elapsed="0.144780"/>
</test>
<test id="s1-s3-s1-t11" name="Reconnect_To_ODL_Netconf_After_Graceful_Session_End" line="109">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:31.938301" elapsed="0.000233"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:31.938056" elapsed="0.000564"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.939575" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.939467" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.939447" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.944040" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.943935" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.943917" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.945070" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:31.944690" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:31.945554" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:31.945244" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:31.945625" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:31.945778" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:31.944318" elapsed="0.001484"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.950828" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.950722" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.950703" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:31.952078" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:31.951973" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:31.951955" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:31.952664" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:31.952274" elapsed="0.000416"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.953076" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:31.952833" elapsed="0.000268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:31.992211" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:31.953632" elapsed="0.038769"/>
</kw>
<msg time="2026-04-05T00:35:31.992596" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:31.992642" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.953244" elapsed="0.039435"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:32.022621" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "c "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ "N "e "t "c "o "n "f "_ "A "f "t "e "r "_ "G "r "a "c "e "f "u "l "_ "S "e "s "s "i "o "n "_ "E "n "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:31.993228" elapsed="0.029605"/>
</kw>
<msg time="2026-04-05T00:35:32.023002" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:32.023048" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "c "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.992836" elapsed="0.030248"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.023371" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:32.023163" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:32.023142" elapsed="0.000351"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:32.024000" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "c "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ "N "e "t "c "o "n "f "_ "A "f "t "e "r "_ "G "r "a "c "e "f "u "l "_ "S "e "s "s "i "o "n "_ "E "n "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:32.023627" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.024470" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:32.024245" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:32.024222" elapsed="0.000352"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:32.024608" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:32.027604" elapsed="0.000148"/>
</kw>
<msg time="2026-04-05T00:35:32.027823" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:32.026809" elapsed="0.001114"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.028774" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.029681" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:32.025448" elapsed="0.004352"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:32.024866" elapsed="0.005049"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:31.951678" elapsed="0.078336"/>
</kw>
<msg time="2026-04-05T00:35:32.030106" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:32.030150" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "c "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.951031" elapsed="0.079155"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:32.030370" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:32.030263" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:32.030245" elapsed="0.000230"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.030886" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.031205" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:32.031277" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:31.950357" elapsed="0.081027"/>
</kw>
<msg time="2026-04-05T00:35:32.031493" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:32.031537" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "c "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.946158" elapsed="0.085415"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.031883" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:32.031649" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:32.031632" elapsed="0.000326"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:31.946030" elapsed="0.085950"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:31.945858" elapsed="0.086153"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:31.943580" elapsed="0.088484"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:31.939166" elapsed="0.092953"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:31.938758" elapsed="0.093404"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:31.935831" elapsed="0.096383"/>
</kw>
<kw name="Open_ODL_Netconf_Connection">
<kw name="Reopen_ODL_Netconf_Connection">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:32.035643" level="INFO">sshpass -p admin ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@127.0.0.1 -p 2830 -s netconf</msg>
<arg>sshpass -p ${ssh_password} ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${ssh_user}\@127.0.0.1 -p ${ssh_port} -s netconf</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:32.032898" elapsed="0.002814"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:32.938422" level="INFO">[?2004lWarning: Permanently added '[127.0.0.1]:2830' (ECDSA) to the list of known hosts.
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;capabilities&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config?module=odl-pcep-topology-sync-optimizations-config&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&amp;amp;revision=2011-06-01&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:serviceutils:srm:types?module=odl-srm-types&amp;amp;revision=2018-06-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats?module=odl-pcep-stateful-stats&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs?module=iana-ssh-key-exchange-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp?module=openconfig-bgp&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:nicira:action?module=openflowplugin-extension-nicira-action&amp;amp;revision=2014-07-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:netconf-node-topology?module=netconf-node-topology&amp;amp;revision=2025-12-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:echo:service?module=sal-echo&amp;amp;revision=2015-03-05&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-nmda?module=ietf-netconf-nmda&amp;amp;revision=2019-01-07&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:serviceutils:srm:ops?module=odl-srm-ops&amp;amp;revision=2018-06-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config?module=lldp-speaker-config&amp;amp;revision=2016-05-12&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart?module=bgp-ll-graceful-restart&amp;amp;revision=2018-11-12&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:network:topology?module=odl-network-topology&amp;amp;revision=2014-01-13&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:types?module=opendaylight-flow-types&amp;amp;revision=2013-10-26&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:inventory?module=flow-node-inventory&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-patch?module=ietf-yang-patch&amp;amp;revision=2017-02-22&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-origin?module=ietf-origin&amp;amp;revision=2018-02-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:model:topology:inventory?module=opendaylight-topology-inventory&amp;amp;revision=2013-10-30&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote?module=sal-remote&amp;amp;revision=2014-01-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:extension:yang-ext?module=yang-ext&amp;amp;revision=2013-07-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config?module=odl-bgp-topology-config&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/local-routing?module=openconfig-local-routing&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:async-config:service?module=sal-async-config&amp;amp;revision=2017-06-19&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-crypto-types?module=ietf-crypto-types&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:exi:1.0&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/interfaces?module=openconfig-interfaces&amp;amp;revision=2016-04-12&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:types:queue?module=opendaylight-queue-types&amp;amp;revision=2013-09-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:pcep?module=network-topology-pcep&amp;amp;revision=2025-03-28&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:system?module=system-notifications&amp;amp;revision=2013-09-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:ieee754?module=ieee754&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control?module=statistics-manager-control&amp;amp;revision=2015-08-12&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin?module=cluster-admin&amp;amp;revision=2025-01-31&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:common:instruction?module=openflow-instruction&amp;amp;revision=2013-07-31&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:ietf-stateful-config?module=odl-pcep-ietf-stateful-config&amp;amp;revision=2023-01-15&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:candidate:1.0&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people?module=car-people&amp;amp;revision=2014-08-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types?module=odl-bgp-topology-types&amp;amp;revision=2016-05-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6?module=bgp-mvpn-ipv6&amp;amp;revision=2018-04-17&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:aaa:password:service:config?module=aaa-password-service-config&amp;amp;revision=2017-06-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:entity-owners?module=odl-entity-owners&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowjava:nx:match?module=nicira-match&amp;amp;revision=2014-04-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:table:statistics?module=opendaylight-flow-table-statistics&amp;amp;revision=2013-12-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:topology:discovery?module=flow-topology-discovery&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:config?module=pcep-config&amp;amp;revision=2025-06-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:p2mp:te:lsp?module=odl-pcep-p2mp-te-lsp&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:model:statistics:types?module=opendaylight-statistics-types&amp;amp;revision=2013-09-25&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs?module=iana-ssh-mac-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;config:aaa:authn:encrypt:service:config?module=aaa-encrypt-service-config&amp;amp;revision=2024-02-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:sr?module=network-topology-sr&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-vpn?module=bgp-vpn&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:experimenter-mp-message:service?module=sal-experimenter-mp-message&amp;amp;revision=2015-10-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config?module=topology-lldp-discovery-config&amp;amp;revision=2016-05-11&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-http-server?module=ietf-http-server&amp;amp;revision=2024-02-08&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service?module=frm-reconciliation&amp;amp;revision=2018-02-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:network:concepts?module=network-concepts&amp;amp;revision=2013-11-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol?module=bgp-multiprotocol&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:pcep:sync:optimizations?module=odl-pcep-sync-optimizations&amp;amp;revision=2020-07-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs?module=iana-ssh-public-key-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-flowspec?module=bgp-flowspec&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:netmod:notification?module=nc-notifications&amp;amp;revision=2008-07-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:packet:service?module=packet-processing&amp;amp;revision=2013-07-09&lt;/capability&gt;
        &lt;capability&gt;urn:sal:restconf:event:subscription?module=sal-remote-augment&amp;amp;revision=2023-11-03&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:pcep:auto:bandwidth?module=odl-pcep-auto-bandwidth&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:aaa:app:config?module=aaa-app-config&amp;amp;revision=2017-06-19&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:base:1.1&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity?module=odl-general-entity&amp;amp;revision=2015-09-30&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:base:1.0&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:queue:statistics?module=opendaylight-queue-statistics&amp;amp;revision=2013-12-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:inet-binary-types?module=odl-inet-binary-types&amp;amp;revision=2016-03-03&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-afn-safi?module=iana-afn-safi&amp;amp;revision=2013-07-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:protocol?module=openflow-protocol&amp;amp;revision=2013-07-31&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:action:types?module=opendaylight-action-types&amp;amp;revision=2013-11-12&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp-operational?module=openconfig-bgp-operational&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car?module=car&amp;amp;revision=2014-08-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:arbitrary:bitmask:fields?module=opendaylight-arbitrary-bitmask-fields&amp;amp;revision=2016-01-30&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&amp;amp;revision=2013-07-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4?module=bgp-mvpn-ipv4&amp;amp;revision=2018-04-17&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:multipart:types?module=opendaylight-multipart-types&amp;amp;revision=2017-01-12&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&amp;amp;revision=2014-08-06&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&amp;amp;revision=2010-10-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:meter:service?module=sal-meter&amp;amp;revision=2013-09-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:meter:types?module=opendaylight-meter-types&amp;amp;revision=2013-09-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-segment-routing?module=bgp-segment-routing&amp;amp;revision=2024-12-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:jsonrpc?module=jsonrpc&amp;amp;revision=2016-12-01&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:serviceutils:srm:rpc?module=odl-srm-rpcs&amp;amp;revision=2018-06-26&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/openconfig-ext?module=openconfig-extensions&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology?module=l3-unicast-igp-topology&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:onf?module=onf-extensions&amp;amp;revision=2017-01-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy?module=odl-bgp-policy&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&amp;amp;revision=2019-01-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flat-batch:service?module=sal-flat-batch&amp;amp;revision=2016-03-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:config?module=openflow-configuration&amp;amp;revision=2014-06-30&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-truststore?module=ietf-truststore&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-metadata?module=ietf-yang-metadata&amp;amp;revision=2016-08-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4?module=bgp-vpn-ipv4&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:url:1.0?scheme=file&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:queue:service?module=sal-queue&amp;amp;revision=2015-03-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:daexim?module=data-export-import&amp;amp;revision=2016-09-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-message?module=bgp-message&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:ospf-topology?module=ospf-topology&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:oxm?module=openflow-extensible-match&amp;amp;revision=2015-02-25&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&amp;amp;revision=2011-06-01&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg?module=rfc2385&amp;amp;revision=2016-03-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:aaa:cert:mdsal?module=aaa-cert-mdsal&amp;amp;revision=2016-03-21&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?module=ietf-restconf-monitoring&amp;amp;revision=2017-01-26&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-datastores?module=ietf-datastores&amp;amp;revision=2018-02-14&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:network-topology?module=network-topology&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:netconf-node-optional?module=netconf-node-optional&amp;amp;revision=2022-12-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:statistics?module=opendaylight-flow-statistics&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:nicira:match?module=openflowplugin-extension-nicira-match&amp;amp;revision=2014-07-14&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications?module=ietf-restconf-subscribed-notifications&amp;amp;revision=2019-11-17&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:programming?module=programming&amp;amp;revision=2015-07-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel?module=topology-tunnel&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service?module=arbitrator-reconcile&amp;amp;revision=2018-02-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:controller:basic-rpc-test?module=basic-rpc-test&amp;amp;revision=2016-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&amp;amp;revision=2018-02-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bmp-monitor?module=bmp-monitor&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast?module=bgp-labeled-unicast&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?module=people&amp;amp;revision=2014-08-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:mappingservice?module=odl-mappingservice&amp;amp;revision=2015-09-06&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-routing-types?module=iana-routing-types&amp;amp;revision=2022-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config?module=forwarding-rules-manager-config&amp;amp;revision=2016-05-11&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp-policy?module=openconfig-bgp-policy&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount?module=ietf-yang-schema-mount&amp;amp;revision=2019-01-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:inventory?module=opendaylight-inventory&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pmsi-tunnel?module=pmsi-tunnel&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-http-client?module=ietf-http-client&amp;amp;revision=2024-02-08&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-linkstate?module=bgp-linkstate&amp;amp;revision=2024-12-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state?module=reconciliation-result-state&amp;amp;revision=2017-07-13&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:service:barrier:common?module=barrier-common&amp;amp;revision=2016-03-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:segment:routing?module=odl-pcep-segment-routing&amp;amp;revision=2025-04-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:cds:types?module=odl-controller-cds-types&amp;amp;revision=2025-01-31&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tls-common?module=ietf-tls-common&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config?module=topology-tunnel-pcep-config&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain?module=bgp-route-target-constrain&amp;amp;revision=2018-06-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:types?module=pcep-types&amp;amp;revision=2025-06-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:table:types?module=opendaylight-table-types&amp;amp;revision=2013-10-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:table:service?module=sal-table&amp;amp;revision=2013-10-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:l2:types?module=opendaylight-l2-types&amp;amp;revision=2013-08-27&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tcp-client?module=ietf-tcp-client&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs?module=iana-tls-cipher-suite-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications?module=ietf-subscribed-notifications&amp;amp;revision=2019-09-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:general?module=openflowplugin-extension-general&amp;amp;revision=2014-07-14&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tcp-server?module=ietf-tcp-server&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6?module=bgp-vpn-ipv6&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-routing-types?module=ietf-routing-types&amp;amp;revision=2017-12-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker?module=lldp-speaker&amp;amp;revision=2014-10-23&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:model:match:types?module=opendaylight-match-types&amp;amp;revision=2013-10-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p?module=topology-tunnel-p2p&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:common:action?module=openflow-action&amp;amp;revision=2015-02-03&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:group:types?module=opendaylight-group-types&amp;amp;revision=2013-10-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:direct:statistics?module=opendaylight-direct-statistics&amp;amp;revision=2016-05-11&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:extension:codegen?module=odl-codegen-extensions&amp;amp;revision=2024-06-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:server?module=pcep-server&amp;amp;revision=2022-03-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:meters:service?module=sal-meters-batch&amp;amp;revision=2016-03-16&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?module=ietf-x509-cert-to-name&amp;amp;revision=2014-12-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-ip?module=ietf-ip&amp;amp;revision=2018-02-22&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/policy-types?module=openconfig-policy-types&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;tag:opendaylight.org,2017:controller:yang:lowlevel:target?module=odl-mdsal-lowlevel-target&amp;amp;revision=2017-02-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?module=car-purchase&amp;amp;revision=2014-08-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:graph?module=graph&amp;amp;revision=2025-01-15&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/openconfig-types?module=openconfig-types&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?module=ietf-netconf-notifications&amp;amp;revision=2012-02-06&lt;/capability&gt;
        &lt;capability&gt;tag:opendaylight.org,2017:controller:yang:lowlevel:control?module=odl-mdsal-lowlevel-control&amp;amp;revision=2017-02-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bmp-message?module=bmp-message&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:node-ssl-connection-error:service?module=node-ssl-connection-error&amp;amp;revision=2019-07-23&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&amp;amp;revision=2013-07-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:pcep:stats?module=network-pcep-topology-stats&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep?module=topology-tunnel-pcep&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&amp;amp;revision=2018-02-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions?module=bgp-openconfig-extensions&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:service?module=sal-flow&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:meter:statistics?module=opendaylight-meter-statistics&amp;amp;revision=2013-11-11&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:mvpn?module=bgp-mvpn&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tls-server?module=ietf-tls-server&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:test?module=bgp-test&amp;amp;revision=2018-05-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-rib?module=bgp-rib&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;tag:opendaylight.org,2017:controller:yang:lowlevel:common?module=odl-mdsal-lowlevel-common&amp;amp;revision=2017-02-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming?module=topology-tunnel-pcep-programming&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:aaa:cert?module=aaa-cert&amp;amp;revision=2015-11-26&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-restconf?module=ietf-restconf&amp;amp;revision=2017-01-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config?module=odl-bgp-peer-acceptor-config&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:serviceutils:upgrade?module=odl-serviceutils-upgrade&amp;amp;revision=2018-07-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowjava:nx:action?module=nicira-action&amp;amp;revision=2014-04-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflow:provider:config?module=openflow-provider-config&amp;amp;revision=2016-05-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-keystore?module=ietf-keystore&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:message?module=pcep-message&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:netconf:monitoring?module=odl-netconf-monitoring&amp;amp;revision=2022-07-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-epe?module=bgp-epe&amp;amp;revision=2024-12-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bmp-monitor-config?module=odl-bmp-monitor-config&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:common:types?module=openflow-types&amp;amp;revision=2013-07-31&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:iana?module=iana&amp;amp;revision=2013-08-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:module:config?module=node-config&amp;amp;revision=2014-10-15&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-ssh-client?module=ietf-ssh-client&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:approved:extensions?module=openflow-approved-extensions&amp;amp;revision=2016-08-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming?module=topology-tunnel-programming&amp;amp;revision=2013-09-30&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc?module=bgp-peer-rpc&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:service:batch:common?module=batch-common&amp;amp;revision=2016-03-22&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:lisp-binary-address-types?module=odl-lisp-address-types&amp;amp;revision=2016-05-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:group:statistics?module=opendaylight-group-statistics&amp;amp;revision=2013-11-11&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:rsvp?module=rsvp&amp;amp;revision=2015-08-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:stats?module=pcep-session-stats&amp;amp;revision=2017-11-13&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep?module=hwvtep&amp;amp;revision=2015-09-01&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/network-instance?module=openconfig-network-instance&amp;amp;revision=2015-10-18&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:notification:1.0&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:overlay?module=overlay&amp;amp;revision=2015-01-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:group:service?module=sal-group&amp;amp;revision=2013-09-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:port:service?module=sal-port&amp;amp;revision=2013-11-07&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:augments?module=openflow-augments&amp;amp;revision=2015-02-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider?module=odl-pcep-topology-provider&amp;amp;revision=2023-01-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:device:notification?module=odl-device-notification&amp;amp;revision=2024-02-18&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp-multiprotocol?module=openconfig-bgp-multiprotocol&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:netconf:device?module=odl-netconf-device&amp;amp;revision=2025-12-05&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-ssh-common?module=ietf-ssh-common&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:ietf:initiated?module=odl-pcep-ietf-initiated&amp;amp;revision=2020-07-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:types:port?module=opendaylight-port-types&amp;amp;revision=2013-09-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast?module=bgp-l3vpn-mcast&amp;amp;revision=2018-04-17&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:errors?module=flow-errors&amp;amp;revision=2013-11-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:aaa?module=aaa&amp;amp;revision=2016-12-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config?module=odl-pcep-stats-provider&amp;amp;revision=2022-07-30&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:programming?module=network-topology-programming&amp;amp;revision=2013-11-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:groups:service?module=sal-groups-batch&amp;amp;revision=2016-03-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-evpn?module=odl-bgp-evpn&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful?module=odl-pcep-ietf-stateful&amp;amp;revision=2025-03-28&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields?module=opendaylight-ipv6-arbitrary-bitmask-fields&amp;amp;revision=2016-02-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:lisp-proto?module=odl-lisp-proto&amp;amp;revision=2015-11-05&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&amp;amp;revision=2015-10-18&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tcp-common?module=ietf-tcp-common&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:aaa:cert:rpc?module=aaa-cert-rpc&amp;amp;revision=2015-12-15&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-client?module=ietf-netconf-client&amp;amp;revision=2024-08-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-inet?module=bgp-inet&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:pcep:programming?module=network-topology-pcep-programming&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tls-client?module=ietf-tls-client&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider?module=distributed-datastore-provider&amp;amp;revision=2025-01-30&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:network:isis-topology?module=isis-topology&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr?module=topology-tunnel-sr&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:role:service?module=sal-role&amp;amp;revision=2015-07-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:jsonrpc:ibm?module=jsonrpc-inband-models&amp;amp;revision=2019-01-12&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-restconf-server?module=ietf-restconf-server&amp;amp;revision=2024-08-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:daexim-internal?module=data-export-import-internal&amp;amp;revision=2016-09-21&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:network:ted?module=ted&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:netconf:keystore?module=netconf-keystore&amp;amp;revision=2024-07-08&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:experimenter-message:service?module=sal-experimenter-message&amp;amp;revision=2015-10-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:onf:bundle:service?module=sal-bundle&amp;amp;revision=2017-01-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:ovsdb?module=ovsdb&amp;amp;revision=2015-01-05&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-ssh-server?module=ietf-ssh-server&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:experimenter:types?module=openflowplugin-experimenter-types&amp;amp;revision=2015-10-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:lisp-sb?module=odl-lisp-sb&amp;amp;revision=2015-09-04&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:interleave:1.0&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flows:service?module=sal-flows-batch&amp;amp;revision=2016-03-14&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:netconf:notification:1.0?module=notifications&amp;amp;revision=2008-07-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:transaction?module=flow-capable-transaction&amp;amp;revision=2015-03-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:path:computation?module=path-computation&amp;amp;revision=2022-03-24&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-lisp-address-types?module=ietf-lisp-address-types&amp;amp;revision=2015-11-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc?module=pcep-topology-stats-rpc&amp;amp;revision=2019-03-21&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-network-instance?module=ietf-network-instance&amp;amp;revision=2019-01-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:port:statistics?module=opendaylight-port-statistics&amp;amp;revision=2013-12-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config?module=openflow-switch-connection-config&amp;amp;revision=2016-05-06&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs?module=iana-ssh-encryption-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-types?module=bgp-types&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-server?module=ietf-netconf-server&amp;amp;revision=2024-08-14&lt;/capability&gt;
    &lt;/capabilities&gt;
    &lt;session-id&gt;12&lt;/session-id&gt;
&lt;/hello&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:32.939271" level="INFO">${hello} = [?2004lWarning: Permanently added '[127.0.0.1]:2830' (ECDSA) to the list of known hosts.
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1...</msg>
<var>${hello}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:32.035862" elapsed="0.903443"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${ssh_control}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:32.939577" elapsed="0.000206"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:32.940039" level="INFO">Executing command 'ps -A | grep sshpass | awk '{print $1}''.</msg>
<msg time="2026-04-05T00:35:32.964535" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:35:32.964678" level="INFO">${pid} = 4527</msg>
<var>${pid}</var>
<arg>ps -A | grep sshpass | awk '{print $1}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:32.939932" elapsed="0.024771"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:32.965324" level="INFO">${ssh_netconf_pid} = 4527</msg>
<arg>${ssh_netconf_pid}</arg>
<arg>${pid}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:32.964874" elapsed="0.000492"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${ssh_netconf}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:32.965524" elapsed="0.000143"/>
</kw>
<return>
<value>${hello}</value>
<status status="PASS" start="2026-04-05T00:35:32.965719" elapsed="0.000049"/>
</return>
<msg time="2026-04-05T00:35:32.965908" level="INFO">${hello} = [?2004lWarning: Permanently added '[127.0.0.1]:2830' (ECDSA) to the list of known hosts.
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1...</msg>
<var>${hello}</var>
<doc>Reopen a closed netconf connection.</doc>
<status status="PASS" start="2026-04-05T00:35:32.032656" elapsed="0.933282"/>
</kw>
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:32.966683" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/hello.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/hello.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:32.966865" level="INFO">${data} = &lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;capabilities&gt;
&lt;capability&gt;urn:ietf:params:netconf:base:1.0&lt;/capability&gt;
&lt;/capabilities&gt;
&lt;/hello&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:32.966455" elapsed="0.000438"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:32.966939" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:32.967087" level="INFO">${hello_message} = &lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;capabilities&gt;
&lt;capability&gt;urn:ietf:params:netconf:base:1.0&lt;/capability&gt;
&lt;/capabilities&gt;
&lt;/hello&gt;
</msg>
<var>${hello_message}</var>
<arg>hello</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:32.966123" elapsed="0.000991"/>
</kw>
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:32.969241" level="INFO">&lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:32.967568" elapsed="0.001729"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:32.970116" level="INFO">&lt;capabilities&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:32.969456" elapsed="0.000713"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:32.971440" level="INFO">&lt;capability&gt;urn:ietf:params:netconf:base:1.0&lt;/capability&gt;
&lt;/capabilities&gt;
&lt;/hello&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:32.970311" elapsed="0.001185"/>
</kw>
<arg>${hello_message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:32.967249" elapsed="0.004305"/>
</kw>
<return>
<value>${hello}</value>
<status status="PASS" start="2026-04-05T00:35:32.971594" elapsed="0.000029"/>
</return>
<doc>Open a prepared netconf connecion.</doc>
<status status="PASS" start="2026-04-05T00:35:32.032364" elapsed="0.939354"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.972962" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:32.972563" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:32.972542" elapsed="0.000508"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:32.973187" elapsed="0.000339"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:32.978159" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:32.977744" elapsed="0.000442"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:32.978403" elapsed="0.000044"/>
</return>
<status status="PASS" start="2026-04-05T00:35:32.978261" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:32.978243" elapsed="0.000260"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.978640" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.978800" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.978960" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.979165" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.979322" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.979492" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:32.979647" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:32.977446" elapsed="0.002279"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:32.972333" elapsed="0.007443"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:32.971975" elapsed="0.007844"/>
</kw>
<doc>Reconnect to ODL Netconf and fail if that is not possible.</doc>
<status status="PASS" start="2026-04-05T00:35:31.935236" elapsed="1.044622"/>
</test>
<test id="s1-s3-s1-t12" name="First_Batch_In_Config_Running_After_Reconnect" line="113">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:32.982807" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:32.982560" elapsed="0.000510"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:32.984030" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:32.983921" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:32.983903" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:32.988844" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:32.988737" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:32.988718" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:32.989890" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:32.989509" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:32.990362" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:32.990064" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:32.990448" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:32.990606" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:32.989131" elapsed="0.001501"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:32.995642" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:32.995535" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:32.995516" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:32.996932" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:32.996827" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:32.996809" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:32.997512" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:32.997130" elapsed="0.000409"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:32.997926" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:32.997682" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.037600" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:32.998485" elapsed="0.039346"/>
</kw>
<msg time="2026-04-05T00:35:33.038069" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:33.038131" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:32.998097" elapsed="0.040086"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.069097" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "F "i "r "s "t "_ "B "a "t "c "h "_ "I "n "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n "g "_ "A "f "t "e "r "_ "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:33.039071" elapsed="0.030211"/>
</kw>
<msg time="2026-04-05T00:35:33.069471" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:33.069519" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "F "i "r "s "t "_ "B "a "t "c "h "_ "I "n "_ "C "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.038413" elapsed="0.031143"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.069856" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.069640" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.069617" elapsed="0.000340"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:33.070498" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "F "i "r "s "t "_ "B "a "t "c "h "_ "I "n "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n "g "_ "A "f "t "e "r "_ "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:33.070089" elapsed="0.000484"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.070839" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.070640" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.070622" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:33.070974" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:33.073847" elapsed="0.000145"/>
</kw>
<msg time="2026-04-05T00:35:33.074064" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:33.073224" elapsed="0.000942"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.074993" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.075835" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:33.071858" elapsed="0.004092"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:33.071246" elapsed="0.004821"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:32.996513" elapsed="0.079652"/>
</kw>
<msg time="2026-04-05T00:35:33.076258" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:33.076301" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "F "i "r "s "t "_ "B "a "t "c "h "_ "I "n "_ "C "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:32.995846" elapsed="0.080493"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:33.076719" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:33.076415" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.076396" elapsed="0.000421"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.077202" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.077545" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.077616" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:32.995183" elapsed="0.082541"/>
</kw>
<msg time="2026-04-05T00:35:33.077816" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:33.077859" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "F "i "r "s "t "_ "B "a "t "c "h "_ "I "n "_ "C "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:32.990991" elapsed="0.086905"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.078209" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.077972" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.077954" elapsed="0.000333"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:32.990862" elapsed="0.087491"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:32.990687" elapsed="0.087701"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:32.988342" elapsed="0.090133"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:32.983634" elapsed="0.094898"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:32.983207" elapsed="0.095369"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:32.980588" elapsed="0.098044"/>
</kw>
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:33.079698" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-edit-after-commit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-edit-after-commit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:33.079864" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:33.079362" elapsed="0.000530"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:33.079938" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:33.080085" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:33.079061" elapsed="0.001051"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:33.080886" elapsed="0.000280"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.082623" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5"&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:33.081318" elapsed="0.001361"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.084152" level="INFO">&lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:33.082820" elapsed="0.001387"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:33.080565" elapsed="0.003697"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.512245" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
            &lt;person&gt;
                &lt;id&gt;CUST001&lt;/id&gt;
                &lt;age&gt;32&lt;/age&gt;
            &lt;/person&gt;
        &lt;/people&gt;
        &lt;network-instances xmlns="http://openconfig.net/yang/network-instance"&gt;
            &lt;network-instance&gt;
                &lt;name&gt;global-bgp&lt;/name&gt;
                &lt;protocols/&gt;
            &lt;/network-instance&gt;
        &lt;/network-instances&gt;
        &lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;TOY001&lt;/car-id&gt;
                &lt;person-id&gt;CUST001&lt;/person-id&gt;
            &lt;/car-person&gt;
        &lt;/car-people&gt;
        &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;
                &lt;node&gt;
                    &lt;node-id&gt;43.43.43.43&lt;/node-id&gt;
                    &lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;password&gt;topsecret&lt;/password&gt;
                        &lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;
                    &lt;/session-config&gt;
                &lt;/node&gt;
                &lt;topology-types&gt;
                    &lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;
                        &lt;session-config&gt;
                            &lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;
                            &lt;listen-port&gt;4189&lt;/listen-port&gt;
                            &lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;
                            &lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;
                            &lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;
                        &lt;/session-config&gt;
                    &lt;/topology-pcep&gt;
                &lt;/topology-types&gt;
            &lt;/topology&gt;
        &lt;/network-topology&gt;
        &lt;key-stores xmlns="urn:opendaylight:yang:aaa:cert:mdsal"&gt;
            &lt;id&gt;KeyStores:1&lt;/id&gt;
            &lt;ssl-data&gt;
                &lt;bundle-name&gt;opendaylight&lt;/bundle-name&gt;
                &lt;tls-protocols/&gt;
                &lt;odl-keystore&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j7eR9+jY/ReL6ScBdTboi/ykrFmYXQQ7xFuusDY=&lt;/store-password&gt;
                    &lt;sign-alg&gt;SHA1WithRSAEncryption&lt;/sign-alg&gt;
                    &lt;validity&gt;365&lt;/validity&gt;
                    &lt;alias&gt;controller&lt;/alias&gt;
                    &lt;name&gt;ctl.jks&lt;/name&gt;
                    &lt;dname&gt;CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA&lt;/dname&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTGHQubhwHV9aYycwWBO28GdM+0EbfzFmaKhmDhRYeXS6rzNXHoliYz24Nm9Rrgrt6HUbPrex4U1IKGVHfZ0Ok7NBGIva1O3gjWP564Pdsk02VALY+3x/pSHApp4XbOoK9VYCcR27ceSz8ZakXtNqIJSP+ns/tei6wcB1xSE+4cbVJyYGh1UDqWS1/VdQBlNy6nfXdApw0tanG7ZJFszyDip/doAf8261x3CC98HK81B7ThgpPdwkfKnvxYuSkF3b/1W4TMZRXQKoNXSvvbt7QShC9dyN22zdxIdTlv2E9FgZtMCzHJbnTYQbVnfqASfUj5iF5Ghkz+IM8Ctr6HcZo+25RTqGaKLuZdDKZsbvA3YcX7uBb/X1nA/l2LI0ZdEShpllIgbm3+J55OpqL0QTF2WZCJWu7Da/ancqEis6zpVPrbdOAE1k22Fr+Ctg0l0irt86r8kcXv1m/S5c5k9OItEy6ZsXWcPBbLtn9vnpWI2Dvf6pB53cBpe3xC6ucl3Y31l0zrhw8JROv6BOV1HsYa2L7AMj+iaHNbumqX3rTxLSXsEEPVFiw07o5dj4j2lmaBUCQCGfvTCMExpzSs5/HrTOQhLHQzIkzuu9OEYw9OJOM9PPormeqd4mDlQo3opDFfVwJzc0TICklSr+OcNsKHMoYGuMYgcDR+W3fF13PF/ADvelxR6Jyc9nossRkhn8boEwu2OUhnUrgkfj5dvcaIyEt3QXbN0bp7fLAjJL3bmmqJh3BA6hnVheoEvZU8igAkdqL2y4J9UlXx+JkqZVoJEWizc4jYLpurXL9S0WYbXa37xZBh21j77UbBUBT6fCKjFbnYCjJKOPIfraTehhVxFKiHwwaUk0rYaUMbQMAasY8Z9h921xnfci307Gz2WuvN2blL3RG0n2ylzVTO9W4KWZf8lN1jpLT416KmVoaY7ltl58IQJHIn8Xda2pYe9o9QcgzVBY0gk8IfXThTKl2yFNREbE41NvCmkKQ70wg1/0BOuKAvMkje+CuHggKZXw/h+uw5wS7PGLv+P5ttt2sLjnbxtnFPu1NSS89AJ7iu4djWlEyMTXRGG9N2k1CLygLBXe4SAImLTZdd7N527Q28A3HqMgJQY6Lttme9oIpm+DQl9aQIIJgDZb9vvh9f/w4bYvCRHiwBqWNv+u9+PX0+seqNR1kpGOk933QFd0DGlQhpDrcB3yfQ9amX0V2ThyS6hqtMqgJDsacXG0DsZvotEq/uQ0Y/y++7b8g/3qto/eQ8AtVYnMwDwZJxNfEPJaWlC75coGq26S82cZdXjs48kjW88bcyW4+vhsW6eV+vR4z8u7YgQDBpNqbp1R6LixkqEiMRzkK6tbzvhdOxKzMO5qwuG1j3a2S4AjNxnfph0KUM0o5X/jDpjA7NndqzsanXunCTbr1gC0NKgoSzIfb5FtAVlGocJ+YWMrQYAfZ5EQyPVHTI0oW5V2T4jV7dATMpSXFBJ9Rp7PH02d0rtETqUF0b6Yzd8j2eNG82MXrU9yeshDY6xAD2PK0IQ2iMIXVTvohvMwvXKq7AiGiBI7RGUb+yWlkaYNBbz4L78d98li8+AT1wyfjSS06oa+UeAqFY3ADccuHzX1ZyUzlghNQCEu3mrLW2cIaQFftP+h3QfT0nRI7X7/3qeBiMD7VjhZfSVJwrY6DIdtrax4cUmqVrY1qxnbtmygGasXfC1c7vN/mrMPw+GLHjEaC8hRSQFs3WCV6uGu+LJ9Du3STlQKWEM/BhBU2oSGqaJkeI85I3JypXY=&lt;/keystoreFile&gt;
                    &lt;key-alg&gt;RSA&lt;/key-alg&gt;
                    &lt;keysize&gt;1024&lt;/keysize&gt;
                &lt;/odl-keystore&gt;
                &lt;cipher-suites&gt;
                    &lt;suiteName/&gt;
                &lt;/cipher-suites&gt;
                &lt;trust-keystore&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTcoJvqo8Gw5sBv9S7MPdfC8Ey5w0ERj70l1baW6SoxGbO2hfKQ==&lt;/keystoreFile&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j6X21ePQ7B2NsEEpHtEh2FY13wcfZiComYctBEY=&lt;/store-password&gt;
                    &lt;name&gt;truststore.jks&lt;/name&gt;
                &lt;/trust-keystore&gt;
            &lt;/ssl-data&gt;
        &lt;/key-stores&gt;
        &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
            &lt;car-entry&gt;
                &lt;id&gt;TOY001&lt;/id&gt;
                &lt;model&gt;Toyota Corolla&lt;/model&gt;
                &lt;year&gt;2016&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
                &lt;category&gt;sedan&lt;/category&gt;
            &lt;/car-entry&gt;
        &lt;/cars&gt;
        &lt;odl-bmp-monitors xmlns="urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"&gt;
            &lt;bmp-monitor-config&gt;
                &lt;monitor-id&gt;example-bmp-monitor&lt;/monitor-id&gt;
                &lt;server&gt;
                    &lt;binding-port&gt;12345&lt;/binding-port&gt;
                    &lt;binding-address&gt;0.0.0.0&lt;/binding-address&gt;
                &lt;/server&gt;
            &lt;/bmp-monitor-config&gt;
        &lt;/odl-bmp-monitors&gt;
        &lt;aaa-encrypt-service-config xmlns="config:aaa:authn:encrypt:service:config"&gt;
            &lt;encrypt-type&gt;AES&lt;/encrypt-type&gt;
            &lt;encrypt-key-length&gt;128&lt;/encrypt-key-length&gt;
            &lt;password-length&gt;12&lt;/password-length&gt;
            &lt;cipher-transforms&gt;AES/GCM/NoPadding&lt;/cipher-transforms&gt;
            &lt;encrypt-key&gt;DYmlnajBzTZj&lt;/encrypt-key&gt;
            &lt;encrypt-salt&gt;CwWGOgKD82i1gQRzdbP9jw==&lt;/encrypt-salt&gt;
            &lt;auth-tag-length&gt;128&lt;/auth-tag-length&gt;
            &lt;encrypt-method&gt;PBKDF2WithHmacSHA1&lt;/encrypt-method&gt;
            &lt;encrypt-iteration-count&gt;32768&lt;/encrypt-iteration-count&gt;
        &lt;/aaa-encrypt-service-config&gt;
        &lt;routing-policy xmlns="http://openconfig.net/yang/routing-policy"&gt;
            &lt;defined-sets&gt;
                &lt;bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                    &lt;role-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-internal&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ibgp&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;all&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ebgp&lt;/role-set-name&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;ibgp-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                    &lt;/role-sets&gt;
                    &lt;originator-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;originator-id-set&gt;
                            &lt;originator-id-set-name&gt;local-originator-id&lt;/originator-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/originator-id-set&gt;
                    &lt;/originator-id-sets&gt;
                    &lt;cluster-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;cluster-id-set&gt;
                            &lt;cluster-id-set-name&gt;local-cluster-id&lt;/cluster-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/cluster-id-set&gt;
                    &lt;/cluster-id-sets&gt;
                &lt;/bgp-defined-sets&gt;
            &lt;/defined-sets&gt;
            &lt;policy-definitions&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-export-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-odl-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="all"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-odl-internal-to-internal-or-rr-client&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-rr-client-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-not-in xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy" xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-not-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-next-hop&gt;SELF&lt;/set-next-hop&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;vpn-membership-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV6-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV4-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;vpn-non-member xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-import-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-non-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                            &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                    &lt;match-cluster-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;cluster-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/cluster-id-sets/cluster-id-set[cluster-set-name="local-cluster-id"]&lt;/cluster-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-cluster-id-set-condition&gt;
                                    &lt;match-originator-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;originator-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/originator-id-sets/originator-id-set[originator-set-name="local-originator-id"]&lt;/originator-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-originator-id-set-condition&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
            &lt;/policy-definitions&gt;
        &lt;/routing-policy&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-default-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6653&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-legacy-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6633&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:33.512890" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:33.084398" elapsed="0.428525"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:33.513000" elapsed="0.000053"/>
</return>
<msg time="2026-04-05T00:35:33.513203" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:33.080256" elapsed="0.432977"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:33.513280" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:33.513445" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:...</msg>
<var>${reply}</var>
<arg>get-config-edit-after-commit</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:33.078790" elapsed="0.434687"/>
</kw>
<kw name="Check_First_Batch_Data_Present">
<kw name="Check_First_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:33.514899" elapsed="0.000326"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:33.514379" elapsed="0.000902"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:33.515852" elapsed="0.000279"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:33.515436" elapsed="0.000748"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:33.516756" elapsed="0.000277"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:33.516324" elapsed="0.000763"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:33.517665" elapsed="0.000281"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:33.517225" elapsed="0.000775"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:33.514032" elapsed="0.004025"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:33.513689" elapsed="0.004416"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.519691" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.518983" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.518962" elapsed="0.000819"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:33.519917" elapsed="0.000313"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:33.524865" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:33.524449" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:33.525110" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:33.524967" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.524949" elapsed="0.000243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.525328" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.525503" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.525680" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.525835" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.525988" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.526142" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.526291" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:33.524143" elapsed="0.002270"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:33.518767" elapsed="0.007713"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:33.518384" elapsed="0.008137"/>
</kw>
<doc>Check that the change is now in the configuration.</doc>
<status status="PASS" start="2026-04-05T00:35:32.980063" elapsed="0.546497"/>
</test>
<test id="s1-s3-s1-t13" name="Edit_Config_Create_Shall_Fail_Now" line="118">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:33.529794" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:33.529517" elapsed="0.000535"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.530996" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:33.530888" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.530870" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.535440" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:33.535322" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.535304" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:33.536478" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:33.536086" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:33.536943" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:33.536652" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:33.537012" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:33.537162" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:33.535729" elapsed="0.001458"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.542647" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:33.542534" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.542512" elapsed="0.000219"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.543989" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:33.543883" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.543864" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:33.544574" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:33.544190" elapsed="0.000414"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.545006" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:33.544753" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.582869" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:33.545569" elapsed="0.037464"/>
</kw>
<msg time="2026-04-05T00:35:33.583207" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:33.583253" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.545176" elapsed="0.038114"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.609143" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "C "r "e "a "t "e "_ "S "h "a "l "l "_ "F "a "i "l "_ "N "o "w "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:33.583920" elapsed="0.025401"/>
</kw>
<msg time="2026-04-05T00:35:33.609514" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:33.609560" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "C "r "e "a "t ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.583467" elapsed="0.026130"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.610012" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.609794" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.609770" elapsed="0.000347"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:33.610652" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "C "r "e "a "t "e "_ "S "h "a "l "l "_ "F "a "i "l "_ "N "o "w "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:33.610248" elapsed="0.000475"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.610994" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.610791" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.610772" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:33.611128" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:33.614061" elapsed="0.000149"/>
</kw>
<msg time="2026-04-05T00:35:33.614283" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:33.613362" elapsed="0.001026"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.615206" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.616060" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:33.612016" elapsed="0.004164"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:33.611406" elapsed="0.004891"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:33.543572" elapsed="0.072826"/>
</kw>
<msg time="2026-04-05T00:35:33.616510" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:33.616553" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "C "r "e "a "t ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.542876" elapsed="0.073714"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:33.616774" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:33.616667" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.616649" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.617237" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.617579" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.617657" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:33.542157" elapsed="0.075642"/>
</kw>
<msg time="2026-04-05T00:35:33.617899" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:33.617942" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "C "r "e "a "t ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.537560" elapsed="0.080418"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.618295" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.618056" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.618039" elapsed="0.000333"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:33.537415" elapsed="0.080980"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:33.537242" elapsed="0.081202"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:33.534970" elapsed="0.083534"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:33.530606" elapsed="0.087954"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.530185" elapsed="0.088421"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:33.527570" elapsed="0.091126"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:33.620218" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/create-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/create-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:33.620520" level="INFO">${data} = &lt;rpc message-id="15" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;create&lt;/default-operation&gt;
&lt;config&gt;
&lt;people xmlns="urn:opendaylig...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:33.619795" elapsed="0.000759"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:33.620601" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:35:33.620755" level="INFO">${request} = &lt;rpc message-id="15" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;create&lt;/default-operation&gt;
&lt;config&gt;
&lt;people xmlns="urn:opendaylig...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:33.619475" elapsed="0.001308"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.623181" level="INFO">&lt;rpc message-id="15" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:33.621534" elapsed="0.001704"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.623866" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:33.623380" elapsed="0.000538"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.626895" level="INFO">&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;create&lt;/default-operation&gt;
&lt;config&gt;
&lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
  &lt;person&gt;
    &lt;id&gt;CUSTBAD&lt;/id&gt;
    &lt;age&gt;99&lt;/age&gt;
  &lt;/person&gt;
&lt;/people&gt;
&lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:33.624059" elapsed="0.002896"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:33.621222" elapsed="0.005790"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.632516" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="15" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;protocol&lt;/error-type&gt;
        &lt;error-tag&gt;data-exists&lt;/error-tag&gt;
        &lt;error-severity&gt;error&lt;/error-severity&gt;
        &lt;error-message&gt;Data already exists, cannot execute CREATE operation&lt;/error-message&gt;
    &lt;/rpc-error&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:33.632616" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="15" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;protocol&lt;/error-type&gt;
     ...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:33.627149" elapsed="0.005498"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:33.632693" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:33.632844" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="15" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;protocol&lt;/error-type&gt;
     ...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:33.620930" elapsed="0.011944"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:33.632917" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:33.633061" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="15" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;protocol&lt;/error-type&gt;
     ...</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:33.619158" elapsed="0.013932"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:33.634147" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/create-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/create-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:33.634277" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="15" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;rpc-error&gt;
&lt;error-type&gt;protocol&lt;/error-type&gt;
&lt;error-tag&gt;data-exists&lt;...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:33.633924" elapsed="0.000382"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:33.634351" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:33.634521" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="15" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;rpc-error&gt;
&lt;error-type&gt;protocol&lt;/error-type&gt;
&lt;error-tag&gt;data-exists&lt;...</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:33.633536" elapsed="0.001013"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:33.634592" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:33.634736" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="15" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;rpc-error&gt;
&lt;error-type&gt;protocol&lt;/error-type&gt;
&lt;error-tag&gt;data-exists&lt;...</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:33.633228" elapsed="0.001535"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:33.635147" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="15" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;protocol&lt;/error-type&gt;
     ...</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:33.634937" elapsed="0.000271"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:33.635594" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="15" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;protocol&lt;/error-type&gt;
       ...</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:33.635355" elapsed="0.000269"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:33.635767" elapsed="0.000494"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:33.636314" elapsed="0.000029"/>
</return>
<arg>create</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:33.618877" elapsed="0.017575"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.637617" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.637241" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.637223" elapsed="0.000479"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:33.637848" elapsed="0.000308"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:33.642908" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:33.642493" elapsed="0.000442"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:33.643150" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:33.643010" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.642992" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.643364" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.643538" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.643695" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.643844" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.643993" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.644142" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.644288" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:33.642189" elapsed="0.002174"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:33.637037" elapsed="0.007376"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:33.636703" elapsed="0.007766"/>
</kw>
<doc>Request a "create" operation of an element that already exists and check that it fails with the correct error (RFC 6241, section 7.2, operation "create").</doc>
<status status="PASS" start="2026-04-05T00:35:33.526918" elapsed="0.117591"/>
</test>
<test id="s1-s3-s1-t14" name="Delete_First_Batch" line="122">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:33.647444" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:33.647184" elapsed="0.000521"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.648644" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:33.648537" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.648518" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.653095" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:33.652989" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.652971" elapsed="0.000230"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:33.654187" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:33.653794" elapsed="0.000426"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:33.654677" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:33.654365" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:33.654747" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:33.654898" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:33.653432" elapsed="0.001491"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.661476" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:33.661352" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.661333" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.662758" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:33.662654" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.662636" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:33.663308" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:33.662953" elapsed="0.000381"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.663749" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:33.663504" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.699081" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:33.664286" elapsed="0.034956"/>
</kw>
<msg time="2026-04-05T00:35:33.699408" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:33.699469" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.663919" elapsed="0.035588"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.718444" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "e "l "e "t "e "_ "F "i "r "s "t "_ "B "a "t "c "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:33.700040" elapsed="0.018576"/>
</kw>
<msg time="2026-04-05T00:35:33.718782" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:33.718827" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "e "l "e "t "e "_ "F "i "r "s "t "_ "B "a "t "c ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.699665" elapsed="0.019198"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.719144" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.718939" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.718920" elapsed="0.000324"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:33.719780" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "e "l "e "t "e "_ "F "i "r "s "t "_ "B "a "t "c "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:33.719372" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.720115" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.719913" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.719895" elapsed="0.000322"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:33.720249" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:33.723162" elapsed="0.000149"/>
</kw>
<msg time="2026-04-05T00:35:33.723381" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:33.722501" elapsed="0.000998"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.724378" elapsed="0.000067"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.725264" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:33.721079" elapsed="0.004301"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:33.720513" elapsed="0.005006"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:33.662325" elapsed="0.063294"/>
</kw>
<msg time="2026-04-05T00:35:33.725710" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:33.725752" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "e "l "e "t "e "_ "F "i "r "s "t "_ "B "a "t "c ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.661687" elapsed="0.064103"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:33.726029" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-05T00:35:33.725881" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.725860" elapsed="0.000270"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.726551" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.726870" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.726940" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:33.661014" elapsed="0.066034"/>
</kw>
<msg time="2026-04-05T00:35:33.727141" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:33.727184" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "e "l "e "t "e "_ "F "i "r "s "t "_ "B "a "t "c ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.655277" elapsed="0.071945"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.727552" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.727296" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.727279" elapsed="0.000357"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:33.655147" elapsed="0.072523"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:33.654977" elapsed="0.072728"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:33.652629" elapsed="0.075130"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:33.648239" elapsed="0.079576"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.647840" elapsed="0.080018"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:33.645193" elapsed="0.082715"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:33.729360" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:33.729554" level="INFO">${data} = &lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operati...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:33.728958" elapsed="0.000630"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:33.729636" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:35:33.729821" level="INFO">${request} = &lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operati...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:33.728659" elapsed="0.001197"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.732761" level="INFO">&lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:33.730898" elapsed="0.001921"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.733294" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:33.732959" elapsed="0.000386"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.739582" level="INFO">&lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operation&gt;none&lt;/default-operation&gt;
    &lt;config xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car" a:operation="remove"&gt;
    &lt;/cars&gt;
    &lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people" a:operation="remove"&gt;
    &lt;/people&gt;
    &lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people" a:operation="remove"&gt;
    &lt;/car-people&gt;
    &lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:33.733497" elapsed="0.006158"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:33.730394" elapsed="0.009326"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.749636" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:33.749745" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:33.739857" elapsed="0.009915"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:33.749820" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:35:33.749992" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:33.730054" elapsed="0.019970"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:33.750072" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:33.750236" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:33.728354" elapsed="0.021911"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:33.751270" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:33.751414" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:33.751049" elapsed="0.000412"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:33.751507" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:33.751667" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:33.750741" elapsed="0.000960"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:33.751751" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:33.751909" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:33.750418" elapsed="0.001518"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:33.752283" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:33.752079" elapsed="0.000233"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:33.752704" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:33.752472" elapsed="0.000261"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:33.752878" elapsed="0.000463"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:33.753395" elapsed="0.000043"/>
</return>
<arg>delete</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:33.728071" elapsed="0.025464"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.754810" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.754409" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.754388" elapsed="0.000521"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:33.755049" elapsed="0.000322"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:33.760357" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:33.759945" elapsed="0.000439"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:33.760622" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:33.760478" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.760459" elapsed="0.000243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.760840" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.761000" elapsed="0.000022"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.761162" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.761318" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.761489" elapsed="0.000022"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.761647" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.761808" elapsed="0.000024"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:33.759593" elapsed="0.002300"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:33.754192" elapsed="0.007752"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:33.753795" elapsed="0.008190"/>
</kw>
<doc>Delete the created element from the candidate configuration and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:33.644710" elapsed="0.117348"/>
</test>
<test id="s1-s3-s1-t15" name="Get_Config_Running_To_Confirm_No_Delete_Before_Commit" line="126">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:33.765295" elapsed="0.000226"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:33.765048" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.766573" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:33.766460" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.766440" elapsed="0.000203"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.771109" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:33.771002" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.770976" elapsed="0.000201"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:33.772174" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:33.771788" elapsed="0.000412"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:33.772667" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:33.772348" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:33.772739" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:33.772893" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:33.771390" elapsed="0.001528"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.778230" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:33.778114" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.778092" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.779527" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:33.779396" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.779377" elapsed="0.000220"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:33.780129" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:33.779737" elapsed="0.000418"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.780612" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:33.780338" elapsed="0.000301"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.809763" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:33.781168" elapsed="0.028769"/>
</kw>
<msg time="2026-04-05T00:35:33.810153" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:33.810204" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.780787" elapsed="0.029459"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.837105" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n "g "_ "T "o "_ "C "o "n "f "i "r "m "_ "N "o "_ "D "e "l "e "t "e "_ "B "e "f "o "r "e "_ "C "o "m "m "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:33.810822" elapsed="0.026468"/>
</kw>
<msg time="2026-04-05T00:35:33.837507" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:33.837555" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.810412" elapsed="0.027179"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.837884" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.837672" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.837651" elapsed="0.000336"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:33.838555" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n "g "_ "T "o "_ "C "o "n "f "i "r "m "_ "N "o "_ "D "e "l "e "t "e "_ "B "e "f "o "r "e "_ "C "o "m "m "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:33.838119" elapsed="0.000519"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.838916" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.838713" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.838694" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:33.839050" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:33.842016" elapsed="0.000197"/>
</kw>
<msg time="2026-04-05T00:35:33.842287" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:33.841320" elapsed="0.001072"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.843213" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.844049" elapsed="0.000039"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:33.839952" elapsed="0.004217"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:33.839329" elapsed="0.004956"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:33.779096" elapsed="0.065288"/>
</kw>
<msg time="2026-04-05T00:35:33.844492" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:33.844536" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.778458" elapsed="0.066116"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:33.844760" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:33.844652" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.844633" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.845228" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.845583" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:33.845698" elapsed="0.000020"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:33.777737" elapsed="0.068078"/>
</kw>
<msg time="2026-04-05T00:35:33.845909" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:33.845952" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.773281" elapsed="0.072708"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:33.846337" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:33.846066" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:33.846048" elapsed="0.000412"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:33.773150" elapsed="0.073337"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:33.772974" elapsed="0.073546"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:33.770634" elapsed="0.075941"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:33.766149" elapsed="0.080481"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:33.765709" elapsed="0.080967"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:33.763064" elapsed="0.083663"/>
</kw>
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:33.847808" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-no-delete-before-commit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-no-delete-before-commit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:33.847964" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="7"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:33.847569" elapsed="0.000423"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:33.848038" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:33.848185" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="7"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:33.847172" elapsed="0.001042"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.850696" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="7"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:33.849171" elapsed="0.001584"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.851259" level="INFO">&lt;get-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:33.850896" elapsed="0.000414"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:33.852584" level="INFO">&lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:33.851465" elapsed="0.001177"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:33.848875" elapsed="0.003823"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.276848" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="7"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
            &lt;person&gt;
                &lt;id&gt;CUST001&lt;/id&gt;
                &lt;age&gt;32&lt;/age&gt;
            &lt;/person&gt;
        &lt;/people&gt;
        &lt;network-instances xmlns="http://openconfig.net/yang/network-instance"&gt;
            &lt;network-instance&gt;
                &lt;name&gt;global-bgp&lt;/name&gt;
                &lt;protocols/&gt;
            &lt;/network-instance&gt;
        &lt;/network-instances&gt;
        &lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;TOY001&lt;/car-id&gt;
                &lt;person-id&gt;CUST001&lt;/person-id&gt;
            &lt;/car-person&gt;
        &lt;/car-people&gt;
        &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;
                &lt;node&gt;
                    &lt;node-id&gt;43.43.43.43&lt;/node-id&gt;
                    &lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;password&gt;topsecret&lt;/password&gt;
                        &lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;
                    &lt;/session-config&gt;
                &lt;/node&gt;
                &lt;topology-types&gt;
                    &lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;
                        &lt;session-config&gt;
                            &lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;
                            &lt;listen-port&gt;4189&lt;/listen-port&gt;
                            &lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;
                            &lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;
                            &lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;
                        &lt;/session-config&gt;
                    &lt;/topology-pcep&gt;
                &lt;/topology-types&gt;
            &lt;/topology&gt;
        &lt;/network-topology&gt;
        &lt;key-stores xmlns="urn:opendaylight:yang:aaa:cert:mdsal"&gt;
            &lt;id&gt;KeyStores:1&lt;/id&gt;
            &lt;ssl-data&gt;
                &lt;bundle-name&gt;opendaylight&lt;/bundle-name&gt;
                &lt;tls-protocols/&gt;
                &lt;odl-keystore&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j7eR9+jY/ReL6ScBdTboi/ykrFmYXQQ7xFuusDY=&lt;/store-password&gt;
                    &lt;sign-alg&gt;SHA1WithRSAEncryption&lt;/sign-alg&gt;
                    &lt;validity&gt;365&lt;/validity&gt;
                    &lt;alias&gt;controller&lt;/alias&gt;
                    &lt;name&gt;ctl.jks&lt;/name&gt;
                    &lt;dname&gt;CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA&lt;/dname&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTGHQubhwHV9aYycwWBO28GdM+0EbfzFmaKhmDhRYeXS6rzNXHoliYz24Nm9Rrgrt6HUbPrex4U1IKGVHfZ0Ok7NBGIva1O3gjWP564Pdsk02VALY+3x/pSHApp4XbOoK9VYCcR27ceSz8ZakXtNqIJSP+ns/tei6wcB1xSE+4cbVJyYGh1UDqWS1/VdQBlNy6nfXdApw0tanG7ZJFszyDip/doAf8261x3CC98HK81B7ThgpPdwkfKnvxYuSkF3b/1W4TMZRXQKoNXSvvbt7QShC9dyN22zdxIdTlv2E9FgZtMCzHJbnTYQbVnfqASfUj5iF5Ghkz+IM8Ctr6HcZo+25RTqGaKLuZdDKZsbvA3YcX7uBb/X1nA/l2LI0ZdEShpllIgbm3+J55OpqL0QTF2WZCJWu7Da/ancqEis6zpVPrbdOAE1k22Fr+Ctg0l0irt86r8kcXv1m/S5c5k9OItEy6ZsXWcPBbLtn9vnpWI2Dvf6pB53cBpe3xC6ucl3Y31l0zrhw8JROv6BOV1HsYa2L7AMj+iaHNbumqX3rTxLSXsEEPVFiw07o5dj4j2lmaBUCQCGfvTCMExpzSs5/HrTOQhLHQzIkzuu9OEYw9OJOM9PPormeqd4mDlQo3opDFfVwJzc0TICklSr+OcNsKHMoYGuMYgcDR+W3fF13PF/ADvelxR6Jyc9nossRkhn8boEwu2OUhnUrgkfj5dvcaIyEt3QXbN0bp7fLAjJL3bmmqJh3BA6hnVheoEvZU8igAkdqL2y4J9UlXx+JkqZVoJEWizc4jYLpurXL9S0WYbXa37xZBh21j77UbBUBT6fCKjFbnYCjJKOPIfraTehhVxFKiHwwaUk0rYaUMbQMAasY8Z9h921xnfci307Gz2WuvN2blL3RG0n2ylzVTO9W4KWZf8lN1jpLT416KmVoaY7ltl58IQJHIn8Xda2pYe9o9QcgzVBY0gk8IfXThTKl2yFNREbE41NvCmkKQ70wg1/0BOuKAvMkje+CuHggKZXw/h+uw5wS7PGLv+P5ttt2sLjnbxtnFPu1NSS89AJ7iu4djWlEyMTXRGG9N2k1CLygLBXe4SAImLTZdd7N527Q28A3HqMgJQY6Lttme9oIpm+DQl9aQIIJgDZb9vvh9f/w4bYvCRHiwBqWNv+u9+PX0+seqNR1kpGOk933QFd0DGlQhpDrcB3yfQ9amX0V2ThyS6hqtMqgJDsacXG0DsZvotEq/uQ0Y/y++7b8g/3qto/eQ8AtVYnMwDwZJxNfEPJaWlC75coGq26S82cZdXjs48kjW88bcyW4+vhsW6eV+vR4z8u7YgQDBpNqbp1R6LixkqEiMRzkK6tbzvhdOxKzMO5qwuG1j3a2S4AjNxnfph0KUM0o5X/jDpjA7NndqzsanXunCTbr1gC0NKgoSzIfb5FtAVlGocJ+YWMrQYAfZ5EQyPVHTI0oW5V2T4jV7dATMpSXFBJ9Rp7PH02d0rtETqUF0b6Yzd8j2eNG82MXrU9yeshDY6xAD2PK0IQ2iMIXVTvohvMwvXKq7AiGiBI7RGUb+yWlkaYNBbz4L78d98li8+AT1wyfjSS06oa+UeAqFY3ADccuHzX1ZyUzlghNQCEu3mrLW2cIaQFftP+h3QfT0nRI7X7/3qeBiMD7VjhZfSVJwrY6DIdtrax4cUmqVrY1qxnbtmygGasXfC1c7vN/mrMPw+GLHjEaC8hRSQFs3WCV6uGu+LJ9Du3STlQKWEM/BhBU2oSGqaJkeI85I3JypXY=&lt;/keystoreFile&gt;
                    &lt;key-alg&gt;RSA&lt;/key-alg&gt;
                    &lt;keysize&gt;1024&lt;/keysize&gt;
                &lt;/odl-keystore&gt;
                &lt;cipher-suites&gt;
                    &lt;suiteName/&gt;
                &lt;/cipher-suites&gt;
                &lt;trust-keystore&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTcoJvqo8Gw5sBv9S7MPdfC8Ey5w0ERj70l1baW6SoxGbO2hfKQ==&lt;/keystoreFile&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j6X21ePQ7B2NsEEpHtEh2FY13wcfZiComYctBEY=&lt;/store-password&gt;
                    &lt;name&gt;truststore.jks&lt;/name&gt;
                &lt;/trust-keystore&gt;
            &lt;/ssl-data&gt;
        &lt;/key-stores&gt;
        &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
            &lt;car-entry&gt;
                &lt;id&gt;TOY001&lt;/id&gt;
                &lt;model&gt;Toyota Corolla&lt;/model&gt;
                &lt;year&gt;2016&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
                &lt;category&gt;sedan&lt;/category&gt;
            &lt;/car-entry&gt;
        &lt;/cars&gt;
        &lt;odl-bmp-monitors xmlns="urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"&gt;
            &lt;bmp-monitor-config&gt;
                &lt;monitor-id&gt;example-bmp-monitor&lt;/monitor-id&gt;
                &lt;server&gt;
                    &lt;binding-port&gt;12345&lt;/binding-port&gt;
                    &lt;binding-address&gt;0.0.0.0&lt;/binding-address&gt;
                &lt;/server&gt;
            &lt;/bmp-monitor-config&gt;
        &lt;/odl-bmp-monitors&gt;
        &lt;aaa-encrypt-service-config xmlns="config:aaa:authn:encrypt:service:config"&gt;
            &lt;encrypt-type&gt;AES&lt;/encrypt-type&gt;
            &lt;encrypt-key-length&gt;128&lt;/encrypt-key-length&gt;
            &lt;password-length&gt;12&lt;/password-length&gt;
            &lt;cipher-transforms&gt;AES/GCM/NoPadding&lt;/cipher-transforms&gt;
            &lt;encrypt-key&gt;DYmlnajBzTZj&lt;/encrypt-key&gt;
            &lt;encrypt-salt&gt;CwWGOgKD82i1gQRzdbP9jw==&lt;/encrypt-salt&gt;
            &lt;auth-tag-length&gt;128&lt;/auth-tag-length&gt;
            &lt;encrypt-method&gt;PBKDF2WithHmacSHA1&lt;/encrypt-method&gt;
            &lt;encrypt-iteration-count&gt;32768&lt;/encrypt-iteration-count&gt;
        &lt;/aaa-encrypt-service-config&gt;
        &lt;routing-policy xmlns="http://openconfig.net/yang/routing-policy"&gt;
            &lt;defined-sets&gt;
                &lt;bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                    &lt;role-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-internal&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ibgp&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;all&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ebgp&lt;/role-set-name&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;ibgp-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                    &lt;/role-sets&gt;
                    &lt;originator-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;originator-id-set&gt;
                            &lt;originator-id-set-name&gt;local-originator-id&lt;/originator-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/originator-id-set&gt;
                    &lt;/originator-id-sets&gt;
                    &lt;cluster-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;cluster-id-set&gt;
                            &lt;cluster-id-set-name&gt;local-cluster-id&lt;/cluster-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/cluster-id-set&gt;
                    &lt;/cluster-id-sets&gt;
                &lt;/bgp-defined-sets&gt;
            &lt;/defined-sets&gt;
            &lt;policy-definitions&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-export-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-odl-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="all"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-odl-internal-to-internal-or-rr-client&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-rr-client-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-not-in xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy" xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-not-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-next-hop&gt;SELF&lt;/set-next-hop&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;vpn-membership-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV6-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV4-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;vpn-non-member xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-import-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-non-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                            &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                    &lt;match-cluster-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;cluster-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/cluster-id-sets/cluster-id-set[cluster-set-name="local-cluster-id"]&lt;/cluster-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-cluster-id-set-condition&gt;
                                    &lt;match-originator-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;originator-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/originator-id-sets/originator-id-set[originator-set-name="local-originator-id"]&lt;/originator-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-originator-id-set-condition&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
            &lt;/policy-definitions&gt;
        &lt;/routing-policy&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-default-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6653&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-legacy-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6633&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:34.277545" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="7"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:33.852836" elapsed="0.424743"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:34.277662" elapsed="0.000062"/>
</return>
<msg time="2026-04-05T00:35:34.277880" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="7"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:33.848359" elapsed="0.429550"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:34.277957" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:34.278106" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="7"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:...</msg>
<var>${reply}</var>
<arg>get-config-no-delete-before-commit</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:33.846879" elapsed="0.431256"/>
</kw>
<kw name="Check_First_Batch_Data_Present">
<kw name="Check_First_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.279576" elapsed="0.000317"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.279071" elapsed="0.000880"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.280528" elapsed="0.000292"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.280095" elapsed="0.000780"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.281455" elapsed="0.000289"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.281018" elapsed="0.000782"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.282359" elapsed="0.000303"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.281943" elapsed="0.000775"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:34.278698" elapsed="0.004078"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:34.278339" elapsed="0.004487"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.284129" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:34.283737" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.283716" elapsed="0.000501"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:34.284350" elapsed="0.000328"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:34.289301" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:34.288887" elapsed="0.000442"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:34.289564" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:34.289404" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.289386" elapsed="0.000266"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.289789" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.289948" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.290108" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.290263" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.290415" elapsed="0.000035"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.290586" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.290738" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:34.288595" elapsed="0.002261"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:34.283502" elapsed="0.007436"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:34.283120" elapsed="0.007864"/>
</kw>
<doc>Make sure the element is still present in the running configuration as the delete command was not committed yet.</doc>
<status status="PASS" start="2026-04-05T00:35:33.762382" elapsed="0.528642"/>
</test>
<test id="s1-s3-s1-t16" name="Commit_Delete" line="131">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:34.294373" elapsed="0.000234"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:34.294124" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:34.295647" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:34.295540" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.295521" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:34.300177" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:34.300071" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.300053" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:34.301225" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:34.300847" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:34.301709" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:34.301398" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:34.301778" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:34.301932" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:34.300482" elapsed="0.001474"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:34.307042" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:34.306904" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.306885" elapsed="0.000226"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:34.308306" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:34.308201" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.308183" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:34.308889" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:34.308528" elapsed="0.000388"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.309382" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:34.309125" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.345678" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:34.309966" elapsed="0.035925"/>
</kw>
<msg time="2026-04-05T00:35:34.346070" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:34.346116" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:34.309588" elapsed="0.036564"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.363912" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "D "e "l "e "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:34.346731" elapsed="0.017405"/>
</kw>
<msg time="2026-04-05T00:35:34.364337" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:34.364384" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "D "e "l "e "t "e "[K"
[?1l&gt;[?...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:34.346319" elapsed="0.018130"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.364889" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:34.364621" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.364587" elapsed="0.000411"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:34.365587" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "D "e "l "e "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:34.365134" elapsed="0.000517"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.365920" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:34.365719" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.365700" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:34.366056" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:34.369161" elapsed="0.000156"/>
</kw>
<msg time="2026-04-05T00:35:34.369392" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:34.368403" elapsed="0.001123"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.370322" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.371192" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:34.366982" elapsed="0.004336"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:34.366351" elapsed="0.005098"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:34.307902" elapsed="0.063652"/>
</kw>
<msg time="2026-04-05T00:35:34.371656" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:34.371702" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "D "e "l "e "t "e "[K"
[?1l&gt;[?...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:34.307247" elapsed="0.064497"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:34.371949" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-05T00:35:34.371832" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.371809" elapsed="0.000229"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.372502" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.372844" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:34.372915" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:34.306569" elapsed="0.066458"/>
</kw>
<msg time="2026-04-05T00:35:34.373124" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:34.373168" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "D "e "l "e "t "e "[K"
[?1l&gt;[?...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:34.302312" elapsed="0.070897"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.373676" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:34.373288" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.373271" elapsed="0.000484"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:34.302184" elapsed="0.071595"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:34.302011" elapsed="0.071802"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:34.299693" elapsed="0.074182"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:34.295237" elapsed="0.078696"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:34.294801" elapsed="0.079181"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:34.291921" elapsed="0.082118"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:34.375465" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-delete-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-delete-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:34.375664" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:34.375217" elapsed="0.000474"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:34.375737" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:34.375882" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:34.374890" elapsed="0.001018"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.378525" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:34.376664" elapsed="0.001919"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.379033" level="INFO">&lt;commit/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:34.378723" elapsed="0.000392"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.379718" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:34.379253" elapsed="0.000518"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:34.376339" elapsed="0.003487"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.386850" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:34.386946" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:34.379963" elapsed="0.007011"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:34.387022" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:35:34.387200" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:34.376051" elapsed="0.011177"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:34.387270" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:34.387411" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:34.374599" elapsed="0.012855"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:34.388705" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-delete-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-delete-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:34.388839" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:34.388490" elapsed="0.000377"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:34.388913" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:34.389061" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:34.387892" elapsed="0.001196"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:34.389131" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:34.389274" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:34.387596" elapsed="0.001705"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:34.389670" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:34.389461" elapsed="0.000238"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:34.390069" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:34.389841" elapsed="0.000257"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:34.390246" elapsed="0.000504"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:34.390801" elapsed="0.000028"/>
</return>
<arg>commit-delete</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:34.374281" elapsed="0.016642"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.392179" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:34.391807" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.391788" elapsed="0.000478"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:34.392404" elapsed="0.000336"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:34.397375" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:34.396966" elapsed="0.000436"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:34.397635" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:34.397492" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.397474" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.397851" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.398010" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.398167" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.398321" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.398490" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.398647" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.398799" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:34.396678" elapsed="0.002196"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:34.391597" elapsed="0.007327"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:34.391235" elapsed="0.007730"/>
</kw>
<doc>Commit the deletion of the element and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:34.291432" elapsed="0.107573"/>
</test>
<test id="s1-s3-s1-t17" name="Get_Config_Running_To_Confirm_Delete_After_Commit" line="135">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:34.402102" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:34.401859" elapsed="0.000502"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:34.403347" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:34.403240" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.403221" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:34.408021" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:34.407916" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.407897" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:34.409066" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:34.408684" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:34.409551" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:34.409239" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:34.409621" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:34.409775" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:34.408305" elapsed="0.001495"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:34.414848" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:34.414742" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.414723" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:34.416243" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:34.416138" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.416120" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:34.416842" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:34.416477" elapsed="0.000391"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.417264" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:34.417015" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.457060" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:34.417823" elapsed="0.039401"/>
</kw>
<msg time="2026-04-05T00:35:34.457395" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:34.457460" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:34.417452" elapsed="0.040046"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.489622" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n "g "_ "T "o "_ "C "o "n "f "i "r "m "_ "D "e "l "e "t "e "_ "A "f "t "e "r "_ "C "o "m "m "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:34.458033" elapsed="0.031772"/>
</kw>
<msg time="2026-04-05T00:35:34.489971" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:34.490016" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:34.457656" elapsed="0.032396"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.490332" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:34.490128" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.490109" elapsed="0.000349"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:34.490964" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n "g "_ "T "o "_ "C "o "n "f "i "r "m "_ "D "e "l "e "t "e "_ "A "f "t "e "r "_ "C "o "m "m "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:34.490590" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.491330" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:34.491105" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.491087" elapsed="0.000359"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:34.491481" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:34.494305" elapsed="0.000165"/>
</kw>
<msg time="2026-04-05T00:35:34.494542" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:34.493669" elapsed="0.000971"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.495457" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.496260" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:34.492297" elapsed="0.004076"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:34.491734" elapsed="0.004773"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:34.415838" elapsed="0.080767"/>
</kw>
<msg time="2026-04-05T00:35:34.496696" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:34.496740" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:34.415053" elapsed="0.081724"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:34.497155" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:34.497043" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.496868" elapsed="0.000373"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.497653" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.497973" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:34.498045" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:34.414396" elapsed="0.083757"/>
</kw>
<msg time="2026-04-05T00:35:34.498246" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:34.498289" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "C "o "n "f "i "g "_ "R "u "n "n "i "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:34.410159" elapsed="0.088166"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.498650" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:34.498400" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.498382" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:34.410030" elapsed="0.088718"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:34.409856" elapsed="0.088921"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:34.407558" elapsed="0.091272"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:34.402920" elapsed="0.095964"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:34.402511" elapsed="0.096418"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:34.399900" elapsed="0.099080"/>
</kw>
<kw name="Check_Test_Objects_Not_Present_In_Config">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:34.500239" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-delete-after-commit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-delete-after-commit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:34.500369" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:34.500030" elapsed="0.000367"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:34.500471" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:34.500617" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:34.499731" elapsed="0.000914"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.503635" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:34.501357" elapsed="0.002334"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.504195" level="INFO">&lt;get-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:34.503832" elapsed="0.000413"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.505593" level="INFO">&lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:34.504379" elapsed="0.001269"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:34.501069" elapsed="0.004635"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.910349" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfig.net/yang/network-instance"&gt;
            &lt;network-instance&gt;
                &lt;name&gt;global-bgp&lt;/name&gt;
                &lt;protocols/&gt;
            &lt;/network-instance&gt;
        &lt;/network-instances&gt;
        &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;
                &lt;node&gt;
                    &lt;node-id&gt;43.43.43.43&lt;/node-id&gt;
                    &lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;password&gt;topsecret&lt;/password&gt;
                        &lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;
                    &lt;/session-config&gt;
                &lt;/node&gt;
                &lt;topology-types&gt;
                    &lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;
                        &lt;session-config&gt;
                            &lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;
                            &lt;listen-port&gt;4189&lt;/listen-port&gt;
                            &lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;
                            &lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;
                            &lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;
                        &lt;/session-config&gt;
                    &lt;/topology-pcep&gt;
                &lt;/topology-types&gt;
            &lt;/topology&gt;
        &lt;/network-topology&gt;
        &lt;key-stores xmlns="urn:opendaylight:yang:aaa:cert:mdsal"&gt;
            &lt;id&gt;KeyStores:1&lt;/id&gt;
            &lt;ssl-data&gt;
                &lt;bundle-name&gt;opendaylight&lt;/bundle-name&gt;
                &lt;tls-protocols/&gt;
                &lt;odl-keystore&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j7eR9+jY/ReL6ScBdTboi/ykrFmYXQQ7xFuusDY=&lt;/store-password&gt;
                    &lt;sign-alg&gt;SHA1WithRSAEncryption&lt;/sign-alg&gt;
                    &lt;validity&gt;365&lt;/validity&gt;
                    &lt;alias&gt;controller&lt;/alias&gt;
                    &lt;name&gt;ctl.jks&lt;/name&gt;
                    &lt;dname&gt;CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA&lt;/dname&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTGHQubhwHV9aYycwWBO28GdM+0EbfzFmaKhmDhRYeXS6rzNXHoliYz24Nm9Rrgrt6HUbPrex4U1IKGVHfZ0Ok7NBGIva1O3gjWP564Pdsk02VALY+3x/pSHApp4XbOoK9VYCcR27ceSz8ZakXtNqIJSP+ns/tei6wcB1xSE+4cbVJyYGh1UDqWS1/VdQBlNy6nfXdApw0tanG7ZJFszyDip/doAf8261x3CC98HK81B7ThgpPdwkfKnvxYuSkF3b/1W4TMZRXQKoNXSvvbt7QShC9dyN22zdxIdTlv2E9FgZtMCzHJbnTYQbVnfqASfUj5iF5Ghkz+IM8Ctr6HcZo+25RTqGaKLuZdDKZsbvA3YcX7uBb/X1nA/l2LI0ZdEShpllIgbm3+J55OpqL0QTF2WZCJWu7Da/ancqEis6zpVPrbdOAE1k22Fr+Ctg0l0irt86r8kcXv1m/S5c5k9OItEy6ZsXWcPBbLtn9vnpWI2Dvf6pB53cBpe3xC6ucl3Y31l0zrhw8JROv6BOV1HsYa2L7AMj+iaHNbumqX3rTxLSXsEEPVFiw07o5dj4j2lmaBUCQCGfvTCMExpzSs5/HrTOQhLHQzIkzuu9OEYw9OJOM9PPormeqd4mDlQo3opDFfVwJzc0TICklSr+OcNsKHMoYGuMYgcDR+W3fF13PF/ADvelxR6Jyc9nossRkhn8boEwu2OUhnUrgkfj5dvcaIyEt3QXbN0bp7fLAjJL3bmmqJh3BA6hnVheoEvZU8igAkdqL2y4J9UlXx+JkqZVoJEWizc4jYLpurXL9S0WYbXa37xZBh21j77UbBUBT6fCKjFbnYCjJKOPIfraTehhVxFKiHwwaUk0rYaUMbQMAasY8Z9h921xnfci307Gz2WuvN2blL3RG0n2ylzVTO9W4KWZf8lN1jpLT416KmVoaY7ltl58IQJHIn8Xda2pYe9o9QcgzVBY0gk8IfXThTKl2yFNREbE41NvCmkKQ70wg1/0BOuKAvMkje+CuHggKZXw/h+uw5wS7PGLv+P5ttt2sLjnbxtnFPu1NSS89AJ7iu4djWlEyMTXRGG9N2k1CLygLBXe4SAImLTZdd7N527Q28A3HqMgJQY6Lttme9oIpm+DQl9aQIIJgDZb9vvh9f/w4bYvCRHiwBqWNv+u9+PX0+seqNR1kpGOk933QFd0DGlQhpDrcB3yfQ9amX0V2ThyS6hqtMqgJDsacXG0DsZvotEq/uQ0Y/y++7b8g/3qto/eQ8AtVYnMwDwZJxNfEPJaWlC75coGq26S82cZdXjs48kjW88bcyW4+vhsW6eV+vR4z8u7YgQDBpNqbp1R6LixkqEiMRzkK6tbzvhdOxKzMO5qwuG1j3a2S4AjNxnfph0KUM0o5X/jDpjA7NndqzsanXunCTbr1gC0NKgoSzIfb5FtAVlGocJ+YWMrQYAfZ5EQyPVHTI0oW5V2T4jV7dATMpSXFBJ9Rp7PH02d0rtETqUF0b6Yzd8j2eNG82MXrU9yeshDY6xAD2PK0IQ2iMIXVTvohvMwvXKq7AiGiBI7RGUb+yWlkaYNBbz4L78d98li8+AT1wyfjSS06oa+UeAqFY3ADccuHzX1ZyUzlghNQCEu3mrLW2cIaQFftP+h3QfT0nRI7X7/3qeBiMD7VjhZfSVJwrY6DIdtrax4cUmqVrY1qxnbtmygGasXfC1c7vN/mrMPw+GLHjEaC8hRSQFs3WCV6uGu+LJ9Du3STlQKWEM/BhBU2oSGqaJkeI85I3JypXY=&lt;/keystoreFile&gt;
                    &lt;key-alg&gt;RSA&lt;/key-alg&gt;
                    &lt;keysize&gt;1024&lt;/keysize&gt;
                &lt;/odl-keystore&gt;
                &lt;cipher-suites&gt;
                    &lt;suiteName/&gt;
                &lt;/cipher-suites&gt;
                &lt;trust-keystore&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTcoJvqo8Gw5sBv9S7MPdfC8Ey5w0ERj70l1baW6SoxGbO2hfKQ==&lt;/keystoreFile&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j6X21ePQ7B2NsEEpHtEh2FY13wcfZiComYctBEY=&lt;/store-password&gt;
                    &lt;name&gt;truststore.jks&lt;/name&gt;
                &lt;/trust-keystore&gt;
            &lt;/ssl-data&gt;
        &lt;/key-stores&gt;
        &lt;odl-bmp-monitors xmlns="urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"&gt;
            &lt;bmp-monitor-config&gt;
                &lt;monitor-id&gt;example-bmp-monitor&lt;/monitor-id&gt;
                &lt;server&gt;
                    &lt;binding-port&gt;12345&lt;/binding-port&gt;
                    &lt;binding-address&gt;0.0.0.0&lt;/binding-address&gt;
                &lt;/server&gt;
            &lt;/bmp-monitor-config&gt;
        &lt;/odl-bmp-monitors&gt;
        &lt;aaa-encrypt-service-config xmlns="config:aaa:authn:encrypt:service:config"&gt;
            &lt;encrypt-type&gt;AES&lt;/encrypt-type&gt;
            &lt;encrypt-key-length&gt;128&lt;/encrypt-key-length&gt;
            &lt;password-length&gt;12&lt;/password-length&gt;
            &lt;cipher-transforms&gt;AES/GCM/NoPadding&lt;/cipher-transforms&gt;
            &lt;encrypt-key&gt;DYmlnajBzTZj&lt;/encrypt-key&gt;
            &lt;encrypt-salt&gt;CwWGOgKD82i1gQRzdbP9jw==&lt;/encrypt-salt&gt;
            &lt;auth-tag-length&gt;128&lt;/auth-tag-length&gt;
            &lt;encrypt-method&gt;PBKDF2WithHmacSHA1&lt;/encrypt-method&gt;
            &lt;encrypt-iteration-count&gt;32768&lt;/encrypt-iteration-count&gt;
        &lt;/aaa-encrypt-service-config&gt;
        &lt;routing-policy xmlns="http://openconfig.net/yang/routing-policy"&gt;
            &lt;defined-sets&gt;
                &lt;bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                    &lt;role-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-internal&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ibgp&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;all&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ebgp&lt;/role-set-name&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;ibgp-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                    &lt;/role-sets&gt;
                    &lt;originator-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;originator-id-set&gt;
                            &lt;originator-id-set-name&gt;local-originator-id&lt;/originator-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/originator-id-set&gt;
                    &lt;/originator-id-sets&gt;
                    &lt;cluster-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;cluster-id-set&gt;
                            &lt;cluster-id-set-name&gt;local-cluster-id&lt;/cluster-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/cluster-id-set&gt;
                    &lt;/cluster-id-sets&gt;
                &lt;/bgp-defined-sets&gt;
            &lt;/defined-sets&gt;
            &lt;policy-definitions&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-export-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-odl-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="all"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-odl-internal-to-internal-or-rr-client&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-rr-client-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-not-in xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy" xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-not-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-next-hop&gt;SELF&lt;/set-next-hop&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;vpn-membership-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV6-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV4-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;vpn-non-member xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-import-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-non-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                            &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                    &lt;match-cluster-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;cluster-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/cluster-id-sets/cluster-id-set[cluster-set-name="local-cluster-id"]&lt;/cluster-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-cluster-id-set-condition&gt;
                                    &lt;match-originator-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;originator-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/originator-id-sets/originator-id-set[originator-set-name="local-originator-id"]&lt;/originator-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-originator-id-set-condition&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
            &lt;/policy-definitions&gt;
        &lt;/routing-policy&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-default-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6653&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-legacy-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6633&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:34.911048" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfi...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:34.505837" elapsed="0.405244"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:34.911163" elapsed="0.000052"/>
</return>
<msg time="2026-04-05T00:35:34.911373" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfi...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:34.500783" elapsed="0.410620"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:34.911465" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:34.911613" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfi...</msg>
<var>${reply}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:34.499445" elapsed="0.412198"/>
</kw>
<kw name="Check_Test_Objects_Absent">
<kw name="Check_First_Batch_Data_Not_Present">
<kw name="Check_First_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.913309" elapsed="0.000353"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.912828" elapsed="0.000890"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.914282" elapsed="0.000306"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.913860" elapsed="0.000782"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.915197" elapsed="0.000571"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.914788" elapsed="0.001037"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.916435" elapsed="0.000291"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.916000" elapsed="0.000781"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_Not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:34.912484" elapsed="0.004354"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:34.912181" elapsed="0.004705"/>
</kw>
<kw name="Check_Second_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;OLD001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.917813" elapsed="0.000288"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;OLD001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.917336" elapsed="0.000820"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST002&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.918725" elapsed="0.000330"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST002&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.918296" elapsed="0.000816"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;OLD001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.919684" elapsed="0.000309"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;OLD001&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.919254" elapsed="0.000793"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST002&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.920621" elapsed="0.000291"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST002&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.920187" elapsed="0.000781"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:34.917016" elapsed="0.004008"/>
</kw>
<kw name="Check_Multiple_Batch_Data_Absent">
<kw name="Check_Multiple_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.922239" elapsed="0.000300"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.921825" elapsed="0.000770"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.923139" elapsed="0.000303"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.922733" elapsed="0.000764"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.924075" elapsed="0.000285"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.923638" elapsed="0.000776"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.925043" elapsed="0.000283"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.924628" elapsed="0.000754"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CARYOUNG&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.925953" elapsed="0.000284"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CARYOUNG&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.925539" elapsed="0.000753"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTYOUNG&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.926862" elapsed="0.000284"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTYOUNG&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.926449" elapsed="0.000753"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARYOUNG&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.927778" elapsed="0.000302"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARYOUNG&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.927343" elapsed="0.000792"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.928708" elapsed="0.000284"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.928278" elapsed="0.000769"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CARMID&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.929616" elapsed="0.000292"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CARMID&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.929188" elapsed="0.000774"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTMID&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.930531" elapsed="0.000286"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTMID&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.930105" elapsed="0.000765"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARMID&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.931438" elapsed="0.000285"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARMID&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.931012" elapsed="0.000764"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTMID&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.932359" elapsed="0.000301"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTMID&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.931945" elapsed="0.000770"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD2&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.933265" elapsed="0.000301"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD2&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.932855" elapsed="0.000765"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD2&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.934170" elapsed="0.000297"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD2&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.933761" elapsed="0.000760"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD2&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.935072" elapsed="0.000280"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD2&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.934662" elapsed="0.000744"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.935987" elapsed="0.000280"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.935561" elapsed="0.000759"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:34.921512" elapsed="0.014865"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:34.921141" elapsed="0.015301"/>
</kw>
<kw name="Check_Auxiliary_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTBAD&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.937294" elapsed="0.000296"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTBAD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.936886" elapsed="0.000758"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.938186" elapsed="0.000302"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:34.937781" elapsed="0.000808"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:34.936568" elapsed="0.002079"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.938780" elapsed="0.000291"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:34.911843" elapsed="0.027290"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;REPLACE&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:34.939263" elapsed="0.000303"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:34.939616" elapsed="0.000035"/>
</return>
<arg>get-config-delete-after-commit</arg>
<doc>Use dataset with the specified name to get the configuration and check that none of our test objects are there.</doc>
<status status="PASS" start="2026-04-05T00:35:34.499130" elapsed="0.440617"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.941189" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:34.940796" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.940775" elapsed="0.000504"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:34.941413" elapsed="0.000328"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:34.946348" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:34.945924" elapsed="0.000452"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:34.946615" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:34.946472" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.946452" elapsed="0.000244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.946831" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.946987" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.947142" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.947292" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.947460" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.947612" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:34.947761" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:34.945636" elapsed="0.002200"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:34.940580" elapsed="0.007306"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:34.940033" elapsed="0.007893"/>
</kw>
<doc>Check that the element is gone.</doc>
<status status="PASS" start="2026-04-05T00:35:34.399354" elapsed="0.548647"/>
</test>
<test id="s1-s3-s1-t18" name="Commit_No_Transaction" line="139">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:34.951157" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:34.950912" elapsed="0.000504"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:34.952394" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:34.952285" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.952266" elapsed="0.000214"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:34.958413" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:34.958306" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.958288" elapsed="0.000208"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:34.959472" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:34.959077" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:34.959997" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:34.959685" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:34.960068" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:34.960222" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:34.958714" elapsed="0.001533"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:34.965271" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:34.965164" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.965145" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:34.966551" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:34.966443" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:34.966401" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:34.967111" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:34.966748" elapsed="0.000389"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:34.967549" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:34.967280" elapsed="0.000295"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.009067" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:34.968153" elapsed="0.041112"/>
</kw>
<msg time="2026-04-05T00:35:35.009468" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:35.009516" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:34.967724" elapsed="0.041828"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.028989" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "N "o "_ "T "r "a "n "s "a "c "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:35.010146" elapsed="0.019025"/>
</kw>
<msg time="2026-04-05T00:35:35.029339" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:35.029383" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "N "o "_ "T "r "a "n "s "a "c ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.009730" elapsed="0.019690"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.029789" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.029524" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.029501" elapsed="0.000394"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.030404" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "N "o "_ "T "r "a "n "s "a "c "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:35.030024" elapsed="0.000476"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.030779" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.030567" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.030549" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:35.030913" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:35.033889" elapsed="0.000152"/>
</kw>
<msg time="2026-04-05T00:35:35.034113" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:35.033192" elapsed="0.001025"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.035034" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.035865" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:35.031796" elapsed="0.004243"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:35.031188" elapsed="0.005006"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:34.966124" elapsed="0.070171"/>
</kw>
<msg time="2026-04-05T00:35:35.036389" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:35.036448" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "N "o "_ "T "r "a "n "s "a "c ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:34.965489" elapsed="0.070998"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:35.036864" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:35:35.036565" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.036547" elapsed="0.000403"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.037342" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.037683" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.037755" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:34.964830" elapsed="0.073036"/>
</kw>
<msg time="2026-04-05T00:35:35.037958" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:35.038002" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "N "o "_ "T "r "a "n "s "a "c ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:34.960622" elapsed="0.077417"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.038348" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.038114" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.038097" elapsed="0.000357"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:34.960492" elapsed="0.077988"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:34.960300" elapsed="0.078212"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:34.957944" elapsed="0.080622"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:34.951999" elapsed="0.086623"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:34.951568" elapsed="0.087099"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:34.948980" elapsed="0.089740"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:35.039991" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-no-transaction-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-no-transaction-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:35.040168" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:35.039772" elapsed="0.000422"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:35.040239" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:35.040384" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:35.039472" elapsed="0.000938"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.043606" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:35.041156" elapsed="0.002507"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.044143" level="INFO">&lt;commit/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:35.043802" elapsed="0.000392"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.044848" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:35.044333" elapsed="0.000569"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:35.040866" elapsed="0.004092"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.055392" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:35.055536" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:35.045093" elapsed="0.010472"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:35.055610" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:35.055760" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:35.040572" elapsed="0.015215"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:35.055830" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:35.055970" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:35.039169" elapsed="0.016829"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:35.056973" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-no-transaction-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-no-transaction-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:35.057101" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:35.056765" elapsed="0.000363"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:35.057173" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:35.057319" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:35.056462" elapsed="0.000884"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:35.057389" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:35.057550" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:35.056151" elapsed="0.001426"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:35.057918" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:35.057716" elapsed="0.000231"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:35.058309" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:35.058086" elapsed="0.000252"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:35.058492" elapsed="0.000443"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:35.058988" elapsed="0.000027"/>
</return>
<arg>commit-no-transaction</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:35.038893" elapsed="0.020214"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.060518" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:35.059837" elapsed="0.000708"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:35.060761" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:35.060619" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.060601" elapsed="0.000241"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.060991" elapsed="0.000021"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.061150" elapsed="0.000019"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.061313" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.061487" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.061639" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.061794" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.061939" elapsed="0.000019"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.062201" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.062056" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:35:35.062038" elapsed="0.000237"/>
</if>
<arg>4455</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:35.059501" elapsed="0.002823"/>
</kw>
<doc>Attempt to perform "commit" when there are no changes in the candidate configuration and check that it returns OK status.</doc>
<status status="PASS" start="2026-04-05T00:35:34.948356" elapsed="0.114015"/>
</test>
<test id="s1-s3-s1-t19" name="Edit_Config_Second_Batch_Merge" line="144">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:35.065359" elapsed="0.000225"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:35.065113" elapsed="0.000525"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.066588" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.066479" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.066460" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.071086" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.070980" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.070962" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.072126" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:35.071742" elapsed="0.000436"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.072640" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:35.072327" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:35.072710" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:35.072862" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:35.071366" elapsed="0.001520"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.078169" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.078064" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.078046" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.079394" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.079291" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.079273" elapsed="0.000210"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:35.079971" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:35.079612" elapsed="0.000385"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.080404" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:35.080139" elapsed="0.000308"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.120170" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:35.080962" elapsed="0.039498"/>
</kw>
<msg time="2026-04-05T00:35:35.120688" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:35.120735" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.080592" elapsed="0.040181"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.146620" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "S "e "c "o "n "d "_ "B "a "t "c "h "_ "M "e "r "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:35.121496" elapsed="0.025325"/>
</kw>
<msg time="2026-04-05T00:35:35.146997" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:35.147042" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "S "e "c "o "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.120997" elapsed="0.026083"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.147551" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.147267" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.147235" elapsed="0.000424"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.148192" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "S "e "c "o "n "d "_ "B "a "t "c "h "_ "M "e "r "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:35.147794" elapsed="0.000495"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.148582" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.148361" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.148339" elapsed="0.000344"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:35.148721" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:35.151749" elapsed="0.000154"/>
</kw>
<msg time="2026-04-05T00:35:35.151975" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:35.151013" elapsed="0.001066"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.152919" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.153750" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:35.149646" elapsed="0.004221"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:35.149024" elapsed="0.004961"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:35.078995" elapsed="0.075092"/>
</kw>
<msg time="2026-04-05T00:35:35.154183" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:35.154226" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "S "e "c "o "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.078373" elapsed="0.075891"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:35.154465" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:35.154342" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.154323" elapsed="0.000224"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.154942" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.155268" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.155339" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:35.077732" elapsed="0.077746"/>
</kw>
<msg time="2026-04-05T00:35:35.155578" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:35.155621" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "S "e "c "o "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.073351" elapsed="0.082309"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.155976" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.155740" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.155721" elapsed="0.000332"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:35.073110" elapsed="0.082966"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:35.072939" elapsed="0.083170"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:35.070623" elapsed="0.085545"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:35.066179" elapsed="0.090047"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.065772" elapsed="0.090533"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:35.063080" elapsed="0.093329"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:35.158041" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-2-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-2-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:35.158264" level="INFO">${data} = &lt;rpc message-id="20" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:opendaylight:...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:35.157598" elapsed="0.000697"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:35.158342" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:35.158509" level="INFO">${request} = &lt;rpc message-id="20" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:opendaylight:...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:35.157205" elapsed="0.001332"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.161207" level="INFO">&lt;rpc message-id="20" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:35.159264" elapsed="0.001999"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.161768" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:35.161404" elapsed="0.000414"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.170134" level="INFO">&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;OLD001&lt;/id&gt;
    &lt;model&gt;Skoda MB&lt;/model&gt;
    &lt;manufacturer&gt;Skoda Mlada Boleslav&lt;/manufacturer&gt;
    &lt;category&gt;sedan&lt;/category&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;
&lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
  &lt;person&gt;
    &lt;id&gt;CUST002&lt;/id&gt;
    &lt;gender&gt;male&lt;/gender&gt;
    &lt;age&gt;28&lt;/age&gt;
  &lt;/person&gt;
&lt;/people&gt;
&lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
  &lt;car-person&gt;
    &lt;car-id&gt;OLD001&lt;/car-id&gt;
    &lt;person-id&gt;CUST002&lt;/person-id&gt;
  &lt;/car-person&gt;
&lt;/car-people&gt;
&lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:35.161956" elapsed="0.008250"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:35.158974" elapsed="0.011291"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.172240" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="20"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:35.172361" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="20"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:35.170402" elapsed="0.001987"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:35.172453" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:35:35.172606" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="20"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:35.158683" elapsed="0.013951"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:35.172677" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:35.172820" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="20"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:35.156916" elapsed="0.015931"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:35.173815" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-2-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-2-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:35.173958" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="20"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:35.173606" elapsed="0.000379"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:35.174030" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:35.174177" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="20"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:35.173286" elapsed="0.000917"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:35.174246" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:35.174390" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="20"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:35.172987" elapsed="0.001430"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:35.174823" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="20"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:35.174619" elapsed="0.000233"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:35.175219" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="20"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:35.174994" elapsed="0.000253"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:35.175390" elapsed="0.000454"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:35.175897" elapsed="0.000028"/>
</return>
<arg>merge-2</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:35.156634" elapsed="0.019385"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.177232" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.176860" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.176840" elapsed="0.000480"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:35.177468" elapsed="0.000313"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.182760" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:35.182334" elapsed="0.000453"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:35.183000" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:35.182861" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.182843" elapsed="0.000236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.183213" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.183371" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.183545" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.183695" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.183845" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.183993" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.184141" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:35.182042" elapsed="0.002174"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:35.176646" elapsed="0.007620"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:35.176269" elapsed="0.008054"/>
</kw>
<doc>Create an element to be discarded and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:35.062588" elapsed="0.121777"/>
</test>
<test id="s1-s3-s1-t20" name="Get_And_Check_Config_Candidate_For_Discard" line="148">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:35.187475" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:35.187219" elapsed="0.000520"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.188724" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.188616" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.188598" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.193176" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.193071" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.193053" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.194271" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:35.193892" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.194755" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:35.194457" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:35.194826" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:35.194979" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:35.193532" elapsed="0.001472"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.200191" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.200084" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.200065" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.201483" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.201350" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.201332" elapsed="0.000219"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:35.202051" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:35.201684" elapsed="0.000395"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.202495" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:35.202225" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.237380" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:35.203044" elapsed="0.034534"/>
</kw>
<msg time="2026-04-05T00:35:35.237747" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:35.237794" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.202667" elapsed="0.035164"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.265232" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "A "n "d "_ "C "h "e "c "k "_ "C "o "n "f "i "g "_ "C "a "n "d "i "d "a "t "e "_ "F "o "r "_ "D "i "s "c "a "r "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:35.238365" elapsed="0.027047"/>
</kw>
<msg time="2026-04-05T00:35:35.265746" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:35.265790" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "A "n "d "_ "C "h "e "c "k "_ "C "o "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.237988" elapsed="0.027840"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.266114" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.265906" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.265885" elapsed="0.000329"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.266735" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "A "n "d "_ "C "h "e "c "k "_ "C "o "n "f "i "g "_ "C "a "n "d "i "d "a "t "e "_ "F "o "r "_ "D "i "s "c "a "r "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:35.266344" elapsed="0.000464"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.267073" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.266875" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.266857" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:35.267206" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:35.270144" elapsed="0.000146"/>
</kw>
<msg time="2026-04-05T00:35:35.270360" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:35.269483" elapsed="0.001002"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.271309" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.272140" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:35.268053" elapsed="0.004203"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:35.267477" elapsed="0.004894"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:35.201053" elapsed="0.071446"/>
</kw>
<msg time="2026-04-05T00:35:35.272593" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:35.272638" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "A "n "d "_ "C "h "e "c "k "_ "C "o "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.200416" elapsed="0.072260"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:35.272860" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:35.272754" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.272735" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.273328" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.273675" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.273749" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:35.199750" elapsed="0.074107"/>
</kw>
<msg time="2026-04-05T00:35:35.273952" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:35.273997" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "A "n "d "_ "C "h "e "c "k "_ "C "o "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.195362" elapsed="0.078672"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.274344" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.274109" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.274092" elapsed="0.000431"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:35.195232" elapsed="0.079319"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:35.195060" elapsed="0.079522"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:35.192718" elapsed="0.081920"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:35.188278" elapsed="0.086416"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.187873" elapsed="0.086867"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:35.185274" elapsed="0.089519"/>
</kw>
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:35.275755" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-candidate-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-candidate-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:35.275975" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="21"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;candidate/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:35.275538" elapsed="0.000467"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:35.276052" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:35.276198" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="21"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;candidate/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:35.275217" elapsed="0.001009"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.279109" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="21"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:35.277222" elapsed="0.001944"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.279701" level="INFO">&lt;get-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:35.279308" elapsed="0.000444"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.281310" level="INFO">&lt;source&gt;
            &lt;candidate/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:35.279888" elapsed="0.001479"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:35.276926" elapsed="0.004515"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.723719" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="21"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
            &lt;person&gt;
                &lt;id&gt;CUST002&lt;/id&gt;
                &lt;gender&gt;male&lt;/gender&gt;
                &lt;age&gt;28&lt;/age&gt;
            &lt;/person&gt;
        &lt;/people&gt;
        &lt;network-instances xmlns="http://openconfig.net/yang/network-instance"&gt;
            &lt;network-instance&gt;
                &lt;name&gt;global-bgp&lt;/name&gt;
                &lt;protocols/&gt;
            &lt;/network-instance&gt;
        &lt;/network-instances&gt;
        &lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;OLD001&lt;/car-id&gt;
                &lt;person-id&gt;CUST002&lt;/person-id&gt;
            &lt;/car-person&gt;
        &lt;/car-people&gt;
        &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;
                &lt;node&gt;
                    &lt;node-id&gt;43.43.43.43&lt;/node-id&gt;
                    &lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;password&gt;topsecret&lt;/password&gt;
                        &lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;
                    &lt;/session-config&gt;
                &lt;/node&gt;
                &lt;topology-types&gt;
                    &lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;
                        &lt;session-config&gt;
                            &lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;
                            &lt;listen-port&gt;4189&lt;/listen-port&gt;
                            &lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;
                            &lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;
                            &lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;
                        &lt;/session-config&gt;
                    &lt;/topology-pcep&gt;
                &lt;/topology-types&gt;
            &lt;/topology&gt;
        &lt;/network-topology&gt;
        &lt;key-stores xmlns="urn:opendaylight:yang:aaa:cert:mdsal"&gt;
            &lt;id&gt;KeyStores:1&lt;/id&gt;
            &lt;ssl-data&gt;
                &lt;bundle-name&gt;opendaylight&lt;/bundle-name&gt;
                &lt;tls-protocols/&gt;
                &lt;odl-keystore&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j7eR9+jY/ReL6ScBdTboi/ykrFmYXQQ7xFuusDY=&lt;/store-password&gt;
                    &lt;sign-alg&gt;SHA1WithRSAEncryption&lt;/sign-alg&gt;
                    &lt;validity&gt;365&lt;/validity&gt;
                    &lt;alias&gt;controller&lt;/alias&gt;
                    &lt;name&gt;ctl.jks&lt;/name&gt;
                    &lt;dname&gt;CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA&lt;/dname&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTGHQubhwHV9aYycwWBO28GdM+0EbfzFmaKhmDhRYeXS6rzNXHoliYz24Nm9Rrgrt6HUbPrex4U1IKGVHfZ0Ok7NBGIva1O3gjWP564Pdsk02VALY+3x/pSHApp4XbOoK9VYCcR27ceSz8ZakXtNqIJSP+ns/tei6wcB1xSE+4cbVJyYGh1UDqWS1/VdQBlNy6nfXdApw0tanG7ZJFszyDip/doAf8261x3CC98HK81B7ThgpPdwkfKnvxYuSkF3b/1W4TMZRXQKoNXSvvbt7QShC9dyN22zdxIdTlv2E9FgZtMCzHJbnTYQbVnfqASfUj5iF5Ghkz+IM8Ctr6HcZo+25RTqGaKLuZdDKZsbvA3YcX7uBb/X1nA/l2LI0ZdEShpllIgbm3+J55OpqL0QTF2WZCJWu7Da/ancqEis6zpVPrbdOAE1k22Fr+Ctg0l0irt86r8kcXv1m/S5c5k9OItEy6ZsXWcPBbLtn9vnpWI2Dvf6pB53cBpe3xC6ucl3Y31l0zrhw8JROv6BOV1HsYa2L7AMj+iaHNbumqX3rTxLSXsEEPVFiw07o5dj4j2lmaBUCQCGfvTCMExpzSs5/HrTOQhLHQzIkzuu9OEYw9OJOM9PPormeqd4mDlQo3opDFfVwJzc0TICklSr+OcNsKHMoYGuMYgcDR+W3fF13PF/ADvelxR6Jyc9nossRkhn8boEwu2OUhnUrgkfj5dvcaIyEt3QXbN0bp7fLAjJL3bmmqJh3BA6hnVheoEvZU8igAkdqL2y4J9UlXx+JkqZVoJEWizc4jYLpurXL9S0WYbXa37xZBh21j77UbBUBT6fCKjFbnYCjJKOPIfraTehhVxFKiHwwaUk0rYaUMbQMAasY8Z9h921xnfci307Gz2WuvN2blL3RG0n2ylzVTO9W4KWZf8lN1jpLT416KmVoaY7ltl58IQJHIn8Xda2pYe9o9QcgzVBY0gk8IfXThTKl2yFNREbE41NvCmkKQ70wg1/0BOuKAvMkje+CuHggKZXw/h+uw5wS7PGLv+P5ttt2sLjnbxtnFPu1NSS89AJ7iu4djWlEyMTXRGG9N2k1CLygLBXe4SAImLTZdd7N527Q28A3HqMgJQY6Lttme9oIpm+DQl9aQIIJgDZb9vvh9f/w4bYvCRHiwBqWNv+u9+PX0+seqNR1kpGOk933QFd0DGlQhpDrcB3yfQ9amX0V2ThyS6hqtMqgJDsacXG0DsZvotEq/uQ0Y/y++7b8g/3qto/eQ8AtVYnMwDwZJxNfEPJaWlC75coGq26S82cZdXjs48kjW88bcyW4+vhsW6eV+vR4z8u7YgQDBpNqbp1R6LixkqEiMRzkK6tbzvhdOxKzMO5qwuG1j3a2S4AjNxnfph0KUM0o5X/jDpjA7NndqzsanXunCTbr1gC0NKgoSzIfb5FtAVlGocJ+YWMrQYAfZ5EQyPVHTI0oW5V2T4jV7dATMpSXFBJ9Rp7PH02d0rtETqUF0b6Yzd8j2eNG82MXrU9yeshDY6xAD2PK0IQ2iMIXVTvohvMwvXKq7AiGiBI7RGUb+yWlkaYNBbz4L78d98li8+AT1wyfjSS06oa+UeAqFY3ADccuHzX1ZyUzlghNQCEu3mrLW2cIaQFftP+h3QfT0nRI7X7/3qeBiMD7VjhZfSVJwrY6DIdtrax4cUmqVrY1qxnbtmygGasXfC1c7vN/mrMPw+GLHjEaC8hRSQFs3WCV6uGu+LJ9Du3STlQKWEM/BhBU2oSGqaJkeI85I3JypXY=&lt;/keystoreFile&gt;
                    &lt;key-alg&gt;RSA&lt;/key-alg&gt;
                    &lt;keysize&gt;1024&lt;/keysize&gt;
                &lt;/odl-keystore&gt;
                &lt;cipher-suites&gt;
                    &lt;suiteName/&gt;
                &lt;/cipher-suites&gt;
                &lt;trust-keystore&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTcoJvqo8Gw5sBv9S7MPdfC8Ey5w0ERj70l1baW6SoxGbO2hfKQ==&lt;/keystoreFile&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j6X21ePQ7B2NsEEpHtEh2FY13wcfZiComYctBEY=&lt;/store-password&gt;
                    &lt;name&gt;truststore.jks&lt;/name&gt;
                &lt;/trust-keystore&gt;
            &lt;/ssl-data&gt;
        &lt;/key-stores&gt;
        &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
            &lt;car-entry&gt;
                &lt;id&gt;OLD001&lt;/id&gt;
                &lt;model&gt;Skoda MB&lt;/model&gt;
                &lt;manufacturer&gt;Skoda Mlada Boleslav&lt;/manufacturer&gt;
                &lt;category&gt;sedan&lt;/category&gt;
            &lt;/car-entry&gt;
        &lt;/cars&gt;
        &lt;odl-bmp-monitors xmlns="urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"&gt;
            &lt;bmp-monitor-config&gt;
                &lt;monitor-id&gt;example-bmp-monitor&lt;/monitor-id&gt;
                &lt;server&gt;
                    &lt;binding-port&gt;12345&lt;/binding-port&gt;
                    &lt;binding-address&gt;0.0.0.0&lt;/binding-address&gt;
                &lt;/server&gt;
            &lt;/bmp-monitor-config&gt;
        &lt;/odl-bmp-monitors&gt;
        &lt;aaa-encrypt-service-config xmlns="config:aaa:authn:encrypt:service:config"&gt;
            &lt;encrypt-type&gt;AES&lt;/encrypt-type&gt;
            &lt;encrypt-key-length&gt;128&lt;/encrypt-key-length&gt;
            &lt;password-length&gt;12&lt;/password-length&gt;
            &lt;cipher-transforms&gt;AES/GCM/NoPadding&lt;/cipher-transforms&gt;
            &lt;encrypt-key&gt;DYmlnajBzTZj&lt;/encrypt-key&gt;
            &lt;encrypt-salt&gt;CwWGOgKD82i1gQRzdbP9jw==&lt;/encrypt-salt&gt;
            &lt;auth-tag-length&gt;128&lt;/auth-tag-length&gt;
            &lt;encrypt-method&gt;PBKDF2WithHmacSHA1&lt;/encrypt-method&gt;
            &lt;encrypt-iteration-count&gt;32768&lt;/encrypt-iteration-count&gt;
        &lt;/aaa-encrypt-service-config&gt;
        &lt;routing-policy xmlns="http://openconfig.net/yang/routing-policy"&gt;
            &lt;defined-sets&gt;
                &lt;bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                    &lt;role-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-internal&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ibgp&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;all&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ebgp&lt;/role-set-name&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;ibgp-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                    &lt;/role-sets&gt;
                    &lt;originator-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;originator-id-set&gt;
                            &lt;originator-id-set-name&gt;local-originator-id&lt;/originator-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/originator-id-set&gt;
                    &lt;/originator-id-sets&gt;
                    &lt;cluster-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;cluster-id-set&gt;
                            &lt;cluster-id-set-name&gt;local-cluster-id&lt;/cluster-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/cluster-id-set&gt;
                    &lt;/cluster-id-sets&gt;
                &lt;/bgp-defined-sets&gt;
            &lt;/defined-sets&gt;
            &lt;policy-definitions&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-export-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-odl-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="all"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-odl-internal-to-internal-or-rr-client&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-rr-client-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-not-in xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy" xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-not-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-next-hop&gt;SELF&lt;/set-next-hop&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;vpn-membership-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV6-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV4-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;vpn-non-member xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-import-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-non-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                            &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                    &lt;match-cluster-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;cluster-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/cluster-id-sets/cluster-id-set[cluster-set-name="local-cluster-id"]&lt;/cluster-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-cluster-id-set-condition&gt;
                                    &lt;match-originator-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;originator-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/originator-id-sets/originator-id-set[originator-set-name="local-originator-id"]&lt;/originator-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-originator-id-set-condition&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
            &lt;/policy-definitions&gt;
        &lt;/routing-policy&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-default-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6653&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-legacy-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6633&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:35.724258" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="21"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:35.281581" elapsed="0.442709"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:35.724359" elapsed="0.000106"/>
</return>
<msg time="2026-04-05T00:35:35.724618" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="21"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:35.276368" elapsed="0.448280"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:35.724694" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:35.724843" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="21"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>get-config-candidate</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:35.274946" elapsed="0.449925"/>
</kw>
<kw name="Check_First_Batch_Data_Not_Present">
<kw name="Check_First_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:35.726215" elapsed="0.000341"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:35.725739" elapsed="0.000873"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:35.727166" elapsed="0.000305"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:35.726753" elapsed="0.000772"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:35.728084" elapsed="0.000284"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:35.727666" elapsed="0.000770"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:35.728986" elapsed="0.000317"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:35.728579" elapsed="0.000778"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_Not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:35.725380" elapsed="0.004032"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:35.725036" elapsed="0.004456"/>
</kw>
<kw name="Check_Second_Batch_Data_Present">
<kw name="Check_Second_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;OLD001&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:35.730649" elapsed="0.000284"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;OLD001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:35.730216" elapsed="0.000771"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST002&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:35.731551" elapsed="0.000278"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST002&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:35.731126" elapsed="0.000756"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;OLD001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:35.732441" elapsed="0.000281"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;OLD001&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:35.732019" elapsed="0.000756"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST002&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:35.733334" elapsed="0.000296"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST002&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:35.732911" elapsed="0.000775"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:35.729902" elapsed="0.003839"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:35.729608" elapsed="0.004182"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.735020" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.734631" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.734611" elapsed="0.000496"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:35.735239" elapsed="0.000324"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.740382" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:35.739975" elapsed="0.000485"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:35.740686" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:35:35.740538" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.740519" elapsed="0.000249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.740903" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.741061" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.741233" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.741392" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.741562" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.741715" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.741864" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:35.739684" elapsed="0.002255"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:35.734399" elapsed="0.007589"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:35.734039" elapsed="0.007990"/>
</kw>
<doc>Check that the element to be discarded is present in the candidate configuration.</doc>
<status status="PASS" start="2026-04-05T00:35:35.184691" elapsed="0.557377"/>
</test>
<test id="s1-s3-s1-t21" name="Discard_Changes_Using_Discard_Request" line="154">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:35.745125" elapsed="0.000233"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:35.744880" elapsed="0.000531"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.746362" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.746255" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.746236" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.750835" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.750729" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.750711" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.751867" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:35.751487" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.752337" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:35.752041" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:35.752409" elapsed="0.000043"/>
</return>
<msg time="2026-04-05T00:35:35.752579" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:35.751114" elapsed="0.001490"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.757819" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.757711" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.757691" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.759090" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.758985" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.758967" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:35.759678" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:35.759289" elapsed="0.000415"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.760099" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:35.759850" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.799080" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:35.760718" elapsed="0.038540"/>
</kw>
<msg time="2026-04-05T00:35:35.799447" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:35.799495" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.760319" elapsed="0.039213"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.827129" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "i "s "c "a "r "d "_ "C "h "a "n "g "e "s "_ "U "s "i "n "g "_ "D "i "s "c "a "r "d "_ "R "e "q "u "e "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:35.800070" elapsed="0.027246"/>
</kw>
<msg time="2026-04-05T00:35:35.827508" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:35.827555" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "i "s "c "a "r "d "_ "C "h "a "n "g "e "s "_ "U ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.799691" elapsed="0.027900"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.827893" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.827674" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.827651" elapsed="0.000344"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.828537" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "i "s "c "a "r "d "_ "C "h "a "n "g "e "s "_ "U "s "i "n "g "_ "D "i "s "c "a "r "d "_ "R "e "q "u "e "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:35.828126" elapsed="0.000482"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.828879" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.828679" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.828660" elapsed="0.000319"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:35.829012" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:35.832297" elapsed="0.000208"/>
</kw>
<msg time="2026-04-05T00:35:35.832590" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:35.831521" elapsed="0.001182"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.833831" elapsed="0.000043"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.834766" elapsed="0.000040"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:35.829899" elapsed="0.005002"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:35.829294" elapsed="0.005737"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:35.758686" elapsed="0.076456"/>
</kw>
<msg time="2026-04-05T00:35:35.835250" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:35.835299" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "i "s "c "a "r "d "_ "C "h "a "n "g "e "s "_ "U ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.758024" elapsed="0.077317"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:35.835581" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-05T00:35:35.835446" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.835407" elapsed="0.000268"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.836135" elapsed="0.000029"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.836556" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.836638" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:35.757351" elapsed="0.079474"/>
</kw>
<msg time="2026-04-05T00:35:35.836938" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:35.836986" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "i "s "c "a "r "d "_ "C "h "a "n "g "e "s "_ "U ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.752962" elapsed="0.084066"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.837580" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.837128" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.837108" elapsed="0.000563"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:35.752834" elapsed="0.084864"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:35.752660" elapsed="0.085074"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:35.750352" elapsed="0.087447"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:35.745969" elapsed="0.091894"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.745562" elapsed="0.092357"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:35.742936" elapsed="0.095046"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:35.839598" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-discard-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-discard-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:35.839786" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="22"&gt;
    &lt;discard-changes/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:35.839354" elapsed="0.000460"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:35.839860" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:35.840007" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="22"&gt;
    &lt;discard-changes/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:35.838829" elapsed="0.001205"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.842669" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="22"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:35.840796" elapsed="0.001931"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.843276" level="INFO">&lt;discard-changes/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:35.842868" elapsed="0.000458"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.843936" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:35.843500" elapsed="0.000489"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:35.840498" elapsed="0.003547"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.852719" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="22"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:35.852811" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="22"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:35.844181" elapsed="0.008657"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:35.852884" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:35.853034" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="22"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:35.840180" elapsed="0.012882"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:35.853105" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:35.853247" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="22"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:35.838517" elapsed="0.014757"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:35.854259" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-discard-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-discard-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:35.854386" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="22"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:35.854051" elapsed="0.000361"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:35.854505" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:35.854661" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="22"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:35.853748" elapsed="0.000941"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:35.854732" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:35.854876" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="22"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:35.853456" elapsed="0.001446"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:35.855244" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="22"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:35.855043" elapsed="0.000229"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:35.855655" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="22"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:35.855415" elapsed="0.000273"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:35.855832" elapsed="0.000432"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:35.856317" elapsed="0.000027"/>
</return>
<arg>commit-discard</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:35.838191" elapsed="0.018262"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.857663" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.857252" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.857233" elapsed="0.000517"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:35.857882" elapsed="0.000308"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.862944" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:35.862535" elapsed="0.000437"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:35.863191" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:35.863048" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.863029" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.863404" elapsed="0.000036"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.863578" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.863742" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.863894" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.864046" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.864199" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.864350" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:35.862229" elapsed="0.002215"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:35.857043" elapsed="0.007454"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:35.856704" elapsed="0.007835"/>
</kw>
<doc>Ask the server to discard the candidate and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:35.742381" elapsed="0.122198"/>
</test>
<test id="s1-s3-s1-t22" name="Get_And_Check_Config_Candidate_To_Confirm_Discard" line="158">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:35.867629" elapsed="0.000247"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:35.867369" elapsed="0.000561"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.868889" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.868782" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.868763" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.873397" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.873264" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.873246" elapsed="0.000234"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.874476" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:35.874082" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.874943" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:35.874649" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:35.875014" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:35.875168" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:35.873711" elapsed="0.001481"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.881705" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.881597" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.881578" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.882962" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:35.882857" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.882839" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:35.883536" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:35.883160" elapsed="0.000403"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.883953" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:35.883707" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.923745" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:35.884507" elapsed="0.039484"/>
</kw>
<msg time="2026-04-05T00:35:35.924251" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:35.924320" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.884122" elapsed="0.040253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:35.952222" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "A "n "d "_ "C "h "e "c "k "_ "C "o "n "f "i "g "_ "C "a "n "d "i "d "a "t "e "_ "T "o "_ "C "o "n "f "i "r "m "_ "D "i "s "c "a "r "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:35.925213" elapsed="0.027195"/>
</kw>
<msg time="2026-04-05T00:35:35.952592" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:35.952638" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "A "n "d "_ "C "h "e "c "k "_ "C "o "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.924643" elapsed="0.028031"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.952976" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.952751" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.952731" elapsed="0.000348"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:35.953624" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "A "n "d "_ "C "h "e "c "k "_ "C "o "n "f "i "g "_ "C "a "n "d "i "d "a "t "e "_ "T "o "_ "C "o "n "f "i "r "m "_ "D "i "s "c "a "r "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:35.953206" elapsed="0.000501"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.953976" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.953774" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.953756" elapsed="0.000367"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:35.954156" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:35.956946" elapsed="0.000145"/>
</kw>
<msg time="2026-04-05T00:35:35.957161" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:35.956337" elapsed="0.000921"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.958090" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.958921" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:35.954993" elapsed="0.004041"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:35.954405" elapsed="0.004744"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:35.882552" elapsed="0.076694"/>
</kw>
<msg time="2026-04-05T00:35:35.959337" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:35.959380" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "A "n "d "_ "C "h "e "c "k "_ "C "o "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.881909" elapsed="0.077507"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:35.959618" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-04-05T00:35:35.959511" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.959492" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.960072" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.960391" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:35.960478" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:35.881221" elapsed="0.079364"/>
</kw>
<msg time="2026-04-05T00:35:35.960694" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:35.960747" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "G "e "t "_ "A "n "d "_ "C "h "e "c "k "_ "C "o "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.875560" elapsed="0.085232"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:35.961106" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:35.960873" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:35.960856" elapsed="0.000326"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:35.875415" elapsed="0.085790"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:35.875246" elapsed="0.085987"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:35.872906" elapsed="0.088379"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:35.868495" elapsed="0.092844"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:35.868068" elapsed="0.093313"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:35.865452" elapsed="0.096018"/>
</kw>
<kw name="Check_Test_Objects_Not_Present_In_Config">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:35.996573" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-candidate-discard-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/get-config-candidate-discard-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:35.996818" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;candidate/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:35.962577" elapsed="0.034271"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:35.996917" elapsed="0.000046"/>
</return>
<msg time="2026-04-05T00:35:35.997146" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;candidate/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:35.962236" elapsed="0.034939"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.000072" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:35.998077" elapsed="0.002054"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.000654" level="INFO">&lt;get-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:36.000274" elapsed="0.000431"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.001975" level="INFO">&lt;source&gt;
            &lt;candidate/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:36.000842" elapsed="0.001187"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:35.997753" elapsed="0.004332"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.425821" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfig.net/yang/network-instance"&gt;
            &lt;network-instance&gt;
                &lt;name&gt;global-bgp&lt;/name&gt;
                &lt;protocols/&gt;
            &lt;/network-instance&gt;
        &lt;/network-instances&gt;
        &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;
                &lt;node&gt;
                    &lt;node-id&gt;43.43.43.43&lt;/node-id&gt;
                    &lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;password&gt;topsecret&lt;/password&gt;
                        &lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;
                    &lt;/session-config&gt;
                &lt;/node&gt;
                &lt;topology-types&gt;
                    &lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;
                        &lt;session-config&gt;
                            &lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;
                            &lt;listen-port&gt;4189&lt;/listen-port&gt;
                            &lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;
                            &lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;
                            &lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;
                        &lt;/session-config&gt;
                    &lt;/topology-pcep&gt;
                &lt;/topology-types&gt;
            &lt;/topology&gt;
        &lt;/network-topology&gt;
        &lt;key-stores xmlns="urn:opendaylight:yang:aaa:cert:mdsal"&gt;
            &lt;id&gt;KeyStores:1&lt;/id&gt;
            &lt;ssl-data&gt;
                &lt;bundle-name&gt;opendaylight&lt;/bundle-name&gt;
                &lt;tls-protocols/&gt;
                &lt;odl-keystore&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j7eR9+jY/ReL6ScBdTboi/ykrFmYXQQ7xFuusDY=&lt;/store-password&gt;
                    &lt;sign-alg&gt;SHA1WithRSAEncryption&lt;/sign-alg&gt;
                    &lt;validity&gt;365&lt;/validity&gt;
                    &lt;alias&gt;controller&lt;/alias&gt;
                    &lt;name&gt;ctl.jks&lt;/name&gt;
                    &lt;dname&gt;CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA&lt;/dname&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTGHQubhwHV9aYycwWBO28GdM+0EbfzFmaKhmDhRYeXS6rzNXHoliYz24Nm9Rrgrt6HUbPrex4U1IKGVHfZ0Ok7NBGIva1O3gjWP564Pdsk02VALY+3x/pSHApp4XbOoK9VYCcR27ceSz8ZakXtNqIJSP+ns/tei6wcB1xSE+4cbVJyYGh1UDqWS1/VdQBlNy6nfXdApw0tanG7ZJFszyDip/doAf8261x3CC98HK81B7ThgpPdwkfKnvxYuSkF3b/1W4TMZRXQKoNXSvvbt7QShC9dyN22zdxIdTlv2E9FgZtMCzHJbnTYQbVnfqASfUj5iF5Ghkz+IM8Ctr6HcZo+25RTqGaKLuZdDKZsbvA3YcX7uBb/X1nA/l2LI0ZdEShpllIgbm3+J55OpqL0QTF2WZCJWu7Da/ancqEis6zpVPrbdOAE1k22Fr+Ctg0l0irt86r8kcXv1m/S5c5k9OItEy6ZsXWcPBbLtn9vnpWI2Dvf6pB53cBpe3xC6ucl3Y31l0zrhw8JROv6BOV1HsYa2L7AMj+iaHNbumqX3rTxLSXsEEPVFiw07o5dj4j2lmaBUCQCGfvTCMExpzSs5/HrTOQhLHQzIkzuu9OEYw9OJOM9PPormeqd4mDlQo3opDFfVwJzc0TICklSr+OcNsKHMoYGuMYgcDR+W3fF13PF/ADvelxR6Jyc9nossRkhn8boEwu2OUhnUrgkfj5dvcaIyEt3QXbN0bp7fLAjJL3bmmqJh3BA6hnVheoEvZU8igAkdqL2y4J9UlXx+JkqZVoJEWizc4jYLpurXL9S0WYbXa37xZBh21j77UbBUBT6fCKjFbnYCjJKOPIfraTehhVxFKiHwwaUk0rYaUMbQMAasY8Z9h921xnfci307Gz2WuvN2blL3RG0n2ylzVTO9W4KWZf8lN1jpLT416KmVoaY7ltl58IQJHIn8Xda2pYe9o9QcgzVBY0gk8IfXThTKl2yFNREbE41NvCmkKQ70wg1/0BOuKAvMkje+CuHggKZXw/h+uw5wS7PGLv+P5ttt2sLjnbxtnFPu1NSS89AJ7iu4djWlEyMTXRGG9N2k1CLygLBXe4SAImLTZdd7N527Q28A3HqMgJQY6Lttme9oIpm+DQl9aQIIJgDZb9vvh9f/w4bYvCRHiwBqWNv+u9+PX0+seqNR1kpGOk933QFd0DGlQhpDrcB3yfQ9amX0V2ThyS6hqtMqgJDsacXG0DsZvotEq/uQ0Y/y++7b8g/3qto/eQ8AtVYnMwDwZJxNfEPJaWlC75coGq26S82cZdXjs48kjW88bcyW4+vhsW6eV+vR4z8u7YgQDBpNqbp1R6LixkqEiMRzkK6tbzvhdOxKzMO5qwuG1j3a2S4AjNxnfph0KUM0o5X/jDpjA7NndqzsanXunCTbr1gC0NKgoSzIfb5FtAVlGocJ+YWMrQYAfZ5EQyPVHTI0oW5V2T4jV7dATMpSXFBJ9Rp7PH02d0rtETqUF0b6Yzd8j2eNG82MXrU9yeshDY6xAD2PK0IQ2iMIXVTvohvMwvXKq7AiGiBI7RGUb+yWlkaYNBbz4L78d98li8+AT1wyfjSS06oa+UeAqFY3ADccuHzX1ZyUzlghNQCEu3mrLW2cIaQFftP+h3QfT0nRI7X7/3qeBiMD7VjhZfSVJwrY6DIdtrax4cUmqVrY1qxnbtmygGasXfC1c7vN/mrMPw+GLHjEaC8hRSQFs3WCV6uGu+LJ9Du3STlQKWEM/BhBU2oSGqaJkeI85I3JypXY=&lt;/keystoreFile&gt;
                    &lt;key-alg&gt;RSA&lt;/key-alg&gt;
                    &lt;keysize&gt;1024&lt;/keysize&gt;
                &lt;/odl-keystore&gt;
                &lt;cipher-suites&gt;
                    &lt;suiteName/&gt;
                &lt;/cipher-suites&gt;
                &lt;trust-keystore&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTcoJvqo8Gw5sBv9S7MPdfC8Ey5w0ERj70l1baW6SoxGbO2hfKQ==&lt;/keystoreFile&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j6X21ePQ7B2NsEEpHtEh2FY13wcfZiComYctBEY=&lt;/store-password&gt;
                    &lt;name&gt;truststore.jks&lt;/name&gt;
                &lt;/trust-keystore&gt;
            &lt;/ssl-data&gt;
        &lt;/key-stores&gt;
        &lt;odl-bmp-monitors xmlns="urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"&gt;
            &lt;bmp-monitor-config&gt;
                &lt;monitor-id&gt;example-bmp-monitor&lt;/monitor-id&gt;
                &lt;server&gt;
                    &lt;binding-port&gt;12345&lt;/binding-port&gt;
                    &lt;binding-address&gt;0.0.0.0&lt;/binding-address&gt;
                &lt;/server&gt;
            &lt;/bmp-monitor-config&gt;
        &lt;/odl-bmp-monitors&gt;
        &lt;aaa-encrypt-service-config xmlns="config:aaa:authn:encrypt:service:config"&gt;
            &lt;encrypt-type&gt;AES&lt;/encrypt-type&gt;
            &lt;encrypt-key-length&gt;128&lt;/encrypt-key-length&gt;
            &lt;password-length&gt;12&lt;/password-length&gt;
            &lt;cipher-transforms&gt;AES/GCM/NoPadding&lt;/cipher-transforms&gt;
            &lt;encrypt-key&gt;DYmlnajBzTZj&lt;/encrypt-key&gt;
            &lt;encrypt-salt&gt;CwWGOgKD82i1gQRzdbP9jw==&lt;/encrypt-salt&gt;
            &lt;auth-tag-length&gt;128&lt;/auth-tag-length&gt;
            &lt;encrypt-method&gt;PBKDF2WithHmacSHA1&lt;/encrypt-method&gt;
            &lt;encrypt-iteration-count&gt;32768&lt;/encrypt-iteration-count&gt;
        &lt;/aaa-encrypt-service-config&gt;
        &lt;routing-policy xmlns="http://openconfig.net/yang/routing-policy"&gt;
            &lt;defined-sets&gt;
                &lt;bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                    &lt;role-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-internal&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ibgp&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;all&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ebgp&lt;/role-set-name&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;ibgp-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                    &lt;/role-sets&gt;
                    &lt;originator-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;originator-id-set&gt;
                            &lt;originator-id-set-name&gt;local-originator-id&lt;/originator-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/originator-id-set&gt;
                    &lt;/originator-id-sets&gt;
                    &lt;cluster-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;cluster-id-set&gt;
                            &lt;cluster-id-set-name&gt;local-cluster-id&lt;/cluster-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/cluster-id-set&gt;
                    &lt;/cluster-id-sets&gt;
                &lt;/bgp-defined-sets&gt;
            &lt;/defined-sets&gt;
            &lt;policy-definitions&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-export-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-odl-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="all"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-odl-internal-to-internal-or-rr-client&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-rr-client-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-not-in xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy" xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-not-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-next-hop&gt;SELF&lt;/set-next-hop&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;vpn-membership-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV6-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV4-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;vpn-non-member xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-import-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-non-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                            &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                    &lt;match-cluster-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;cluster-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/cluster-id-sets/cluster-id-set[cluster-set-name="local-cluster-id"]&lt;/cluster-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-cluster-id-set-condition&gt;
                                    &lt;match-originator-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;originator-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/originator-id-sets/originator-id-set[originator-set-name="local-originator-id"]&lt;/originator-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-originator-id-set-condition&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
            &lt;/policy-definitions&gt;
        &lt;/routing-policy&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-default-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6653&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-legacy-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6633&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:36.426521" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfi...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:36.002221" elapsed="0.424335"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.426638" elapsed="0.000056"/>
</return>
<msg time="2026-04-05T00:35:36.426850" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfi...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:35.997366" elapsed="0.429514"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.426929" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:36.427078" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="empty"&gt;
    &lt;data&gt;
        &lt;network-instances xmlns="http://openconfi...</msg>
<var>${reply}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:35.961897" elapsed="0.465210"/>
</kw>
<kw name="Check_Test_Objects_Absent">
<kw name="Check_First_Batch_Data_Not_Present">
<kw name="Check_First_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.428817" elapsed="0.000321"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.428311" elapsed="0.000885"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.429775" elapsed="0.000292"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.429338" elapsed="0.000850"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.430770" elapsed="0.000287"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.430333" elapsed="0.000779"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.431681" elapsed="0.000292"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.431253" elapsed="0.000774"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_Not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:36.427966" elapsed="0.004119"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:36.427665" elapsed="0.004469"/>
</kw>
<kw name="Check_Second_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;OLD001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.433030" elapsed="0.000289"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;OLD001&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.432609" elapsed="0.000765"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST002&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.433947" elapsed="0.000301"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST002&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.433531" elapsed="0.000772"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;OLD001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.434876" elapsed="0.000454"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;OLD001&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.434458" elapsed="0.000928"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST002&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.435966" elapsed="0.000290"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST002&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.435543" elapsed="0.000769"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:36.432266" elapsed="0.004103"/>
</kw>
<kw name="Check_Multiple_Batch_Data_Absent">
<kw name="Check_Multiple_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.437609" elapsed="0.000289"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.437173" elapsed="0.000782"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.438551" elapsed="0.000289"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.438094" elapsed="0.000800"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.439456" elapsed="0.000285"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.439033" elapsed="0.000761"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.440385" elapsed="0.000303"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.439973" elapsed="0.000770"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CARYOUNG&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.441295" elapsed="0.000302"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CARYOUNG&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.440883" elapsed="0.000768"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTYOUNG&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.442216" elapsed="0.000299"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTYOUNG&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.441791" elapsed="0.000778"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARYOUNG&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.443117" elapsed="0.000283"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARYOUNG&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.442708" elapsed="0.000762"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.444023" elapsed="0.000282"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.443609" elapsed="0.000751"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CARMID&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.444926" elapsed="0.000305"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CARMID&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.444514" elapsed="0.000772"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTMID&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.445871" elapsed="0.000325"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTMID&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.445454" elapsed="0.000797"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARMID&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.446824" elapsed="0.000284"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARMID&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.446392" elapsed="0.000770"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTMID&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.447727" elapsed="0.000285"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTMID&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.447301" elapsed="0.000764"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD2&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.448628" elapsed="0.000288"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD2&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.448205" elapsed="0.000764"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD2&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.449533" elapsed="0.000309"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD2&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.449108" elapsed="0.000787"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD2&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.450602" elapsed="0.000286"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD2&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.450046" elapsed="0.000897"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.451520" elapsed="0.000285"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.451081" elapsed="0.000777"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:36.436857" elapsed="0.015059"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:36.436503" elapsed="0.015463"/>
</kw>
<kw name="Check_Auxiliary_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTBAD&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.452845" elapsed="0.000286"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTBAD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.452414" elapsed="0.000772"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.453753" elapsed="0.000290"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:36.453325" elapsed="0.000809"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_not_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:36.452094" elapsed="0.002125"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.454351" elapsed="0.000310"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:36.427314" elapsed="0.027408"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;REPLACE&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:36.454851" elapsed="0.000290"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.455190" elapsed="0.000029"/>
</return>
<arg>get-config-candidate-discard</arg>
<doc>Use dataset with the specified name to get the configuration and check that none of our test objects are there.</doc>
<status status="PASS" start="2026-04-05T00:35:35.961625" elapsed="0.493687"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.456729" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.456168" elapsed="0.000623"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.456147" elapsed="0.000674"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:36.456954" elapsed="0.000311"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.461877" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:36.461465" elapsed="0.000439"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:36.462121" elapsed="0.000049"/>
</return>
<status status="PASS" start="2026-04-05T00:35:36.461979" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.461961" elapsed="0.000266"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.462364" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.462539" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.462698" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.462851" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.463003" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.463154" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.463306" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:36.461163" elapsed="0.002219"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:36.455953" elapsed="0.007495"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:36.455588" elapsed="0.007904"/>
</kw>
<doc>Check that the element was really discarded.</doc>
<status status="PASS" start="2026-04-05T00:35:35.864858" elapsed="0.598673"/>
</test>
<test id="s1-s3-s1-t23" name="Edit_Config_Multiple_Batch_Merge_Create" line="162">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:36.466482" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:36.466215" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.467700" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.467591" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.467572" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.472154" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.472048" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.472030" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.473193" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:36.472816" elapsed="0.000446"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.473730" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:36.473412" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:36.473802" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:36.473957" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:36.472451" elapsed="0.001532"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.479241" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.479132" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.479113" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.480528" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.480400" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.480383" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:36.481091" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:36.480725" elapsed="0.000392"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.481540" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:36.481262" elapsed="0.000304"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.531919" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:36.482089" elapsed="0.050003"/>
</kw>
<msg time="2026-04-05T00:35:36.532269" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:36.532314" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.481715" elapsed="0.050636"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.558857" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "M "e "r "g "e "_ "C "r "e "a "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:36.532929" elapsed="0.026107"/>
</kw>
<msg time="2026-04-05T00:35:36.559204" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:36.559248" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.532536" elapsed="0.026749"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.559606" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.559365" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.559342" elapsed="0.000363"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.560206" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "M "e "r "g "e "_ "C "r "e "a "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:36.559834" elapsed="0.000445"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.560562" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.560345" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.560327" elapsed="0.000333"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:36.560694" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:36.563627" elapsed="0.000151"/>
</kw>
<msg time="2026-04-05T00:35:36.563858" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:36.562903" elapsed="0.001067"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.564771" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.565637" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:36.561538" elapsed="0.004212"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:36.560952" elapsed="0.004911"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:36.480104" elapsed="0.085856"/>
</kw>
<msg time="2026-04-05T00:35:36.566051" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:36.566094" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.479461" elapsed="0.086672"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:36.566341" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:36.566209" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.566190" elapsed="0.000250"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.566826" elapsed="0.000029"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.567152" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.567223" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:36.478792" elapsed="0.088536"/>
</kw>
<msg time="2026-04-05T00:35:36.567435" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:36.567481" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.474361" elapsed="0.093156"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.567826" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.567593" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.567575" elapsed="0.000327"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:36.474227" elapsed="0.093698"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:36.474038" elapsed="0.093917"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:36.471694" elapsed="0.096315"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:36.467288" elapsed="0.100777"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.466880" elapsed="0.101229"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:36.464250" elapsed="0.103910"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:36.569656" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-create-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-create-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:36.569852" level="INFO">${data} = &lt;rpc message-id="115" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;create&lt;/default-operation&gt;
&lt;config&gt;
&lt;people xmlns="urn:opendayli...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:36.569432" elapsed="0.000449"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:36.569927" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:36.570074" level="INFO">${request} = &lt;rpc message-id="115" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;create&lt;/default-operation&gt;
&lt;config&gt;
&lt;people xmlns="urn:opendayli...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:36.568921" elapsed="0.001180"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.572930" level="INFO">&lt;rpc message-id="115" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:36.570855" elapsed="0.002130"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.573467" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:36.573123" elapsed="0.000395"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.580456" level="INFO">&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;create&lt;/default-operation&gt;
&lt;config&gt;
&lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
  &lt;person&gt;
    &lt;id&gt;CUSTOLD&lt;/id&gt;
    &lt;age&gt;99&lt;/age&gt;
  &lt;/person&gt;
&lt;/people&gt;
&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;CAROLD&lt;/id&gt;
    &lt;manufacturer&gt;Ford&lt;/manufacturer&gt;
    &lt;year&gt;1950&lt;/year&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;
&lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
  &lt;car-person&gt;
    &lt;car-id&gt;CAROLD&lt;/car-id&gt;
    &lt;person-id&gt;CUSTOLD&lt;/person-id&gt;
  &lt;/car-person&gt;
&lt;/car-people&gt;
&lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:36.573655" elapsed="0.006903"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:36.570564" elapsed="0.010050"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.582250" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="115"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:36.582361" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="115"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:36.580750" elapsed="0.001639"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.582447" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:36.582602" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="115"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:36.570241" elapsed="0.012392"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.582675" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:36.582813" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="115"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:36.568633" elapsed="0.014208"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:36.583786" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-create-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-create-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:36.583911" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="115"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:36.583579" elapsed="0.000358"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:36.583982" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:36.584126" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="115"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:36.583263" elapsed="0.000889"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.584194" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:36.584336" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="115"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:36.582976" elapsed="0.001386"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:36.584716" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="115"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:36.584517" elapsed="0.000227"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:36.585105" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="115"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:36.584885" elapsed="0.000249"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:36.585276" elapsed="0.000448"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:36.585777" elapsed="0.000028"/>
</return>
<arg>merge-multiple-create</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:36.568327" elapsed="0.017569"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.587076" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.586714" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.586695" elapsed="0.000469"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:36.587296" elapsed="0.000328"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.592474" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:36.592055" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:36.592718" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:36.592576" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.592558" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.592930" elapsed="0.000052"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.593124" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.593283" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.593449" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.593604" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.593754" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.593902" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:36.591766" elapsed="0.002211"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:36.586501" elapsed="0.007527"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:36.586136" elapsed="0.007932"/>
</kw>
<doc>Use a create request with the third batch to create the infrastructure.</doc>
<status status="PASS" start="2026-04-05T00:35:36.463736" elapsed="0.130370"/>
</test>
<test id="s1-s3-s1-t24" name="Edit_Config_Multiple_Batch_Merge_Third" line="166">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:36.597030" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:36.596787" elapsed="0.000501"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.598226" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.598119" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.598101" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.602760" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.602654" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.602636" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.603793" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:36.603396" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.604263" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:36.603966" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:36.604335" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:36.604505" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:36.603034" elapsed="0.001496"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.609922" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.609789" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.609764" elapsed="0.000246"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.611709" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.611591" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.611570" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:36.612368" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:36.611939" elapsed="0.000462"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.612967" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:36.612601" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.654071" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:36.613595" elapsed="0.040740"/>
</kw>
<msg time="2026-04-05T00:35:36.654764" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:36.654815" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.613167" elapsed="0.041687"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.681141" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "M "e "r "g "e "_ "T "h "i "r "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:36.655676" elapsed="0.025647"/>
</kw>
<msg time="2026-04-05T00:35:36.681513" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:36.681560" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.655104" elapsed="0.026493"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.681957" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.681704" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.681674" elapsed="0.000397"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.682667" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "M "e "r "g "e "_ "T "h "i "r "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:36.682210" elapsed="0.000533"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.683019" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.682813" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.682794" elapsed="0.000326"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:36.683159" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:36.686191" elapsed="0.000165"/>
</kw>
<msg time="2026-04-05T00:35:36.686487" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:36.685513" elapsed="0.001091"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.687399" elapsed="0.000066"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.688241" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:36.684119" elapsed="0.004237"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:36.683503" elapsed="0.004984"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:36.611223" elapsed="0.077364"/>
</kw>
<msg time="2026-04-05T00:35:36.688681" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:36.688725" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.610189" elapsed="0.078575"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:36.688950" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:36.688842" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.688823" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.689438" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.689764" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.689835" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:36.609342" elapsed="0.080601"/>
</kw>
<msg time="2026-04-05T00:35:36.690041" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:36.690086" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.604885" elapsed="0.085238"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.690535" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.690237" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.690219" elapsed="0.000397"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:36.604757" elapsed="0.085883"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:36.604583" elapsed="0.086090"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:36.602263" elapsed="0.088467"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:36.597840" elapsed="0.092948"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.597437" elapsed="0.093397"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:36.594843" elapsed="0.096043"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:36.692493" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-1-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-1-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:36.692656" level="INFO">${data} = &lt;rpc message-id="50" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:opendaylight:...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:36.692253" elapsed="0.000432"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:36.692733" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:36.692884" level="INFO">${request} = &lt;rpc message-id="50" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:opendaylight:...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:36.691744" elapsed="0.001168"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.695985" level="INFO">&lt;rpc message-id="50" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:36.693659" elapsed="0.002386"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.696538" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:36.696186" elapsed="0.000406"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.703867" level="INFO">&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;CARYOUNG&lt;/id&gt;
    &lt;model&gt;Toyota Prius&lt;/model&gt;
    &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
    &lt;year&gt;2016&lt;/year&gt;
    &lt;category&gt;sedan&lt;/category&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;
&lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
  &lt;person&gt;
    &lt;id&gt;CUSTYOUNG&lt;/id&gt;
    &lt;age&gt;27&lt;/age&gt;
  &lt;/person&gt;
&lt;/people&gt;
&lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
  &lt;car-person&gt;
    &lt;car-id&gt;CARYOUNG&lt;/car-id&gt;
    &lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;
  &lt;/car-person&gt;
&lt;/car-people&gt;
&lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:36.696734" elapsed="0.007204"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:36.693348" elapsed="0.010647"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.705611" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="50"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:36.705695" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="50"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:36.704135" elapsed="0.001588"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.705769" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:36.705919" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="50"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:36.693057" elapsed="0.012891"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.705992" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:35:36.706165" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="50"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:36.691342" elapsed="0.014853"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:36.707189" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-1-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-1-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:36.707346" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="50"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:36.706981" elapsed="0.000392"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:36.707433" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:35:36.707585" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="50"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:36.706677" elapsed="0.000935"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.707655" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:36.707797" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="50"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:36.706335" elapsed="0.001489"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:36.708167" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="50"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:36.707963" elapsed="0.000232"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:36.708579" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="50"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:36.708337" elapsed="0.000271"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:36.708755" elapsed="0.000435"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:36.709243" elapsed="0.000027"/>
</return>
<arg>merge-multiple-1</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:36.691063" elapsed="0.018301"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.710595" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.710181" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.710162" elapsed="0.000522"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:36.710821" elapsed="0.000315"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.716062" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:36.715647" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:36.716358" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:36.716205" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.716179" elapsed="0.000279"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.716595" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.716758" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.716915" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.717068" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.717219" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.717371" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.717538" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:36.715327" elapsed="0.002289"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:36.709973" elapsed="0.007693"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:36.709630" elapsed="0.008076"/>
</kw>
<doc>Use a create request with the third batch to create the infrastructure.</doc>
<status status="PASS" start="2026-04-05T00:35:36.594300" elapsed="0.123479"/>
</test>
<test id="s1-s3-s1-t25" name="Edit_Config_Multiple_Batch_Merge_Fourth" line="170">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:36.720717" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:36.720470" elapsed="0.000510"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.722109" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.722000" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.721981" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.726745" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.726635" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.726616" elapsed="0.000198"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.727860" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:36.727472" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.728350" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:36.728037" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:36.728439" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:35:36.728701" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:36.727031" elapsed="0.001697"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.733976" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.733865" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.733845" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.735275" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.735168" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.735150" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:36.735885" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:36.735505" elapsed="0.000407"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.736307" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:36.736060" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.765687" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:36.736923" elapsed="0.028927"/>
</kw>
<msg time="2026-04-05T00:35:36.766026" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:36.766074" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.736542" elapsed="0.029569"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.787759" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "M "e "r "g "e "_ "F "o "u "r "t "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:36.766697" elapsed="0.021243"/>
</kw>
<msg time="2026-04-05T00:35:36.788109" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:36.788154" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.766270" elapsed="0.021920"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.788520" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.788267" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.788247" elapsed="0.000383"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.789146" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "M "e "r "g "e "_ "F "o "u "r "t "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:36.788771" elapsed="0.000487"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.789565" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.789328" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.789310" elapsed="0.000359"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:36.789701" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:36.792575" elapsed="0.000153"/>
</kw>
<msg time="2026-04-05T00:35:36.792800" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:36.791961" elapsed="0.000940"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.793720" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.794553" elapsed="0.000066"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:36.790572" elapsed="0.004132"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:36.789975" elapsed="0.004848"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:36.734866" elapsed="0.060058"/>
</kw>
<msg time="2026-04-05T00:35:36.795017" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:36.795061" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.734191" elapsed="0.060907"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:36.795295" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:36.795176" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.795158" elapsed="0.000222"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.795810" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.796131" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.796204" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:36.733520" elapsed="0.062806"/>
</kw>
<msg time="2026-04-05T00:35:36.796449" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:36.796496" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.729091" elapsed="0.067443"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.796853" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.796613" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.796595" elapsed="0.000337"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:36.728959" elapsed="0.067996"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:36.728785" elapsed="0.068201"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:36.726201" elapsed="0.070839"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:36.721537" elapsed="0.075574"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.721115" elapsed="0.076072"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:36.718541" elapsed="0.078708"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:36.798792" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-2-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-2-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:36.798944" level="INFO">${data} = &lt;rpc message-id="51" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:opendaylight:...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:36.798562" elapsed="0.000444"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:36.799056" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:36.799206" level="INFO">${request} = &lt;rpc message-id="51" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:opendaylight:...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:36.798049" elapsed="0.001186"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.802299" level="INFO">&lt;rpc message-id="51" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:36.799980" elapsed="0.002376"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.803096" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:36.802740" elapsed="0.000409"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.810572" level="INFO">&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;CARMID&lt;/id&gt;
    &lt;model&gt;Toyota Aurion&lt;/model&gt;
    &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
    &lt;year&gt;2006&lt;/year&gt;
    &lt;category&gt;sedan&lt;/category&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;
&lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
  &lt;person&gt;
    &lt;id&gt;CUSTMID&lt;/id&gt;
    &lt;age&gt;40&lt;/age&gt;
  &lt;/person&gt;
&lt;/people&gt;
&lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
  &lt;car-person&gt;
    &lt;car-id&gt;CARMID&lt;/car-id&gt;
    &lt;person-id&gt;CUSTMID&lt;/person-id&gt;
  &lt;/car-person&gt;
&lt;/car-people&gt;
&lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:36.803293" elapsed="0.007385"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:36.799690" elapsed="0.011048"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.812335" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="51"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:36.812433" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="51"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:36.810878" elapsed="0.001585"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.812509" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:36.812659" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="51"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:36.799376" elapsed="0.013312"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.812732" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:36.812891" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="51"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:36.797762" elapsed="0.015158"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:36.813894" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-2-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-2-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:36.814029" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="51"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:36.813679" elapsed="0.000379"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:36.814104" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:36.814252" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="51"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:36.813357" elapsed="0.000923"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.814323" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:36.814497" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="51"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:36.813062" elapsed="0.001478"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:36.814917" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="51"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:36.814711" elapsed="0.000235"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:36.815340" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="51"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:36.815107" elapsed="0.000262"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:36.815532" elapsed="0.000420"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:36.816041" elapsed="0.000034"/>
</return>
<arg>merge-multiple-2</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:36.797471" elapsed="0.018711"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.817400" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.817003" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.816985" elapsed="0.000537"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:36.817661" elapsed="0.000320"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.822855" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:36.822387" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:36.823107" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:36.822963" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.822944" elapsed="0.000246"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.823326" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.823504" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.823665" elapsed="0.000025"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.823834" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.823988" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.824141" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.824318" elapsed="0.000025"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:36.822090" elapsed="0.002324"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:36.816794" elapsed="0.007695"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:36.816449" elapsed="0.008083"/>
</kw>
<doc>Use a merge request with the third batch to create the infrastructure.</doc>
<status status="PASS" start="2026-04-05T00:35:36.717981" elapsed="0.106589"/>
</test>
<test id="s1-s3-s1-t26" name="Edit_Config_Multiple_Batch_Merge_Fifth" line="174">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:36.827655" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:36.827348" elapsed="0.000570"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.828877" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.828767" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.828733" elapsed="0.000211"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.833388" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.833282" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.833264" elapsed="0.000215"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.834571" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:36.834170" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.835069" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:36.834772" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:36.835141" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:36.835294" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:36.833704" elapsed="0.001615"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.841905" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.841795" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.841776" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.843196" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.843089" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.843071" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:36.843800" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:36.843409" elapsed="0.000418"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.844220" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:36.843972" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.878203" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:36.844790" elapsed="0.033593"/>
</kw>
<msg time="2026-04-05T00:35:36.878581" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:36.878629" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.844395" elapsed="0.034273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.904167" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "M "e "r "g "e "_ "F "i "f "t "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:36.879271" elapsed="0.025076"/>
</kw>
<msg time="2026-04-05T00:35:36.904534" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:36.904580" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.878870" elapsed="0.025746"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.904900" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.904694" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.904674" elapsed="0.000326"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.905537" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "M "e "r "g "e "_ "F "i "f "t "h "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:36.905128" elapsed="0.000482"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.905879" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.905677" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.905659" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:36.906013" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:36.909030" elapsed="0.000163"/>
</kw>
<msg time="2026-04-05T00:35:36.909264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:36.908302" elapsed="0.001061"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.910180" elapsed="0.000041"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.911079" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:36.906892" elapsed="0.004302"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:36.906257" elapsed="0.005055"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:36.842787" elapsed="0.068629"/>
</kw>
<msg time="2026-04-05T00:35:36.911570" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:36.911614" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.842113" elapsed="0.069537"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:36.911834" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:36.911728" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.911708" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.912291" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.912646" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.912724" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:36.841455" elapsed="0.071377"/>
</kw>
<msg time="2026-04-05T00:35:36.912924" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:36.912967" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "C "o "n "f "i "g "_ "M "u "l "t "i ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.835747" elapsed="0.077257"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.913313" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.913079" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.913062" elapsed="0.000328"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:36.835603" elapsed="0.077810"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:36.835411" elapsed="0.078061"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:36.832925" elapsed="0.080602"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:36.828468" elapsed="0.085112"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.828051" elapsed="0.085573"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:36.825289" elapsed="0.088385"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:36.915175" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-3-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-3-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:36.915468" level="INFO">${data} = &lt;rpc message-id="52" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:opendaylight:...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:36.914741" elapsed="0.000760"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:36.915548" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:36.915703" level="INFO">${request} = &lt;rpc message-id="52" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:opendaylight:...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:36.914393" elapsed="0.001338"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.918172" level="INFO">&lt;rpc message-id="52" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:36.916475" elapsed="0.001754"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.918782" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:36.918369" elapsed="0.000471"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.925721" level="INFO">&lt;target&gt;
&lt;candidate/&gt;
&lt;/target&gt;
&lt;default-operation&gt;merge&lt;/default-operation&gt;
&lt;config&gt;
&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;CAROLD2&lt;/id&gt;
    &lt;model&gt;Camry&lt;/model&gt;
    &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
    &lt;year&gt;1982&lt;/year&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;
&lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
  &lt;person&gt;
    &lt;id&gt;CUSTOLD2&lt;/id&gt;
    &lt;age&gt;65&lt;/age&gt;
  &lt;/person&gt;
&lt;/people&gt;
&lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
  &lt;car-person&gt;
    &lt;car-id&gt;CAROLD2&lt;/car-id&gt;
    &lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;
  &lt;/car-person&gt;
&lt;/car-people&gt;
&lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:36.919009" elapsed="0.006818"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:36.916169" elapsed="0.009716"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.927660" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="52"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:36.927750" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="52"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:36.926023" elapsed="0.001756"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.927825" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:36.927973" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="52"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:36.915877" elapsed="0.012125"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.928046" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:36.928189" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="52"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:36.914110" elapsed="0.014108"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:36.929217" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-3-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-3-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:36.929345" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="52"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:36.929007" elapsed="0.000366"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:36.929434" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:36.929586" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="52"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:36.928667" elapsed="0.000945"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:36.929656" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:36.929804" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="52"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:36.928358" elapsed="0.001472"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:36.930168" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="52"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:36.929970" elapsed="0.000226"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:36.930583" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="52"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:36.930336" elapsed="0.000280"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:36.930762" elapsed="0.000436"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:36.931252" elapsed="0.000027"/>
</return>
<arg>merge-multiple-3</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:36.913836" elapsed="0.017537"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.932559" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:36.932183" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.932164" elapsed="0.000482"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:36.932778" elapsed="0.000306"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.937863" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:36.937459" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:36.938104" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:36.937964" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.937946" elapsed="0.000236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.938314" elapsed="0.000060"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.938537" elapsed="0.000022"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.938696" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.938900" elapsed="0.000029"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.939072" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.939309" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:36.939480" elapsed="0.000021"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:36.937155" elapsed="0.002407"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:36.931977" elapsed="0.007635"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:36.931636" elapsed="0.008017"/>
</kw>
<doc>Add a "name4" subelement to the element and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:36.824770" elapsed="0.114920"/>
</test>
<test id="s1-s3-s1-t27" name="Commit_Multiple_Merge" line="178">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:36.942476" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:36.942220" elapsed="0.000516"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.943722" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.943610" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.943591" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.948166" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.948060" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.948042" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.949223" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:36.948816" elapsed="0.000435"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:36.949708" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:36.949395" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:36.949778" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:36.949929" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:36.948457" elapsed="0.001497"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.955169" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.955059" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.955039" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:36.956455" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:36.956321" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:36.956302" elapsed="0.000226"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:36.957037" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:36.956660" elapsed="0.000404"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.957479" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:36.957211" elapsed="0.000295"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:36.991529" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:36.958043" elapsed="0.033700"/>
</kw>
<msg time="2026-04-05T00:35:36.991974" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:36.992023" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.957661" elapsed="0.034400"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.010860" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M "e "r "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:36.992649" elapsed="0.018434"/>
</kw>
<msg time="2026-04-05T00:35:37.011256" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:37.011302" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.992223" elapsed="0.019117"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.011656" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.011419" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.011399" elapsed="0.000360"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.012265" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M "e "r "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:37.011889" elapsed="0.000444"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.012649" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.012401" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.012382" elapsed="0.000389"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:37.012812" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:37.015771" elapsed="0.000161"/>
</kw>
<msg time="2026-04-05T00:35:37.016006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:37.015089" elapsed="0.001020"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.016928" elapsed="0.000041"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.017931" elapsed="0.000039"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:37.013662" elapsed="0.004394"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:37.013073" elapsed="0.005100"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:36.956017" elapsed="0.062259"/>
</kw>
<msg time="2026-04-05T00:35:37.018371" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:37.018415" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.955377" elapsed="0.063108"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:37.018679" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:37.018567" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.018547" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.019179" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.019587" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.019663" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:36.954666" elapsed="0.065109"/>
</kw>
<msg time="2026-04-05T00:35:37.019870" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:37.019914" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.950300" elapsed="0.069651"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.020309" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.020065" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.020046" elapsed="0.000341"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:36.950174" elapsed="0.070237"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:36.950006" elapsed="0.070452"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:36.947705" elapsed="0.072809"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:36.943310" elapsed="0.077259"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:36.942908" elapsed="0.077706"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:36.940298" elapsed="0.080367"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:37.022167" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-commit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-commit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:37.022311" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="53"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:37.021730" elapsed="0.000609"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:37.022387" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:37.022571" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="53"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:37.021410" elapsed="0.001189"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.025160" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="53"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:37.023363" elapsed="0.001856"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.025702" level="INFO">&lt;commit/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:37.025360" elapsed="0.000394"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.026348" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:37.025895" elapsed="0.000509"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:37.023071" elapsed="0.003418"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.041272" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="53"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:37.041374" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="53"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:37.026631" elapsed="0.014804"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:37.041492" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:35:37.041650" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="53"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:37.022752" elapsed="0.018927"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:37.041722" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:37.041863" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="53"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:37.021118" elapsed="0.020772"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:37.042866" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-commit-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-commit-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:37.043037" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="53"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:37.042656" elapsed="0.000409"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:37.043111" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:37.043261" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="53"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:37.042323" elapsed="0.000965"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:37.043330" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:37.043493" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="53"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:37.042030" elapsed="0.001525"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:37.043915" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="53"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:37.043710" elapsed="0.000234"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:37.044311" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="53"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:37.044087" elapsed="0.000252"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:37.044499" elapsed="0.000447"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:37.045001" elapsed="0.000029"/>
</return>
<arg>merge-multiple-commit</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:37.020834" elapsed="0.024292"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.046377" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.046006" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.045987" elapsed="0.000504"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:37.046659" elapsed="0.000386"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.051915" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:37.051498" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:37.052163" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:37.052019" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.052000" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.052391" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.052568" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.052724" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.052875" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.053024" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.053174" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.053323" elapsed="0.000024"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:37.051163" elapsed="0.002248"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:37.045783" elapsed="0.007701"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:37.045375" elapsed="0.008150"/>
</kw>
<doc>Commit the changes and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:36.939879" elapsed="0.113684"/>
</test>
<test id="s1-s3-s1-t28" name="Multiple_Batch_Data_In_Running_Config" line="182">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:37.056780" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:37.056527" elapsed="0.000518"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.058016" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:37.057906" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.057887" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.062491" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:37.062366" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.062348" elapsed="0.000248"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.063658" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:37.063250" elapsed="0.000436"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.064132" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:37.063837" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:37.064202" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:37.064356" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:37.062810" elapsed="0.001570"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.069536" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:37.069411" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.069391" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.070786" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:37.070680" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.070662" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:37.071391" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:37.070995" elapsed="0.000438"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.071865" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:37.071581" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.105450" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:37.072406" elapsed="0.033205"/>
</kw>
<msg time="2026-04-05T00:35:37.105776" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:37.105821" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.072036" elapsed="0.033822"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.128823" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "D "a "t "a "_ "I "n "_ "R "u "n "n "i "n "g "_ "C "o "n "f "i "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:37.106395" elapsed="0.022623"/>
</kw>
<msg time="2026-04-05T00:35:37.129190" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:37.129235" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "D "a ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.106015" elapsed="0.023258"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.129581" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.129350" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.129331" elapsed="0.000353"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.130217" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "D "a "t "a "_ "I "n "_ "R "u "n "n "i "n "g "_ "C "o "n "f "i "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:37.129819" elapsed="0.000471"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.130588" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.130359" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.130340" elapsed="0.000350"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:37.130725" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:37.133904" elapsed="0.000147"/>
</kw>
<msg time="2026-04-05T00:35:37.134123" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:37.133256" elapsed="0.000968"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.135112" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.135959" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:37.131726" elapsed="0.004352"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:37.130980" elapsed="0.005220"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:37.070356" elapsed="0.065955"/>
</kw>
<msg time="2026-04-05T00:35:37.136407" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:37.136471" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "D "a ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.069747" elapsed="0.066764"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:37.136728" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:35:37.136592" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.136572" elapsed="0.000245"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.137198" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.137555" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.137631" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:37.069071" elapsed="0.068673"/>
</kw>
<msg time="2026-04-05T00:35:37.137837" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:37.137882" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "D "a ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.064750" elapsed="0.073169"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.138230" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.137995" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.137977" elapsed="0.000329"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:37.064622" elapsed="0.073707"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:37.064447" elapsed="0.073911"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:37.062010" elapsed="0.076403"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:37.057611" elapsed="0.080875"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.057179" elapsed="0.081354"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:37.054398" elapsed="0.084189"/>
</kw>
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:37.139667" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-check-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-check-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:37.139883" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:37.139368" elapsed="0.000546"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:37.139961" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:37.140126" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:37.139024" elapsed="0.001131"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.142698" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:37.141129" elapsed="0.001631"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.143284" level="INFO">&lt;get-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:37.142901" elapsed="0.000436"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.144723" level="INFO">&lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:37.143713" elapsed="0.001065"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:37.140818" elapsed="0.004016"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.620352" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTOLD&lt;/id&gt;
                &lt;age&gt;99&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTMID&lt;/id&gt;
                &lt;age&gt;40&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTOLD2&lt;/id&gt;
                &lt;age&gt;65&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTYOUNG&lt;/id&gt;
                &lt;age&gt;27&lt;/age&gt;
            &lt;/person&gt;
        &lt;/people&gt;
        &lt;network-instances xmlns="http://openconfig.net/yang/network-instance"&gt;
            &lt;network-instance&gt;
                &lt;name&gt;global-bgp&lt;/name&gt;
                &lt;protocols/&gt;
            &lt;/network-instance&gt;
        &lt;/network-instances&gt;
        &lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CAROLD2&lt;/car-id&gt;
                &lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;
            &lt;/car-person&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CARYOUNG&lt;/car-id&gt;
                &lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;
            &lt;/car-person&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CARMID&lt;/car-id&gt;
                &lt;person-id&gt;CUSTMID&lt;/person-id&gt;
            &lt;/car-person&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CAROLD&lt;/car-id&gt;
                &lt;person-id&gt;CUSTOLD&lt;/person-id&gt;
            &lt;/car-person&gt;
        &lt;/car-people&gt;
        &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;
                &lt;node&gt;
                    &lt;node-id&gt;43.43.43.43&lt;/node-id&gt;
                    &lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;password&gt;topsecret&lt;/password&gt;
                        &lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;
                    &lt;/session-config&gt;
                &lt;/node&gt;
                &lt;topology-types&gt;
                    &lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;
                        &lt;session-config&gt;
                            &lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;
                            &lt;listen-port&gt;4189&lt;/listen-port&gt;
                            &lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;
                            &lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;
                            &lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;
                        &lt;/session-config&gt;
                    &lt;/topology-pcep&gt;
                &lt;/topology-types&gt;
            &lt;/topology&gt;
        &lt;/network-topology&gt;
        &lt;key-stores xmlns="urn:opendaylight:yang:aaa:cert:mdsal"&gt;
            &lt;id&gt;KeyStores:1&lt;/id&gt;
            &lt;ssl-data&gt;
                &lt;bundle-name&gt;opendaylight&lt;/bundle-name&gt;
                &lt;tls-protocols/&gt;
                &lt;odl-keystore&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j7eR9+jY/ReL6ScBdTboi/ykrFmYXQQ7xFuusDY=&lt;/store-password&gt;
                    &lt;sign-alg&gt;SHA1WithRSAEncryption&lt;/sign-alg&gt;
                    &lt;validity&gt;365&lt;/validity&gt;
                    &lt;alias&gt;controller&lt;/alias&gt;
                    &lt;name&gt;ctl.jks&lt;/name&gt;
                    &lt;dname&gt;CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA&lt;/dname&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTGHQubhwHV9aYycwWBO28GdM+0EbfzFmaKhmDhRYeXS6rzNXHoliYz24Nm9Rrgrt6HUbPrex4U1IKGVHfZ0Ok7NBGIva1O3gjWP564Pdsk02VALY+3x/pSHApp4XbOoK9VYCcR27ceSz8ZakXtNqIJSP+ns/tei6wcB1xSE+4cbVJyYGh1UDqWS1/VdQBlNy6nfXdApw0tanG7ZJFszyDip/doAf8261x3CC98HK81B7ThgpPdwkfKnvxYuSkF3b/1W4TMZRXQKoNXSvvbt7QShC9dyN22zdxIdTlv2E9FgZtMCzHJbnTYQbVnfqASfUj5iF5Ghkz+IM8Ctr6HcZo+25RTqGaKLuZdDKZsbvA3YcX7uBb/X1nA/l2LI0ZdEShpllIgbm3+J55OpqL0QTF2WZCJWu7Da/ancqEis6zpVPrbdOAE1k22Fr+Ctg0l0irt86r8kcXv1m/S5c5k9OItEy6ZsXWcPBbLtn9vnpWI2Dvf6pB53cBpe3xC6ucl3Y31l0zrhw8JROv6BOV1HsYa2L7AMj+iaHNbumqX3rTxLSXsEEPVFiw07o5dj4j2lmaBUCQCGfvTCMExpzSs5/HrTOQhLHQzIkzuu9OEYw9OJOM9PPormeqd4mDlQo3opDFfVwJzc0TICklSr+OcNsKHMoYGuMYgcDR+W3fF13PF/ADvelxR6Jyc9nossRkhn8boEwu2OUhnUrgkfj5dvcaIyEt3QXbN0bp7fLAjJL3bmmqJh3BA6hnVheoEvZU8igAkdqL2y4J9UlXx+JkqZVoJEWizc4jYLpurXL9S0WYbXa37xZBh21j77UbBUBT6fCKjFbnYCjJKOPIfraTehhVxFKiHwwaUk0rYaUMbQMAasY8Z9h921xnfci307Gz2WuvN2blL3RG0n2ylzVTO9W4KWZf8lN1jpLT416KmVoaY7ltl58IQJHIn8Xda2pYe9o9QcgzVBY0gk8IfXThTKl2yFNREbE41NvCmkKQ70wg1/0BOuKAvMkje+CuHggKZXw/h+uw5wS7PGLv+P5ttt2sLjnbxtnFPu1NSS89AJ7iu4djWlEyMTXRGG9N2k1CLygLBXe4SAImLTZdd7N527Q28A3HqMgJQY6Lttme9oIpm+DQl9aQIIJgDZb9vvh9f/w4bYvCRHiwBqWNv+u9+PX0+seqNR1kpGOk933QFd0DGlQhpDrcB3yfQ9amX0V2ThyS6hqtMqgJDsacXG0DsZvotEq/uQ0Y/y++7b8g/3qto/eQ8AtVYnMwDwZJxNfEPJaWlC75coGq26S82cZdXjs48kjW88bcyW4+vhsW6eV+vR4z8u7YgQDBpNqbp1R6LixkqEiMRzkK6tbzvhdOxKzMO5qwuG1j3a2S4AjNxnfph0KUM0o5X/jDpjA7NndqzsanXunCTbr1gC0NKgoSzIfb5FtAVlGocJ+YWMrQYAfZ5EQyPVHTI0oW5V2T4jV7dATMpSXFBJ9Rp7PH02d0rtETqUF0b6Yzd8j2eNG82MXrU9yeshDY6xAD2PK0IQ2iMIXVTvohvMwvXKq7AiGiBI7RGUb+yWlkaYNBbz4L78d98li8+AT1wyfjSS06oa+UeAqFY3ADccuHzX1ZyUzlghNQCEu3mrLW2cIaQFftP+h3QfT0nRI7X7/3qeBiMD7VjhZfSVJwrY6DIdtrax4cUmqVrY1qxnbtmygGasXfC1c7vN/mrMPw+GLHjEaC8hRSQFs3WCV6uGu+LJ9Du3STlQKWEM/BhBU2oSGqaJkeI85I3JypXY=&lt;/keystoreFile&gt;
                    &lt;key-alg&gt;RSA&lt;/key-alg&gt;
                    &lt;keysize&gt;1024&lt;/keysize&gt;
                &lt;/odl-keystore&gt;
                &lt;cipher-suites&gt;
                    &lt;suiteName/&gt;
                &lt;/cipher-suites&gt;
                &lt;trust-keystore&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTcoJvqo8Gw5sBv9S7MPdfC8Ey5w0ERj70l1baW6SoxGbO2hfKQ==&lt;/keystoreFile&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j6X21ePQ7B2NsEEpHtEh2FY13wcfZiComYctBEY=&lt;/store-password&gt;
                    &lt;name&gt;truststore.jks&lt;/name&gt;
                &lt;/trust-keystore&gt;
            &lt;/ssl-data&gt;
        &lt;/key-stores&gt;
        &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CAROLD2&lt;/id&gt;
                &lt;model&gt;Camry&lt;/model&gt;
                &lt;year&gt;1982&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
            &lt;/car-entry&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CARYOUNG&lt;/id&gt;
                &lt;model&gt;Toyota Prius&lt;/model&gt;
                &lt;year&gt;2016&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
                &lt;category&gt;sedan&lt;/category&gt;
            &lt;/car-entry&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CARMID&lt;/id&gt;
                &lt;model&gt;Toyota Aurion&lt;/model&gt;
                &lt;year&gt;2006&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
                &lt;category&gt;sedan&lt;/category&gt;
            &lt;/car-entry&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CAROLD&lt;/id&gt;
                &lt;year&gt;1950&lt;/year&gt;
                &lt;manufacturer&gt;Ford&lt;/manufacturer&gt;
            &lt;/car-entry&gt;
        &lt;/cars&gt;
        &lt;odl-bmp-monitors xmlns="urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"&gt;
            &lt;bmp-monitor-config&gt;
                &lt;monitor-id&gt;example-bmp-monitor&lt;/monitor-id&gt;
                &lt;server&gt;
                    &lt;binding-port&gt;12345&lt;/binding-port&gt;
                    &lt;binding-address&gt;0.0.0.0&lt;/binding-address&gt;
                &lt;/server&gt;
            &lt;/bmp-monitor-config&gt;
        &lt;/odl-bmp-monitors&gt;
        &lt;aaa-encrypt-service-config xmlns="config:aaa:authn:encrypt:service:config"&gt;
            &lt;encrypt-type&gt;AES&lt;/encrypt-type&gt;
            &lt;encrypt-key-length&gt;128&lt;/encrypt-key-length&gt;
            &lt;password-length&gt;12&lt;/password-length&gt;
            &lt;cipher-transforms&gt;AES/GCM/NoPadding&lt;/cipher-transforms&gt;
            &lt;encrypt-key&gt;DYmlnajBzTZj&lt;/encrypt-key&gt;
            &lt;encrypt-salt&gt;CwWGOgKD82i1gQRzdbP9jw==&lt;/encrypt-salt&gt;
            &lt;auth-tag-length&gt;128&lt;/auth-tag-length&gt;
            &lt;encrypt-method&gt;PBKDF2WithHmacSHA1&lt;/encrypt-method&gt;
            &lt;encrypt-iteration-count&gt;32768&lt;/encrypt-iteration-count&gt;
        &lt;/aaa-encrypt-service-config&gt;
        &lt;routing-policy xmlns="http://openconfig.net/yang/routing-policy"&gt;
            &lt;defined-sets&gt;
                &lt;bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                    &lt;role-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-internal&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ibgp&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;all&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ebgp&lt;/role-set-name&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;ibgp-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                    &lt;/role-sets&gt;
                    &lt;originator-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;originator-id-set&gt;
                            &lt;originator-id-set-name&gt;local-originator-id&lt;/originator-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/originator-id-set&gt;
                    &lt;/originator-id-sets&gt;
                    &lt;cluster-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;cluster-id-set&gt;
                            &lt;cluster-id-set-name&gt;local-cluster-id&lt;/cluster-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/cluster-id-set&gt;
                    &lt;/cluster-id-sets&gt;
                &lt;/bgp-defined-sets&gt;
            &lt;/defined-sets&gt;
            &lt;policy-definitions&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-export-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-odl-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="all"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-odl-internal-to-internal-or-rr-client&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-rr-client-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-not-in xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy" xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-not-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-next-hop&gt;SELF&lt;/set-next-hop&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;vpn-membership-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV6-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV4-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;vpn-non-member xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-import-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-non-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                            &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                    &lt;match-cluster-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;cluster-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/cluster-id-sets/cluster-id-set[cluster-set-name="local-cluster-id"]&lt;/cluster-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-cluster-id-set-condition&gt;
                                    &lt;match-originator-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;originator-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/originator-id-sets/originator-id-set[originator-set-name="local-originator-id"]&lt;/originator-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-originator-id-set-condition&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
            &lt;/policy-definitions&gt;
        &lt;/routing-policy&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-default-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6653&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-legacy-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6633&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:37.621108" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:37.144972" elapsed="0.476173"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:37.621238" elapsed="0.000066"/>
</return>
<msg time="2026-04-05T00:35:37.621487" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:37.140298" elapsed="0.481220"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:37.621572" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:37.621726" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>merge-multiple-check</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:37.138744" elapsed="0.483012"/>
</kw>
<kw name="Check_Multiple_Batch_Data_Present">
<kw name="Check_Multiple_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.623293" elapsed="0.000350"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.622777" elapsed="0.001065"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.624467" elapsed="0.000291"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.624021" elapsed="0.000791"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.625372" elapsed="0.000299"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.624954" elapsed="0.000772"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.626278" elapsed="0.000305"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.625867" elapsed="0.000770"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CARYOUNG&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.627191" elapsed="0.000296"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CARYOUNG&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.626779" elapsed="0.000764"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTYOUNG&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.628143" elapsed="0.000294"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTYOUNG&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.627727" elapsed="0.000766"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARYOUNG&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.629047" elapsed="0.000278"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARYOUNG&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.628635" elapsed="0.000742"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.629944" elapsed="0.000275"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.629534" elapsed="0.000737"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CARMID&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.630836" elapsed="0.000281"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CARMID&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.630412" elapsed="0.000759"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTMID&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.631753" elapsed="0.000282"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTMID&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.631309" elapsed="0.000781"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARMID&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.632657" elapsed="0.000277"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARMID&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.632230" elapsed="0.000757"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTMID&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.633553" elapsed="0.000423"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTMID&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.633128" elapsed="0.000901"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD2&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.634647" elapsed="0.000286"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD2&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.634216" elapsed="0.000771"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD2&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.635554" elapsed="0.000312"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD2&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.635128" elapsed="0.000792"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD2&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.636484" elapsed="0.000282"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD2&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.636061" elapsed="0.000759"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:37.637366" elapsed="0.000296"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:37.636959" elapsed="0.000758"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:37.622398" elapsed="0.015376"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:37.621971" elapsed="0.015852"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.639283" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.638866" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.638682" elapsed="0.000690"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:37.639524" elapsed="0.000354"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.644621" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:37.644187" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:37.644866" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:35:37.644724" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.644706" elapsed="0.000243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.645085" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.645250" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.645407" elapsed="0.000035"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.645577" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.645726" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.645875" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.646025" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:37.643891" elapsed="0.002209"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:37.638485" elapsed="0.007664"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:37.638092" elapsed="0.008098"/>
</kw>
<doc>Check that the 3 subelements are now present in the running configuration.</doc>
<status status="PASS" start="2026-04-05T00:35:37.053825" elapsed="0.592405"/>
</test>
<test id="s1-s3-s1-t29" name="Abort_Connection_To_Simulate_Session_Failure" line="187">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:37.649218" elapsed="0.000223"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:37.648973" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.650501" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:37.650375" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.650356" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.654967" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:37.654852" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.654835" elapsed="0.000198"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.656023" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:37.655626" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.656507" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:37.656196" elapsed="0.000441"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:37.656684" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:35:37.656844" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:37.655246" elapsed="0.001623"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.662100" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:37.661993" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.661973" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.663373" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:37.663268" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.663250" elapsed="0.000212"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:37.663990" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:37.663594" elapsed="0.000423"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.664465" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:37.664162" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.698513" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:37.665010" elapsed="0.033671"/>
</kw>
<msg time="2026-04-05T00:35:37.698850" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:37.698896" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.664639" elapsed="0.034293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.725267" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "A "b "o "r "t "_ "C "o "n "n "e "c "t "i "o "n "_ "T "o "_ "S "i "m "u "l "a "t "e "_ "S "e "s "s "i "o "n "_ "F "a "i "l "u "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:37.699485" elapsed="0.025979"/>
</kw>
<msg time="2026-04-05T00:35:37.725635" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:37.725680" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "A "b "o "r "t "_ "C "o "n "n "e "c "t "i "o "n "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.699089" elapsed="0.026631"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.726008" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.725796" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.725776" elapsed="0.000332"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.726640" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "A "b "o "r "t "_ "C "o "n "n "e "c "t "i "o "n "_ "T "o "_ "S "i "m "u "l "a "t "e "_ "S "e "s "s "i "o "n "_ "F "a "i "l "u "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:37.726237" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.726984" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.726784" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.726765" elapsed="0.000358"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:37.727159" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:37.730026" elapsed="0.000149"/>
</kw>
<msg time="2026-04-05T00:35:37.730246" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:37.729365" elapsed="0.000983"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.731164" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.732025" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:37.728031" elapsed="0.004111"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:37.727442" elapsed="0.004818"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:37.662970" elapsed="0.069390"/>
</kw>
<msg time="2026-04-05T00:35:37.732471" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:37.732516" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "A "b "o "r "t "_ "C "o "n "n "e "c "t "i "o "n "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.662304" elapsed="0.070250"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:37.732742" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:37.732632" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.732613" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.733207" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.733541" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.733614" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:37.661654" elapsed="0.072067"/>
</kw>
<msg time="2026-04-05T00:35:37.733815" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:37.733858" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "A "b "o "r "t "_ "C "o "n "n "e "c "t "i "o "n "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.657229" elapsed="0.076666"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.734347" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.733970" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.733953" elapsed="0.000496"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:37.657099" elapsed="0.077376"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:37.656925" elapsed="0.077582"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:37.654496" elapsed="0.080066"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:37.650085" elapsed="0.084533"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.649672" elapsed="0.084993"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:37.647027" elapsed="0.087690"/>
</kw>
<kw name="Abort_ODL_Netconf_Connection">
<if>
<branch type="IF" condition="${ssh_netconf_pid} == -1">
<return>
<status status="NOT RUN" start="2026-04-05T00:35:37.735216" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:37.735110" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.735093" elapsed="0.000186"/>
</if>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.735847" level="INFO">${kill_command} = kill 4527</msg>
<var>${kill_command}</var>
<arg>kill ${ssh_netconf_pid}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:37.735409" elapsed="0.000464"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.736339" level="INFO">${ssh_netconf_pid} = -1</msg>
<arg>${ssh_netconf_pid}</arg>
<arg>-1</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:37.736022" elapsed="0.000358"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${ssh_control}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:37.736532" elapsed="0.000133"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.738113" level="INFO">kill 4527</msg>
<arg>${kill_command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:37.736838" elapsed="0.001329"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.739054" level="INFO">[?2004l[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-05T00:35:37.738309" elapsed="0.000799"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${ssh_netconf}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:37.739243" elapsed="0.000462"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.740652" level="INFO">[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-05T00:35:37.739893" elapsed="0.000812"/>
</kw>
<doc>Correctly close the Netconf connection and make sure it is really dead.</doc>
<status status="PASS" start="2026-04-05T00:35:37.734925" elapsed="0.005833"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.742086" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.741724" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.741703" elapsed="0.000471"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:37.742304" elapsed="0.000326"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.747203" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:37.746798" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:37.747461" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:35:37.747304" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.747286" elapsed="0.000257"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.747676" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.747856" elapsed="0.000022"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.748016" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.748167" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.748317" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.748483" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.748636" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:37.746511" elapsed="0.002201"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:37.741512" elapsed="0.007249"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:37.741155" elapsed="0.007646"/>
</kw>
<doc>Simulate session failure by disconnecting without terminating the session.</doc>
<status status="PASS" start="2026-04-05T00:35:37.646473" elapsed="0.102367"/>
</test>
<test id="s1-s3-s1-t30" name="Reconnect_To_ODL_Netconf_After_Session_Failure" line="191">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:37.751757" elapsed="0.000220"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:37.751513" elapsed="0.000518"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.752993" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:37.752869" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.752851" elapsed="0.000210"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.757688" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:37.757580" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.757562" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.758716" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:37.758319" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.759253" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:37.758953" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:37.759323" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:37.759495" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:37.757964" elapsed="0.001557"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.764603" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:37.764496" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.764477" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.765841" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:37.765737" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.765719" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:37.766400" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:37.766039" elapsed="0.000404"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.766838" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:37.766589" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.799788" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:37.767375" elapsed="0.032603"/>
</kw>
<msg time="2026-04-05T00:35:37.800145" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:37.800191" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.767008" elapsed="0.033219"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.826269" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "c "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ "N "e "t "c "o "n "f "_ "A "f "t "e "r "_ "S "e "s "s "i "o "n "_ "F "a "i "l "u "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:37.800769" elapsed="0.025722"/>
</kw>
<msg time="2026-04-05T00:35:37.826665" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:37.826711" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "c "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.800381" elapsed="0.026366"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.827028" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.826823" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.826803" elapsed="0.000324"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:37.827663" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "c "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ "N "e "t "c "o "n "f "_ "A "f "t "e "r "_ "S "e "s "s "i "o "n "_ "F "a "i "l "u "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:37.827253" elapsed="0.000485"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.828031" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.827805" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.827787" elapsed="0.000343"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:37.828162" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:37.830959" elapsed="0.001642"/>
</kw>
<msg time="2026-04-05T00:35:37.832677" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:37.830317" elapsed="0.002461"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.833580" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.834385" elapsed="0.000097"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:37.828992" elapsed="0.005576"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:37.828416" elapsed="0.006266"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:37.765410" elapsed="0.069371"/>
</kw>
<msg time="2026-04-05T00:35:37.834871" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:37.834915" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "c "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.764804" elapsed="0.070148"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:37.835136" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:37.835029" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.835010" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.835627" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.835987" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:37.836062" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:37.764141" elapsed="0.072029"/>
</kw>
<msg time="2026-04-05T00:35:37.836263" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:37.836306" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "c "o "n "n "e "c "t "_ "T "o "_ "O "D "L "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.759894" elapsed="0.076448"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:37.836697" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:37.836418" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:37.836400" elapsed="0.000375"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:37.759747" elapsed="0.077051"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:37.759574" elapsed="0.077253"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:37.757203" elapsed="0.079678"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:37.752584" elapsed="0.084351"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:37.752164" elapsed="0.084815"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:37.749568" elapsed="0.087462"/>
</kw>
<kw name="Open_ODL_Netconf_Connection">
<kw name="Reopen_ODL_Netconf_Connection">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:37.840545" level="INFO">sshpass -p admin ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@127.0.0.1 -p 2830 -s netconf</msg>
<arg>sshpass -p ${ssh_password} ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${ssh_user}\@127.0.0.1 -p ${ssh_port} -s netconf</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:37.837791" elapsed="0.002809"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:38.671440" level="INFO">[?2004lWarning: Permanently added '[127.0.0.1]:2830' (ECDSA) to the list of known hosts.
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;capabilities&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config?module=odl-pcep-topology-sync-optimizations-config&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&amp;amp;revision=2011-06-01&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:serviceutils:srm:types?module=odl-srm-types&amp;amp;revision=2018-06-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:stateful:stats?module=odl-pcep-stateful-stats&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs?module=iana-ssh-key-exchange-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp?module=openconfig-bgp&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:nicira:action?module=openflowplugin-extension-nicira-action&amp;amp;revision=2014-07-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:netconf-node-topology?module=netconf-node-topology&amp;amp;revision=2025-12-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:echo:service?module=sal-echo&amp;amp;revision=2015-03-05&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-nmda?module=ietf-netconf-nmda&amp;amp;revision=2019-01-07&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:serviceutils:srm:ops?module=odl-srm-ops&amp;amp;revision=2018-06-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config?module=lldp-speaker-config&amp;amp;revision=2016-05-12&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart?module=bgp-ll-graceful-restart&amp;amp;revision=2018-11-12&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:network:topology?module=odl-network-topology&amp;amp;revision=2014-01-13&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:types?module=opendaylight-flow-types&amp;amp;revision=2013-10-26&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp-types?module=openconfig-bgp-types&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:inventory?module=flow-node-inventory&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-patch?module=ietf-yang-patch&amp;amp;revision=2017-02-22&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-origin?module=ietf-origin&amp;amp;revision=2018-02-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:model:topology:inventory?module=opendaylight-topology-inventory&amp;amp;revision=2013-10-30&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote?module=sal-remote&amp;amp;revision=2014-01-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:extension:yang-ext?module=yang-ext&amp;amp;revision=2013-07-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config?module=odl-bgp-topology-config&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/local-routing?module=openconfig-local-routing&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:async-config:service?module=sal-async-config&amp;amp;revision=2017-06-19&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-crypto-types?module=ietf-crypto-types&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:exi:1.0&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/interfaces?module=openconfig-interfaces&amp;amp;revision=2016-04-12&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:types:queue?module=opendaylight-queue-types&amp;amp;revision=2013-09-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:pcep?module=network-topology-pcep&amp;amp;revision=2025-03-28&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:system?module=system-notifications&amp;amp;revision=2013-09-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:ieee754?module=ieee754&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control?module=statistics-manager-control&amp;amp;revision=2015-08-12&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin?module=cluster-admin&amp;amp;revision=2025-01-31&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:common:instruction?module=openflow-instruction&amp;amp;revision=2013-07-31&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:ietf-stateful-config?module=odl-pcep-ietf-stateful-config&amp;amp;revision=2023-01-15&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:candidate:1.0&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people?module=car-people&amp;amp;revision=2014-08-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types?module=odl-bgp-topology-types&amp;amp;revision=2016-05-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6?module=bgp-mvpn-ipv6&amp;amp;revision=2018-04-17&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:aaa:password:service:config?module=aaa-password-service-config&amp;amp;revision=2017-06-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:entity-owners?module=odl-entity-owners&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowjava:nx:match?module=nicira-match&amp;amp;revision=2014-04-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:table:statistics?module=opendaylight-flow-table-statistics&amp;amp;revision=2013-12-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:topology:discovery?module=flow-topology-discovery&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:config?module=pcep-config&amp;amp;revision=2025-06-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:p2mp:te:lsp?module=odl-pcep-p2mp-te-lsp&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:model:statistics:types?module=opendaylight-statistics-types&amp;amp;revision=2013-09-25&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs?module=iana-ssh-mac-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;config:aaa:authn:encrypt:service:config?module=aaa-encrypt-service-config&amp;amp;revision=2024-02-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:sr?module=network-topology-sr&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-vpn?module=bgp-vpn&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:experimenter-mp-message:service?module=sal-experimenter-mp-message&amp;amp;revision=2015-10-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config?module=topology-lldp-discovery-config&amp;amp;revision=2016-05-11&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-http-server?module=ietf-http-server&amp;amp;revision=2024-02-08&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service?module=frm-reconciliation&amp;amp;revision=2018-02-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:network:concepts?module=network-concepts&amp;amp;revision=2013-11-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol?module=bgp-multiprotocol&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:pcep:sync:optimizations?module=odl-pcep-sync-optimizations&amp;amp;revision=2020-07-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs?module=iana-ssh-public-key-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-flowspec?module=bgp-flowspec&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:netmod:notification?module=nc-notifications&amp;amp;revision=2008-07-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:packet:service?module=packet-processing&amp;amp;revision=2013-07-09&lt;/capability&gt;
        &lt;capability&gt;urn:sal:restconf:event:subscription?module=sal-remote-augment&amp;amp;revision=2023-11-03&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:pcep:auto:bandwidth?module=odl-pcep-auto-bandwidth&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:aaa:app:config?module=aaa-app-config&amp;amp;revision=2017-06-19&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:base:1.1&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity?module=odl-general-entity&amp;amp;revision=2015-09-30&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:base:1.0&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:queue:statistics?module=opendaylight-queue-statistics&amp;amp;revision=2013-12-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:inet-binary-types?module=odl-inet-binary-types&amp;amp;revision=2016-03-03&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-afn-safi?module=iana-afn-safi&amp;amp;revision=2013-07-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:protocol?module=openflow-protocol&amp;amp;revision=2013-07-31&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:action:types?module=opendaylight-action-types&amp;amp;revision=2013-11-12&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp-operational?module=openconfig-bgp-operational&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car?module=car&amp;amp;revision=2014-08-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:arbitrary:bitmask:fields?module=opendaylight-arbitrary-bitmask-fields&amp;amp;revision=2016-01-30&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&amp;amp;revision=2013-07-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4?module=bgp-mvpn-ipv4&amp;amp;revision=2018-04-17&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:multipart:types?module=opendaylight-multipart-types&amp;amp;revision=2017-01-12&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&amp;amp;revision=2014-08-06&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&amp;amp;revision=2010-10-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:meter:service?module=sal-meter&amp;amp;revision=2013-09-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:meter:types?module=opendaylight-meter-types&amp;amp;revision=2013-09-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-segment-routing?module=bgp-segment-routing&amp;amp;revision=2024-12-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:jsonrpc?module=jsonrpc&amp;amp;revision=2016-12-01&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:serviceutils:srm:rpc?module=odl-srm-rpcs&amp;amp;revision=2018-06-26&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/openconfig-ext?module=openconfig-extensions&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology?module=l3-unicast-igp-topology&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:onf?module=onf-extensions&amp;amp;revision=2017-01-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy?module=odl-bgp-policy&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&amp;amp;revision=2019-01-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flat-batch:service?module=sal-flat-batch&amp;amp;revision=2016-03-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:config?module=openflow-configuration&amp;amp;revision=2014-06-30&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-truststore?module=ietf-truststore&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-metadata?module=ietf-yang-metadata&amp;amp;revision=2016-08-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4?module=bgp-vpn-ipv4&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:url:1.0?scheme=file&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:queue:service?module=sal-queue&amp;amp;revision=2015-03-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:daexim?module=data-export-import&amp;amp;revision=2016-09-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-message?module=bgp-message&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:ospf-topology?module=ospf-topology&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:oxm?module=openflow-extensible-match&amp;amp;revision=2015-02-25&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&amp;amp;revision=2011-06-01&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg?module=rfc2385&amp;amp;revision=2016-03-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:aaa:cert:mdsal?module=aaa-cert-mdsal&amp;amp;revision=2016-03-21&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?module=ietf-restconf-monitoring&amp;amp;revision=2017-01-26&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-datastores?module=ietf-datastores&amp;amp;revision=2018-02-14&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:network-topology?module=network-topology&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:netconf-node-optional?module=netconf-node-optional&amp;amp;revision=2022-12-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:statistics?module=opendaylight-flow-statistics&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:nicira:match?module=openflowplugin-extension-nicira-match&amp;amp;revision=2014-07-14&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/routing-policy?module=openconfig-routing-policy&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications?module=ietf-restconf-subscribed-notifications&amp;amp;revision=2019-11-17&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:programming?module=programming&amp;amp;revision=2015-07-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel?module=topology-tunnel&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service?module=arbitrator-reconcile&amp;amp;revision=2018-02-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:controller:basic-rpc-test?module=basic-rpc-test&amp;amp;revision=2016-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&amp;amp;revision=2018-02-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bmp-monitor?module=bmp-monitor&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast?module=bgp-labeled-unicast&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?module=people&amp;amp;revision=2014-08-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:mappingservice?module=odl-mappingservice&amp;amp;revision=2015-09-06&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-routing-types?module=iana-routing-types&amp;amp;revision=2022-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config?module=forwarding-rules-manager-config&amp;amp;revision=2016-05-11&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp-policy?module=openconfig-bgp-policy&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount?module=ietf-yang-schema-mount&amp;amp;revision=2019-01-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:inventory?module=opendaylight-inventory&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pmsi-tunnel?module=pmsi-tunnel&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-http-client?module=ietf-http-client&amp;amp;revision=2024-02-08&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-linkstate?module=bgp-linkstate&amp;amp;revision=2024-12-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state?module=reconciliation-result-state&amp;amp;revision=2017-07-13&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:service:barrier:common?module=barrier-common&amp;amp;revision=2016-03-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:segment:routing?module=odl-pcep-segment-routing&amp;amp;revision=2025-04-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:cds:types?module=odl-controller-cds-types&amp;amp;revision=2025-01-31&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tls-common?module=ietf-tls-common&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config?module=topology-tunnel-pcep-config&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain?module=bgp-route-target-constrain&amp;amp;revision=2018-06-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:types?module=pcep-types&amp;amp;revision=2025-06-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:table:types?module=opendaylight-table-types&amp;amp;revision=2013-10-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:table:service?module=sal-table&amp;amp;revision=2013-10-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:l2:types?module=opendaylight-l2-types&amp;amp;revision=2013-08-27&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tcp-client?module=ietf-tcp-client&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs?module=iana-tls-cipher-suite-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications?module=ietf-subscribed-notifications&amp;amp;revision=2019-09-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:general?module=openflowplugin-extension-general&amp;amp;revision=2014-07-14&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tcp-server?module=ietf-tcp-server&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6?module=bgp-vpn-ipv6&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-routing-types?module=ietf-routing-types&amp;amp;revision=2017-12-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker?module=lldp-speaker&amp;amp;revision=2014-10-23&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:model:match:types?module=opendaylight-match-types&amp;amp;revision=2013-10-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p?module=topology-tunnel-p2p&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:common:action?module=openflow-action&amp;amp;revision=2015-02-03&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:group:types?module=opendaylight-group-types&amp;amp;revision=2013-10-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:direct:statistics?module=opendaylight-direct-statistics&amp;amp;revision=2016-05-11&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:extension:codegen?module=odl-codegen-extensions&amp;amp;revision=2024-06-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:server?module=pcep-server&amp;amp;revision=2022-03-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:meters:service?module=sal-meters-batch&amp;amp;revision=2016-03-16&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?module=ietf-x509-cert-to-name&amp;amp;revision=2014-12-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-ip?module=ietf-ip&amp;amp;revision=2018-02-22&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/policy-types?module=openconfig-policy-types&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;tag:opendaylight.org,2017:controller:yang:lowlevel:target?module=odl-mdsal-lowlevel-target&amp;amp;revision=2017-02-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?module=car-purchase&amp;amp;revision=2014-08-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:graph?module=graph&amp;amp;revision=2025-01-15&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/openconfig-types?module=openconfig-types&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?module=ietf-netconf-notifications&amp;amp;revision=2012-02-06&lt;/capability&gt;
        &lt;capability&gt;tag:opendaylight.org,2017:controller:yang:lowlevel:control?module=odl-mdsal-lowlevel-control&amp;amp;revision=2017-02-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bmp-message?module=bmp-message&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:node-ssl-connection-error:service?module=node-ssl-connection-error&amp;amp;revision=2019-07-23&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&amp;amp;revision=2013-07-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:pcep:stats?module=network-pcep-topology-stats&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep?module=topology-tunnel-pcep&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&amp;amp;revision=2018-02-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions?module=bgp-openconfig-extensions&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:service?module=sal-flow&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:meter:statistics?module=opendaylight-meter-statistics&amp;amp;revision=2013-11-11&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:mvpn?module=bgp-mvpn&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tls-server?module=ietf-tls-server&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:test?module=bgp-test&amp;amp;revision=2018-05-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-rib?module=bgp-rib&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;tag:opendaylight.org,2017:controller:yang:lowlevel:common?module=odl-mdsal-lowlevel-common&amp;amp;revision=2017-02-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming?module=topology-tunnel-pcep-programming&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:aaa:cert?module=aaa-cert&amp;amp;revision=2015-11-26&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-restconf?module=ietf-restconf&amp;amp;revision=2017-01-26&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config?module=odl-bgp-peer-acceptor-config&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:serviceutils:upgrade?module=odl-serviceutils-upgrade&amp;amp;revision=2018-07-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowjava:nx:action?module=nicira-action&amp;amp;revision=2014-04-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflow:provider:config?module=openflow-provider-config&amp;amp;revision=2016-05-10&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-keystore?module=ietf-keystore&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:message?module=pcep-message&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:netconf:monitoring?module=odl-netconf-monitoring&amp;amp;revision=2022-07-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-epe?module=bgp-epe&amp;amp;revision=2024-12-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bmp-monitor-config?module=odl-bmp-monitor-config&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:common:types?module=openflow-types&amp;amp;revision=2013-07-31&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:iana?module=iana&amp;amp;revision=2013-08-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:module:config?module=node-config&amp;amp;revision=2014-10-15&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-ssh-client?module=ietf-ssh-client&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:approved:extensions?module=openflow-approved-extensions&amp;amp;revision=2016-08-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming?module=topology-tunnel-programming&amp;amp;revision=2013-09-30&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc?module=bgp-peer-rpc&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:service:batch:common?module=batch-common&amp;amp;revision=2016-03-22&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:lisp-binary-address-types?module=odl-lisp-address-types&amp;amp;revision=2016-05-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:group:statistics?module=opendaylight-group-statistics&amp;amp;revision=2013-11-11&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:rsvp?module=rsvp&amp;amp;revision=2015-08-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:stats?module=pcep-session-stats&amp;amp;revision=2017-11-13&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep?module=hwvtep&amp;amp;revision=2015-09-01&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/network-instance?module=openconfig-network-instance&amp;amp;revision=2015-10-18&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:notification:1.0&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:overlay?module=overlay&amp;amp;revision=2015-01-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:group:service?module=sal-group&amp;amp;revision=2013-09-18&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:port:service?module=sal-port&amp;amp;revision=2013-11-07&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflow:augments?module=openflow-augments&amp;amp;revision=2015-02-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider?module=odl-pcep-topology-provider&amp;amp;revision=2023-01-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:device:notification?module=odl-device-notification&amp;amp;revision=2024-02-18&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/bgp-multiprotocol?module=openconfig-bgp-multiprotocol&amp;amp;revision=2015-10-09&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:netconf:device?module=odl-netconf-device&amp;amp;revision=2025-12-05&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-ssh-common?module=ietf-ssh-common&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:ietf:initiated?module=odl-pcep-ietf-initiated&amp;amp;revision=2020-07-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:types:port?module=opendaylight-port-types&amp;amp;revision=2013-09-25&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast?module=bgp-l3vpn-mcast&amp;amp;revision=2018-04-17&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:errors?module=flow-errors&amp;amp;revision=2013-11-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:aaa?module=aaa&amp;amp;revision=2016-12-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config?module=odl-pcep-stats-provider&amp;amp;revision=2022-07-30&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:programming?module=network-topology-programming&amp;amp;revision=2013-11-02&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:groups:service?module=sal-groups-batch&amp;amp;revision=2016-03-15&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-evpn?module=odl-bgp-evpn&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:ietf:stateful?module=odl-pcep-ietf-stateful&amp;amp;revision=2025-03-28&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields?module=opendaylight-ipv6-arbitrary-bitmask-fields&amp;amp;revision=2016-02-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:lisp-proto?module=odl-lisp-proto&amp;amp;revision=2015-11-05&lt;/capability&gt;
        &lt;capability&gt;http://openconfig.net/yang/network-instance-types?module=openconfig-network-instance-types&amp;amp;revision=2015-10-18&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tcp-common?module=ietf-tcp-common&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:yang:aaa:cert:rpc?module=aaa-cert-rpc&amp;amp;revision=2015-12-15&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-client?module=ietf-netconf-client&amp;amp;revision=2024-08-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-inet?module=bgp-inet&amp;amp;revision=2018-03-29&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:pcep:programming?module=network-topology-pcep-programming&amp;amp;revision=2018-11-09&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-tls-client?module=ietf-tls-client&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider?module=distributed-datastore-provider&amp;amp;revision=2025-01-30&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:network:isis-topology?module=isis-topology&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr?module=topology-tunnel-sr&amp;amp;revision=2013-08-19&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:role:service?module=sal-role&amp;amp;revision=2015-07-27&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:jsonrpc:ibm?module=jsonrpc-inband-models&amp;amp;revision=2019-01-12&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-restconf-server?module=ietf-restconf-server&amp;amp;revision=2024-08-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:daexim-internal?module=data-export-import-internal&amp;amp;revision=2016-09-21&lt;/capability&gt;
        &lt;capability&gt;urn:TBD:params:xml:ns:yang:network:ted?module=ted&amp;amp;revision=2013-10-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:netconf:keystore?module=netconf-keystore&amp;amp;revision=2024-07-08&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:experimenter-message:service?module=sal-experimenter-message&amp;amp;revision=2015-10-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:extension:onf:bundle:service?module=sal-bundle&amp;amp;revision=2017-01-24&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:ovsdb?module=ovsdb&amp;amp;revision=2015-01-05&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-ssh-server?module=ietf-ssh-server&amp;amp;revision=2024-10-10&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:openflowplugin:experimenter:types?module=openflowplugin-experimenter-types&amp;amp;revision=2015-10-20&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:lfm:lisp-sb?module=odl-lisp-sb&amp;amp;revision=2015-09-04&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:netconf:capability:interleave:1.0&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flows:service?module=sal-flows-batch&amp;amp;revision=2016-03-14&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:netconf:notification:1.0?module=notifications&amp;amp;revision=2008-07-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:flow:transaction?module=flow-capable-transaction&amp;amp;revision=2015-03-04&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:path:computation?module=path-computation&amp;amp;revision=2022-03-24&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-lisp-address-types?module=ietf-lisp-address-types&amp;amp;revision=2015-11-05&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc?module=pcep-topology-stats-rpc&amp;amp;revision=2019-03-21&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-network-instance?module=ietf-network-instance&amp;amp;revision=2019-01-21&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:port:statistics?module=opendaylight-port-statistics&amp;amp;revision=2013-12-14&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config?module=openflow-switch-connection-config&amp;amp;revision=2016-05-06&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs?module=iana-ssh-encryption-algs&amp;amp;revision=2024-10-16&lt;/capability&gt;
        &lt;capability&gt;urn:opendaylight:params:xml:ns:yang:bgp-types?module=bgp-types&amp;amp;revision=2020-01-20&lt;/capability&gt;
        &lt;capability&gt;urn:ietf:params:xml:ns:yang:ietf-netconf-server?module=ietf-netconf-server&amp;amp;revision=2024-08-14&lt;/capability&gt;
    &lt;/capabilities&gt;
    &lt;session-id&gt;13&lt;/session-id&gt;
&lt;/hello&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:38.672146" level="INFO">${hello} = [?2004lWarning: Permanently added '[127.0.0.1]:2830' (ECDSA) to the list of known hosts.
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1...</msg>
<var>${hello}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:37.840743" elapsed="0.831435"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${ssh_control}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:38.672385" elapsed="0.000182"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:38.672816" level="INFO">Executing command 'ps -A | grep sshpass | awk '{print $1}''.</msg>
<msg time="2026-04-05T00:35:38.695758" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:35:38.696113" level="INFO">${pid} = 4550</msg>
<var>${pid}</var>
<arg>ps -A | grep sshpass | awk '{print $1}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:38.672715" elapsed="0.023454"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:38.697528" level="INFO">${ssh_netconf_pid} = 4550</msg>
<arg>${ssh_netconf_pid}</arg>
<arg>${pid}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:38.696560" elapsed="0.001066"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${ssh_netconf}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:38.697940" elapsed="0.000316"/>
</kw>
<return>
<value>${hello}</value>
<status status="PASS" start="2026-04-05T00:35:38.698359" elapsed="0.000102"/>
</return>
<msg time="2026-04-05T00:35:38.698746" level="INFO">${hello} = [?2004lWarning: Permanently added '[127.0.0.1]:2830' (ECDSA) to the list of known hosts.
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1...</msg>
<var>${hello}</var>
<doc>Reopen a closed netconf connection.</doc>
<status status="PASS" start="2026-04-05T00:35:37.837545" elapsed="0.861266"/>
</kw>
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:38.700295" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/hello.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/hello.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:38.700671" level="INFO">${data} = &lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;capabilities&gt;
&lt;capability&gt;urn:ietf:params:netconf:base:1.0&lt;/capability&gt;
&lt;/capabilities&gt;
&lt;/hello&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:38.699816" elapsed="0.000919"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:38.700838" elapsed="0.000062"/>
</return>
<msg time="2026-04-05T00:35:38.701187" level="INFO">${hello_message} = &lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;capabilities&gt;
&lt;capability&gt;urn:ietf:params:netconf:base:1.0&lt;/capability&gt;
&lt;/capabilities&gt;
&lt;/hello&gt;
</msg>
<var>${hello_message}</var>
<arg>hello</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:38.699132" elapsed="0.002114"/>
</kw>
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:38.704918" level="INFO">&lt;hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:38.702242" elapsed="0.002857"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:38.705950" level="INFO">&lt;capabilities&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:38.705414" elapsed="0.000587"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:38.707320" level="INFO">&lt;capability&gt;urn:ietf:params:netconf:base:1.0&lt;/capability&gt;
&lt;/capabilities&gt;
&lt;/hello&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:38.706137" elapsed="0.001238"/>
</kw>
<arg>${hello_message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:38.701576" elapsed="0.005875"/>
</kw>
<return>
<value>${hello}</value>
<status status="PASS" start="2026-04-05T00:35:38.707493" elapsed="0.000029"/>
</return>
<doc>Open a prepared netconf connecion.</doc>
<status status="PASS" start="2026-04-05T00:35:37.837182" elapsed="0.870433"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.708849" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:38.708460" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:38.708439" elapsed="0.000496"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:38.709093" elapsed="0.000317"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:38.714278" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:38.713868" elapsed="0.000436"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:38.714538" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:38.714379" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:38.714360" elapsed="0.000258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.714751" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.714907" elapsed="0.000019"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.715063" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.715251" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.715403" elapsed="0.000035"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.715604" elapsed="0.000025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.715764" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:38.713579" elapsed="0.002263"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:38.708232" elapsed="0.007807"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:38.707867" elapsed="0.008213"/>
</kw>
<doc>Reconnect to ODL Netconf and fail if that is not possible.</doc>
<status status="PASS" start="2026-04-05T00:35:37.749039" elapsed="0.967080"/>
</test>
<test id="s1-s3-s1-t31" name="Multiple_Batch_Data_In_Running_Config_After_Session_Failure" line="195">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:38.719256" elapsed="0.000225"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:38.719010" elapsed="0.000525"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:38.720489" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:38.720364" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:38.720346" elapsed="0.000210"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:38.724988" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:38.724857" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:38.724838" elapsed="0.000220"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:38.726029" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:38.725649" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:38.726511" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:38.726200" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:38.726581" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:38.726733" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:38.725271" elapsed="0.001487"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:38.731990" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:38.731879" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:38.731845" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:38.733260" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:38.733155" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:38.733137" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:38.733846" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:38.733485" elapsed="0.000387"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:38.734259" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:38.734014" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:38.767382" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:38.734817" elapsed="0.032772"/>
</kw>
<msg time="2026-04-05T00:35:38.767757" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:38.767803" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:38.734444" elapsed="0.033396"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:38.802259" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "D "a "t "a "_ "I "n "_ "R "u "n "n "i "n "g "_ "C "o "n "f "i "g "_ "A "f "t "e "r "_ "S "e "s "s "i "o "n "_ "F "a "i "[78Cl "[A[78Cu
 "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:38.768436" elapsed="0.034289"/>
</kw>
<msg time="2026-04-05T00:35:38.803114" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:38.803221" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "D "a ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:38.768040" elapsed="0.035264"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.804023" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:38.803542" elapsed="0.000652"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:38.803493" elapsed="0.000758"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:38.805513" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "D "a "t "a "_ "I "n "_ "R "u "n "n "i "n "g "_ "C "o "n "f "i "g "_ "A "f "t "e "r "_ "S "e "s "s "i "o "n "_ "F "a "i "[78Cl "[A[78Cu
 "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:38.804575" elapsed="0.001121"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.805994" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:38.805792" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:38.805773" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:38.806127" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:38.808999" elapsed="0.000165"/>
</kw>
<msg time="2026-04-05T00:35:38.809236" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:38.808325" elapsed="0.001012"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.810142" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.810973" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:38.806965" elapsed="0.004124"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:38.806379" elapsed="0.004826"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:38.732842" elapsed="0.078461"/>
</kw>
<msg time="2026-04-05T00:35:38.811394" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:38.811468" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "D "a ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:38.732194" elapsed="0.079313"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:38.811691" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:38.811585" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:38.811566" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.812152" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.812524" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:38.812597" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:38.731486" elapsed="0.081220"/>
</kw>
<msg time="2026-04-05T00:35:38.812800" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:38.812843" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "M "u "l "t "i "p "l "e "_ "B "a "t "c "h "_ "D "a ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:38.727115" elapsed="0.085766"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:38.813216" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:38.812956" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:38.812939" elapsed="0.000396"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:38.726986" elapsed="0.086373"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:38.726812" elapsed="0.086578"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:38.724464" elapsed="0.088997"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:38.720081" elapsed="0.093437"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:38.719670" elapsed="0.093893"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:38.717025" elapsed="0.096589"/>
</kw>
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:38.814576" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-check-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-check-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:38.814777" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:38.814343" elapsed="0.000463"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:38.814853" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:38.815001" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:38.814038" elapsed="0.000991"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:38.816122" elapsed="0.000260"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:38.817845" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54"&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:38.816712" elapsed="0.001191"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:38.819284" level="INFO">&lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:38.818047" elapsed="0.001294"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:38.815705" elapsed="0.003693"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.268069" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTOLD&lt;/id&gt;
                &lt;age&gt;99&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTMID&lt;/id&gt;
                &lt;age&gt;40&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTOLD2&lt;/id&gt;
                &lt;age&gt;65&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTYOUNG&lt;/id&gt;
                &lt;age&gt;27&lt;/age&gt;
            &lt;/person&gt;
        &lt;/people&gt;
        &lt;network-instances xmlns="http://openconfig.net/yang/network-instance"&gt;
            &lt;network-instance&gt;
                &lt;name&gt;global-bgp&lt;/name&gt;
                &lt;protocols/&gt;
            &lt;/network-instance&gt;
        &lt;/network-instances&gt;
        &lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CAROLD2&lt;/car-id&gt;
                &lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;
            &lt;/car-person&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CARYOUNG&lt;/car-id&gt;
                &lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;
            &lt;/car-person&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CARMID&lt;/car-id&gt;
                &lt;person-id&gt;CUSTMID&lt;/person-id&gt;
            &lt;/car-person&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CAROLD&lt;/car-id&gt;
                &lt;person-id&gt;CUSTOLD&lt;/person-id&gt;
            &lt;/car-person&gt;
        &lt;/car-people&gt;
        &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;
                &lt;node&gt;
                    &lt;node-id&gt;43.43.43.43&lt;/node-id&gt;
                    &lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;password&gt;topsecret&lt;/password&gt;
                        &lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;
                    &lt;/session-config&gt;
                &lt;/node&gt;
                &lt;topology-types&gt;
                    &lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;
                        &lt;session-config&gt;
                            &lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;
                            &lt;listen-port&gt;4189&lt;/listen-port&gt;
                            &lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;
                            &lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;
                            &lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;
                        &lt;/session-config&gt;
                    &lt;/topology-pcep&gt;
                &lt;/topology-types&gt;
            &lt;/topology&gt;
        &lt;/network-topology&gt;
        &lt;key-stores xmlns="urn:opendaylight:yang:aaa:cert:mdsal"&gt;
            &lt;id&gt;KeyStores:1&lt;/id&gt;
            &lt;ssl-data&gt;
                &lt;bundle-name&gt;opendaylight&lt;/bundle-name&gt;
                &lt;tls-protocols/&gt;
                &lt;odl-keystore&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j7eR9+jY/ReL6ScBdTboi/ykrFmYXQQ7xFuusDY=&lt;/store-password&gt;
                    &lt;sign-alg&gt;SHA1WithRSAEncryption&lt;/sign-alg&gt;
                    &lt;validity&gt;365&lt;/validity&gt;
                    &lt;alias&gt;controller&lt;/alias&gt;
                    &lt;name&gt;ctl.jks&lt;/name&gt;
                    &lt;dname&gt;CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA&lt;/dname&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTGHQubhwHV9aYycwWBO28GdM+0EbfzFmaKhmDhRYeXS6rzNXHoliYz24Nm9Rrgrt6HUbPrex4U1IKGVHfZ0Ok7NBGIva1O3gjWP564Pdsk02VALY+3x/pSHApp4XbOoK9VYCcR27ceSz8ZakXtNqIJSP+ns/tei6wcB1xSE+4cbVJyYGh1UDqWS1/VdQBlNy6nfXdApw0tanG7ZJFszyDip/doAf8261x3CC98HK81B7ThgpPdwkfKnvxYuSkF3b/1W4TMZRXQKoNXSvvbt7QShC9dyN22zdxIdTlv2E9FgZtMCzHJbnTYQbVnfqASfUj5iF5Ghkz+IM8Ctr6HcZo+25RTqGaKLuZdDKZsbvA3YcX7uBb/X1nA/l2LI0ZdEShpllIgbm3+J55OpqL0QTF2WZCJWu7Da/ancqEis6zpVPrbdOAE1k22Fr+Ctg0l0irt86r8kcXv1m/S5c5k9OItEy6ZsXWcPBbLtn9vnpWI2Dvf6pB53cBpe3xC6ucl3Y31l0zrhw8JROv6BOV1HsYa2L7AMj+iaHNbumqX3rTxLSXsEEPVFiw07o5dj4j2lmaBUCQCGfvTCMExpzSs5/HrTOQhLHQzIkzuu9OEYw9OJOM9PPormeqd4mDlQo3opDFfVwJzc0TICklSr+OcNsKHMoYGuMYgcDR+W3fF13PF/ADvelxR6Jyc9nossRkhn8boEwu2OUhnUrgkfj5dvcaIyEt3QXbN0bp7fLAjJL3bmmqJh3BA6hnVheoEvZU8igAkdqL2y4J9UlXx+JkqZVoJEWizc4jYLpurXL9S0WYbXa37xZBh21j77UbBUBT6fCKjFbnYCjJKOPIfraTehhVxFKiHwwaUk0rYaUMbQMAasY8Z9h921xnfci307Gz2WuvN2blL3RG0n2ylzVTO9W4KWZf8lN1jpLT416KmVoaY7ltl58IQJHIn8Xda2pYe9o9QcgzVBY0gk8IfXThTKl2yFNREbE41NvCmkKQ70wg1/0BOuKAvMkje+CuHggKZXw/h+uw5wS7PGLv+P5ttt2sLjnbxtnFPu1NSS89AJ7iu4djWlEyMTXRGG9N2k1CLygLBXe4SAImLTZdd7N527Q28A3HqMgJQY6Lttme9oIpm+DQl9aQIIJgDZb9vvh9f/w4bYvCRHiwBqWNv+u9+PX0+seqNR1kpGOk933QFd0DGlQhpDrcB3yfQ9amX0V2ThyS6hqtMqgJDsacXG0DsZvotEq/uQ0Y/y++7b8g/3qto/eQ8AtVYnMwDwZJxNfEPJaWlC75coGq26S82cZdXjs48kjW88bcyW4+vhsW6eV+vR4z8u7YgQDBpNqbp1R6LixkqEiMRzkK6tbzvhdOxKzMO5qwuG1j3a2S4AjNxnfph0KUM0o5X/jDpjA7NndqzsanXunCTbr1gC0NKgoSzIfb5FtAVlGocJ+YWMrQYAfZ5EQyPVHTI0oW5V2T4jV7dATMpSXFBJ9Rp7PH02d0rtETqUF0b6Yzd8j2eNG82MXrU9yeshDY6xAD2PK0IQ2iMIXVTvohvMwvXKq7AiGiBI7RGUb+yWlkaYNBbz4L78d98li8+AT1wyfjSS06oa+UeAqFY3ADccuHzX1ZyUzlghNQCEu3mrLW2cIaQFftP+h3QfT0nRI7X7/3qeBiMD7VjhZfSVJwrY6DIdtrax4cUmqVrY1qxnbtmygGasXfC1c7vN/mrMPw+GLHjEaC8hRSQFs3WCV6uGu+LJ9Du3STlQKWEM/BhBU2oSGqaJkeI85I3JypXY=&lt;/keystoreFile&gt;
                    &lt;key-alg&gt;RSA&lt;/key-alg&gt;
                    &lt;keysize&gt;1024&lt;/keysize&gt;
                &lt;/odl-keystore&gt;
                &lt;cipher-suites&gt;
                    &lt;suiteName/&gt;
                &lt;/cipher-suites&gt;
                &lt;trust-keystore&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTcoJvqo8Gw5sBv9S7MPdfC8Ey5w0ERj70l1baW6SoxGbO2hfKQ==&lt;/keystoreFile&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j6X21ePQ7B2NsEEpHtEh2FY13wcfZiComYctBEY=&lt;/store-password&gt;
                    &lt;name&gt;truststore.jks&lt;/name&gt;
                &lt;/trust-keystore&gt;
            &lt;/ssl-data&gt;
        &lt;/key-stores&gt;
        &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CAROLD2&lt;/id&gt;
                &lt;model&gt;Camry&lt;/model&gt;
                &lt;year&gt;1982&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
            &lt;/car-entry&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CARYOUNG&lt;/id&gt;
                &lt;model&gt;Toyota Prius&lt;/model&gt;
                &lt;year&gt;2016&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
                &lt;category&gt;sedan&lt;/category&gt;
            &lt;/car-entry&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CARMID&lt;/id&gt;
                &lt;model&gt;Toyota Aurion&lt;/model&gt;
                &lt;year&gt;2006&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
                &lt;category&gt;sedan&lt;/category&gt;
            &lt;/car-entry&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CAROLD&lt;/id&gt;
                &lt;year&gt;1950&lt;/year&gt;
                &lt;manufacturer&gt;Ford&lt;/manufacturer&gt;
            &lt;/car-entry&gt;
        &lt;/cars&gt;
        &lt;odl-bmp-monitors xmlns="urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"&gt;
            &lt;bmp-monitor-config&gt;
                &lt;monitor-id&gt;example-bmp-monitor&lt;/monitor-id&gt;
                &lt;server&gt;
                    &lt;binding-port&gt;12345&lt;/binding-port&gt;
                    &lt;binding-address&gt;0.0.0.0&lt;/binding-address&gt;
                &lt;/server&gt;
            &lt;/bmp-monitor-config&gt;
        &lt;/odl-bmp-monitors&gt;
        &lt;aaa-encrypt-service-config xmlns="config:aaa:authn:encrypt:service:config"&gt;
            &lt;encrypt-type&gt;AES&lt;/encrypt-type&gt;
            &lt;encrypt-key-length&gt;128&lt;/encrypt-key-length&gt;
            &lt;password-length&gt;12&lt;/password-length&gt;
            &lt;cipher-transforms&gt;AES/GCM/NoPadding&lt;/cipher-transforms&gt;
            &lt;encrypt-key&gt;DYmlnajBzTZj&lt;/encrypt-key&gt;
            &lt;encrypt-salt&gt;CwWGOgKD82i1gQRzdbP9jw==&lt;/encrypt-salt&gt;
            &lt;auth-tag-length&gt;128&lt;/auth-tag-length&gt;
            &lt;encrypt-method&gt;PBKDF2WithHmacSHA1&lt;/encrypt-method&gt;
            &lt;encrypt-iteration-count&gt;32768&lt;/encrypt-iteration-count&gt;
        &lt;/aaa-encrypt-service-config&gt;
        &lt;routing-policy xmlns="http://openconfig.net/yang/routing-policy"&gt;
            &lt;defined-sets&gt;
                &lt;bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                    &lt;role-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-internal&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ibgp&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;all&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ebgp&lt;/role-set-name&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;ibgp-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                    &lt;/role-sets&gt;
                    &lt;originator-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;originator-id-set&gt;
                            &lt;originator-id-set-name&gt;local-originator-id&lt;/originator-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/originator-id-set&gt;
                    &lt;/originator-id-sets&gt;
                    &lt;cluster-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;cluster-id-set&gt;
                            &lt;cluster-id-set-name&gt;local-cluster-id&lt;/cluster-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/cluster-id-set&gt;
                    &lt;/cluster-id-sets&gt;
                &lt;/bgp-defined-sets&gt;
            &lt;/defined-sets&gt;
            &lt;policy-definitions&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-export-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-odl-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="all"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-odl-internal-to-internal-or-rr-client&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-rr-client-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-not-in xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy" xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-not-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-next-hop&gt;SELF&lt;/set-next-hop&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;vpn-membership-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV6-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV4-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;vpn-non-member xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-import-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-non-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                            &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                    &lt;match-cluster-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;cluster-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/cluster-id-sets/cluster-id-set[cluster-set-name="local-cluster-id"]&lt;/cluster-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-cluster-id-set-condition&gt;
                                    &lt;match-originator-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;originator-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/originator-id-sets/originator-id-set[originator-set-name="local-originator-id"]&lt;/originator-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-originator-id-set-condition&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
            &lt;/policy-definitions&gt;
        &lt;/routing-policy&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-default-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6653&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-legacy-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6633&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:39.268700" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:38.819556" elapsed="0.449177"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:39.268797" elapsed="0.000043"/>
</return>
<msg time="2026-04-05T00:35:39.268977" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:38.815173" elapsed="0.453833"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:39.269050" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:39.269194" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>merge-multiple-check</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:38.813766" elapsed="0.455456"/>
</kw>
<kw name="Check_Multiple_Batch_Data_Present">
<kw name="Check_Multiple_Batch_Data">
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.270690" elapsed="0.000337"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.270183" elapsed="0.000899"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.271658" elapsed="0.000293"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.271228" elapsed="0.000777"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.272574" elapsed="0.000289"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.272145" elapsed="0.000772"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.273492" elapsed="0.000309"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.273057" elapsed="0.000799"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CARYOUNG&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.274412" elapsed="0.000305"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CARYOUNG&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.273999" elapsed="0.000778"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTYOUNG&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.275330" elapsed="0.000299"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTYOUNG&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.274919" elapsed="0.000763"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARYOUNG&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.276235" elapsed="0.000300"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARYOUNG&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.275826" elapsed="0.000762"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.277141" elapsed="0.000294"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.276729" elapsed="0.000761"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CARMID&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.278080" elapsed="0.000281"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CARMID&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.277658" elapsed="0.000756"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTMID&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.278980" elapsed="0.000277"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTMID&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.278569" elapsed="0.000742"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARMID&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.279873" elapsed="0.000276"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARMID&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.279464" elapsed="0.000738"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTMID&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.280766" elapsed="0.000276"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTMID&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.280343" elapsed="0.000753"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD2&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.281741" elapsed="0.000288"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD2&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.281277" elapsed="0.000806"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD2&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.282647" elapsed="0.000279"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD2&lt;/id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.282222" elapsed="0.000757"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD2&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.283541" elapsed="0.000276"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD2&lt;/car-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.283117" elapsed="0.000754"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:39.284415" elapsed="0.000296"/>
</kw>
<arg>${keyword}</arg>
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:39.284010" elapsed="0.000755"/>
</kw>
<arg>${reply}</arg>
<arg>BuiltIn.Should_Contain</arg>
<status status="PASS" start="2026-04-05T00:35:39.269844" elapsed="0.014977"/>
</kw>
<arg>${reply}</arg>
<status status="PASS" start="2026-04-05T00:35:39.269382" elapsed="0.015486"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.286265" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:39.285734" elapsed="0.000594"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.285713" elapsed="0.000642"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:39.286506" elapsed="0.000309"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:39.291417" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:39.291010" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:39.291679" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:39.291534" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.291516" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.291895" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.292052" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.292208" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.292359" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.292524" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.292674" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.292823" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:39.290723" elapsed="0.002174"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:39.285486" elapsed="0.007460"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:39.285117" elapsed="0.007870"/>
</kw>
<doc>Check that the 3 subelements are now present in the running configuration.</doc>
<status status="PASS" start="2026-04-05T00:35:38.716433" elapsed="0.576593"/>
</test>
<test id="s1-s3-s1-t32" name="Edit_Multiple_Merge_Data" line="200">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:39.296104" elapsed="0.000204"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:39.295862" elapsed="0.000502"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.297357" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:39.297250" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.297232" elapsed="0.000206"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.301851" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:39.301745" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.301726" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:39.302877" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:39.302501" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:39.303337" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:39.303046" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:39.303408" elapsed="0.000043"/>
</return>
<msg time="2026-04-05T00:35:39.303577" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:39.302130" elapsed="0.001472"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.308761" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:39.308654" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.308634" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.310066" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:39.309961" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.309944" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:39.310640" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:39.310261" elapsed="0.000406"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.311058" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:39.310810" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.345382" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:39.311614" elapsed="0.033951"/>
</kw>
<msg time="2026-04-05T00:35:39.345765" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:39.345812" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.311227" elapsed="0.034623"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.364583" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "M "u "l "t "i "p "l "e "_ "M "e "r "g "e "_ "D "a "t "a "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:39.346382" elapsed="0.018377"/>
</kw>
<msg time="2026-04-05T00:35:39.364926" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:39.364971" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "M "u "l "t "i "p "l "e "_ "M "e "r ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.346005" elapsed="0.019002"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.365290" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:39.365083" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.365062" elapsed="0.000327"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:39.365949" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "M "u "l "t "i "p "l "e "_ "M "e "r "g "e "_ "D "a "t "a "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:39.365540" elapsed="0.000477"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.366283" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:39.366083" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.366065" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:39.366467" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:39.369485" elapsed="0.000150"/>
</kw>
<msg time="2026-04-05T00:35:39.369725" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:39.368697" elapsed="0.001128"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.370631" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.371477" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:39.367295" elapsed="0.004297"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:39.366725" elapsed="0.004980"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:39.309651" elapsed="0.062154"/>
</kw>
<msg time="2026-04-05T00:35:39.371895" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:39.371940" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "M "u "l "t "i "p "l "e "_ "M "e "r ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.308966" elapsed="0.063011"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:39.372159" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:39.372053" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.372034" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.372648" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.372971" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.373043" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:39.308301" elapsed="0.064849"/>
</kw>
<msg time="2026-04-05T00:35:39.373244" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:39.373287" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "E "d "i "t "_ "M "u "l "t "i "p "l "e "_ "M "e "r ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.303957" elapsed="0.069366"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.373649" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:39.373398" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.373380" elapsed="0.000371"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:39.303828" elapsed="0.069946"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:39.303656" elapsed="0.070152"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:39.301344" elapsed="0.072518"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:39.296965" elapsed="0.076952"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.296556" elapsed="0.077406"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:39.293918" elapsed="0.080094"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:39.375565" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-edit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-edit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:39.375725" level="INFO">${data} = &lt;rpc message-id="abc" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-opera...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:39.375065" elapsed="0.000694"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:39.375807" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:39.375955" level="INFO">${request} = &lt;rpc message-id="abc" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-opera...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:39.374764" elapsed="0.001249"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.378875" level="INFO">&lt;rpc message-id="abc" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:39.376760" elapsed="0.002173"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.379434" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:39.379077" elapsed="0.000409"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.384024" level="INFO">&lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operation&gt;merge&lt;/default-operation&gt;
    &lt;config&gt;
      &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
        &lt;car-entry&gt;
          &lt;id&gt;test&lt;/id&gt;
          &lt;model&gt;Dixi&lt;/model&gt;
          &lt;manufacturer&gt;BMW&lt;/manufacturer&gt;
          &lt;year&gt;1928&lt;/year&gt;
        &lt;/car-entry&gt;
      &lt;/cars&gt;
    &lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:39.379624" elapsed="0.004466"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:39.376466" elapsed="0.007682"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.385942" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="abc"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:39.386031" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="abc"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:39.384285" elapsed="0.001773"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:39.386104" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:39.386251" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="abc"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:39.376162" elapsed="0.010117"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:39.386323" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:39.386482" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="abc"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:39.374469" elapsed="0.012041"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:39.387467" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-edit-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-edit-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:39.387596" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="abc"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:39.387241" elapsed="0.000383"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:39.387669" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:39.387816" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="abc"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:39.386941" elapsed="0.000902"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:39.387886" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:39.388029" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="abc"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:39.386650" elapsed="0.001406"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:39.388394" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="abc"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:39.388195" elapsed="0.000243"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:39.388828" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="abc"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:39.388581" elapsed="0.000282"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:39.389159" elapsed="0.000463"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:39.389674" elapsed="0.000032"/>
</return>
<arg>merge-multiple-edit</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:39.374175" elapsed="0.015690"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.391044" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:39.390679" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.390659" elapsed="0.000505"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:39.391298" elapsed="0.000333"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:39.396397" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:39.395996" elapsed="0.000444"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:39.396657" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:39.396516" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.396498" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.396871" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.397028" elapsed="0.000022"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.397187" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.397339" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.397505" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.397659" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.397837" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:39.395708" elapsed="0.002205"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:39.390466" elapsed="0.007497"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:39.390110" elapsed="0.007894"/>
</kw>
<doc>Add another subelement named "test" to the element and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:39.293340" elapsed="0.104701"/>
</test>
<test id="s1-s3-s1-t33" name="Commit_Multiple_Modules_Merge_Edit" line="204">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:39.401028" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:39.400785" elapsed="0.000500"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.402236" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:39.402129" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.402110" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.406709" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:39.406604" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.406586" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:39.407732" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:39.407339" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:39.408196" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:39.407904" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:39.408267" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:39.408416" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:39.406982" elapsed="0.001476"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.413608" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:39.413499" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.413480" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.415032" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:39.414916" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.414899" elapsed="0.000254"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:39.415667" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:39.415284" elapsed="0.000409"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.416079" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:39.415837" elapsed="0.000268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.445034" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:39.416635" elapsed="0.028579"/>
</kw>
<msg time="2026-04-05T00:35:39.445381" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:39.445477" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.416249" elapsed="0.029268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.489081" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "_ "E "d "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:39.446097" elapsed="0.043162"/>
</kw>
<msg time="2026-04-05T00:35:39.489452" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:39.489500" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.445677" elapsed="0.043860"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.489846" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:39.489616" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.489596" elapsed="0.000363"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:39.490481" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "_ "E "d "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:39.490090" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.490819" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:39.490619" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.490601" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:39.490951" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:39.493773" elapsed="0.000176"/>
</kw>
<msg time="2026-04-05T00:35:39.494020" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:39.493094" elapsed="0.001022"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.494919" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.495737" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:39.491769" elapsed="0.004082"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:39.491191" elapsed="0.004773"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:39.414618" elapsed="0.081446"/>
</kw>
<msg time="2026-04-05T00:35:39.496156" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:39.496201" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.413939" elapsed="0.082299"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:39.496434" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:35:39.496314" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.496296" elapsed="0.000222"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.496897" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.497255" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.497326" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:39.413144" elapsed="0.084317"/>
</kw>
<msg time="2026-04-05T00:35:39.497558" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:39.497601" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.408802" elapsed="0.088836"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.498007" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:39.497719" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.497697" elapsed="0.000387"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:39.408675" elapsed="0.089431"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:39.408510" elapsed="0.089625"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:39.406232" elapsed="0.091956"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:39.401850" elapsed="0.096393"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.401431" elapsed="0.096855"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:39.398847" elapsed="0.099490"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:39.499921" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-edit-commit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-edit-commit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:39.500052" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="40"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:39.499515" elapsed="0.000565"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:39.500125" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:39.500272" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="40"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:39.499200" elapsed="0.001099"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.502886" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="40"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:39.501031" elapsed="0.001912"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.503491" level="INFO">&lt;commit/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:39.503085" elapsed="0.000457"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.504237" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:39.503701" elapsed="0.000589"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:39.500742" elapsed="0.003603"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.511567" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="40"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:39.511660" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="40"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:39.504502" elapsed="0.007185"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:39.511733" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:39.511883" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="40"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:39.500455" elapsed="0.011457"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:39.511953" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:39.512094" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="40"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:39.498914" elapsed="0.013207"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:39.513069" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-edit-commit-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-edit-commit-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:39.513230" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="40"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:39.512861" elapsed="0.000397"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:39.513304" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:39.513468" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="40"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:39.512562" elapsed="0.000934"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:39.513539" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:39.513684" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="40"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:39.512256" elapsed="0.001454"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:39.514060" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="40"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:39.513862" elapsed="0.000228"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:39.514468" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="40"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:39.514232" elapsed="0.000265"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:39.514639" elapsed="0.000398"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:39.515091" elapsed="0.000028"/>
</return>
<arg>merge-multiple-edit-commit</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:39.498606" elapsed="0.016606"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.516374" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:39.516014" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.515994" elapsed="0.000485"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:39.516612" elapsed="0.000308"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:39.521676" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:39.521264" elapsed="0.000439"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:39.521951" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:39.521776" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.521758" elapsed="0.000276"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.522168" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.522322" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.522598" elapsed="0.000022"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.522752" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.522902" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.523051" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.523196" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:39.520977" elapsed="0.002295"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:39.515803" elapsed="0.007519"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:39.515467" elapsed="0.007895"/>
</kw>
<doc>Commit the addition of the "test" subelement and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:39.398300" elapsed="0.125187"/>
</test>
<test id="s1-s3-s1-t34" name="Check_Multiple_Modules_Merge_Edit" line="208">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:39.526546" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:39.526287" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.527740" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:39.527633" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.527614" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.532171" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:39.532066" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.532048" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:39.533221" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:39.532848" elapsed="0.000401"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:39.533704" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:39.533393" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:39.533779" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:39.533955" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:39.532487" elapsed="0.001495"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.539137" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:39.539031" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.539011" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.540367" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:39.540262" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.540244" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:39.540946" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:39.540592" elapsed="0.000380"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.541353" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:39.541116" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.578142" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:39.541938" elapsed="0.036380"/>
</kw>
<msg time="2026-04-05T00:35:39.578507" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:39.578552" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.541540" elapsed="0.037048"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.602034" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "_ "E "d "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:39.579184" elapsed="0.023032"/>
</kw>
<msg time="2026-04-05T00:35:39.602382" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:39.602447" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.578763" elapsed="0.023724"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.602794" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:39.602568" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.602546" elapsed="0.000364"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:39.603407" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "_ "E "d "i "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:39.603038" elapsed="0.000457"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.603804" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:39.603599" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.603580" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:39.603936" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:39.606884" elapsed="0.000146"/>
</kw>
<msg time="2026-04-05T00:35:39.607099" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:39.606230" elapsed="0.000966"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.607997" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.608817" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:39.604763" elapsed="0.004168"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:39.604179" elapsed="0.004865"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:39.539965" elapsed="0.069178"/>
</kw>
<msg time="2026-04-05T00:35:39.609237" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:39.609280" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.539343" elapsed="0.069974"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:39.609537" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:39.609393" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.609374" elapsed="0.000244"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.610032" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.610351" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:39.610437" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:39.538692" elapsed="0.071856"/>
</kw>
<msg time="2026-04-05T00:35:39.610641" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:39.610684" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.534324" elapsed="0.076396"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:39.611033" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:39.610800" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:39.610782" elapsed="0.000328"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:39.534197" elapsed="0.076936"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:39.534033" elapsed="0.077129"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:39.531713" elapsed="0.079502"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:39.527337" elapsed="0.083932"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:39.526939" elapsed="0.084374"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:39.524326" elapsed="0.087040"/>
</kw>
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:39.612324" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-edit-check-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-edit-check-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:39.612539" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="41"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:39.612113" elapsed="0.000486"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:39.612647" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:39.612800" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="41"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:39.611810" elapsed="0.001017"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.617201" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="41"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:39.615537" elapsed="0.001722"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.617822" level="INFO">&lt;get-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:39.617401" elapsed="0.000471"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:39.619259" level="INFO">&lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:39.618103" elapsed="0.001213"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:39.615230" elapsed="0.004142"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.076227" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="41"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTOLD&lt;/id&gt;
                &lt;age&gt;99&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTMID&lt;/id&gt;
                &lt;age&gt;40&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTOLD2&lt;/id&gt;
                &lt;age&gt;65&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTYOUNG&lt;/id&gt;
                &lt;age&gt;27&lt;/age&gt;
            &lt;/person&gt;
        &lt;/people&gt;
        &lt;network-instances xmlns="http://openconfig.net/yang/network-instance"&gt;
            &lt;network-instance&gt;
                &lt;name&gt;global-bgp&lt;/name&gt;
                &lt;protocols/&gt;
            &lt;/network-instance&gt;
        &lt;/network-instances&gt;
        &lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CAROLD2&lt;/car-id&gt;
                &lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;
            &lt;/car-person&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CARYOUNG&lt;/car-id&gt;
                &lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;
            &lt;/car-person&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CARMID&lt;/car-id&gt;
                &lt;person-id&gt;CUSTMID&lt;/person-id&gt;
            &lt;/car-person&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CAROLD&lt;/car-id&gt;
                &lt;person-id&gt;CUSTOLD&lt;/person-id&gt;
            &lt;/car-person&gt;
        &lt;/car-people&gt;
        &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;
                &lt;node&gt;
                    &lt;node-id&gt;43.43.43.43&lt;/node-id&gt;
                    &lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;password&gt;topsecret&lt;/password&gt;
                        &lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;
                    &lt;/session-config&gt;
                &lt;/node&gt;
                &lt;topology-types&gt;
                    &lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;
                        &lt;session-config&gt;
                            &lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;
                            &lt;listen-port&gt;4189&lt;/listen-port&gt;
                            &lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;
                            &lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;
                            &lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;
                        &lt;/session-config&gt;
                    &lt;/topology-pcep&gt;
                &lt;/topology-types&gt;
            &lt;/topology&gt;
        &lt;/network-topology&gt;
        &lt;key-stores xmlns="urn:opendaylight:yang:aaa:cert:mdsal"&gt;
            &lt;id&gt;KeyStores:1&lt;/id&gt;
            &lt;ssl-data&gt;
                &lt;bundle-name&gt;opendaylight&lt;/bundle-name&gt;
                &lt;tls-protocols/&gt;
                &lt;odl-keystore&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j7eR9+jY/ReL6ScBdTboi/ykrFmYXQQ7xFuusDY=&lt;/store-password&gt;
                    &lt;sign-alg&gt;SHA1WithRSAEncryption&lt;/sign-alg&gt;
                    &lt;validity&gt;365&lt;/validity&gt;
                    &lt;alias&gt;controller&lt;/alias&gt;
                    &lt;name&gt;ctl.jks&lt;/name&gt;
                    &lt;dname&gt;CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA&lt;/dname&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTGHQubhwHV9aYycwWBO28GdM+0EbfzFmaKhmDhRYeXS6rzNXHoliYz24Nm9Rrgrt6HUbPrex4U1IKGVHfZ0Ok7NBGIva1O3gjWP564Pdsk02VALY+3x/pSHApp4XbOoK9VYCcR27ceSz8ZakXtNqIJSP+ns/tei6wcB1xSE+4cbVJyYGh1UDqWS1/VdQBlNy6nfXdApw0tanG7ZJFszyDip/doAf8261x3CC98HK81B7ThgpPdwkfKnvxYuSkF3b/1W4TMZRXQKoNXSvvbt7QShC9dyN22zdxIdTlv2E9FgZtMCzHJbnTYQbVnfqASfUj5iF5Ghkz+IM8Ctr6HcZo+25RTqGaKLuZdDKZsbvA3YcX7uBb/X1nA/l2LI0ZdEShpllIgbm3+J55OpqL0QTF2WZCJWu7Da/ancqEis6zpVPrbdOAE1k22Fr+Ctg0l0irt86r8kcXv1m/S5c5k9OItEy6ZsXWcPBbLtn9vnpWI2Dvf6pB53cBpe3xC6ucl3Y31l0zrhw8JROv6BOV1HsYa2L7AMj+iaHNbumqX3rTxLSXsEEPVFiw07o5dj4j2lmaBUCQCGfvTCMExpzSs5/HrTOQhLHQzIkzuu9OEYw9OJOM9PPormeqd4mDlQo3opDFfVwJzc0TICklSr+OcNsKHMoYGuMYgcDR+W3fF13PF/ADvelxR6Jyc9nossRkhn8boEwu2OUhnUrgkfj5dvcaIyEt3QXbN0bp7fLAjJL3bmmqJh3BA6hnVheoEvZU8igAkdqL2y4J9UlXx+JkqZVoJEWizc4jYLpurXL9S0WYbXa37xZBh21j77UbBUBT6fCKjFbnYCjJKOPIfraTehhVxFKiHwwaUk0rYaUMbQMAasY8Z9h921xnfci307Gz2WuvN2blL3RG0n2ylzVTO9W4KWZf8lN1jpLT416KmVoaY7ltl58IQJHIn8Xda2pYe9o9QcgzVBY0gk8IfXThTKl2yFNREbE41NvCmkKQ70wg1/0BOuKAvMkje+CuHggKZXw/h+uw5wS7PGLv+P5ttt2sLjnbxtnFPu1NSS89AJ7iu4djWlEyMTXRGG9N2k1CLygLBXe4SAImLTZdd7N527Q28A3HqMgJQY6Lttme9oIpm+DQl9aQIIJgDZb9vvh9f/w4bYvCRHiwBqWNv+u9+PX0+seqNR1kpGOk933QFd0DGlQhpDrcB3yfQ9amX0V2ThyS6hqtMqgJDsacXG0DsZvotEq/uQ0Y/y++7b8g/3qto/eQ8AtVYnMwDwZJxNfEPJaWlC75coGq26S82cZdXjs48kjW88bcyW4+vhsW6eV+vR4z8u7YgQDBpNqbp1R6LixkqEiMRzkK6tbzvhdOxKzMO5qwuG1j3a2S4AjNxnfph0KUM0o5X/jDpjA7NndqzsanXunCTbr1gC0NKgoSzIfb5FtAVlGocJ+YWMrQYAfZ5EQyPVHTI0oW5V2T4jV7dATMpSXFBJ9Rp7PH02d0rtETqUF0b6Yzd8j2eNG82MXrU9yeshDY6xAD2PK0IQ2iMIXVTvohvMwvXKq7AiGiBI7RGUb+yWlkaYNBbz4L78d98li8+AT1wyfjSS06oa+UeAqFY3ADccuHzX1ZyUzlghNQCEu3mrLW2cIaQFftP+h3QfT0nRI7X7/3qeBiMD7VjhZfSVJwrY6DIdtrax4cUmqVrY1qxnbtmygGasXfC1c7vN/mrMPw+GLHjEaC8hRSQFs3WCV6uGu+LJ9Du3STlQKWEM/BhBU2oSGqaJkeI85I3JypXY=&lt;/keystoreFile&gt;
                    &lt;key-alg&gt;RSA&lt;/key-alg&gt;
                    &lt;keysize&gt;1024&lt;/keysize&gt;
                &lt;/odl-keystore&gt;
                &lt;cipher-suites&gt;
                    &lt;suiteName/&gt;
                &lt;/cipher-suites&gt;
                &lt;trust-keystore&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTcoJvqo8Gw5sBv9S7MPdfC8Ey5w0ERj70l1baW6SoxGbO2hfKQ==&lt;/keystoreFile&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j6X21ePQ7B2NsEEpHtEh2FY13wcfZiComYctBEY=&lt;/store-password&gt;
                    &lt;name&gt;truststore.jks&lt;/name&gt;
                &lt;/trust-keystore&gt;
            &lt;/ssl-data&gt;
        &lt;/key-stores&gt;
        &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CAROLD2&lt;/id&gt;
                &lt;model&gt;Camry&lt;/model&gt;
                &lt;year&gt;1982&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
            &lt;/car-entry&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CARYOUNG&lt;/id&gt;
                &lt;model&gt;Toyota Prius&lt;/model&gt;
                &lt;year&gt;2016&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
                &lt;category&gt;sedan&lt;/category&gt;
            &lt;/car-entry&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CARMID&lt;/id&gt;
                &lt;model&gt;Toyota Aurion&lt;/model&gt;
                &lt;year&gt;2006&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
                &lt;category&gt;sedan&lt;/category&gt;
            &lt;/car-entry&gt;
            &lt;car-entry&gt;
                &lt;id&gt;test&lt;/id&gt;
                &lt;model&gt;Dixi&lt;/model&gt;
                &lt;year&gt;1928&lt;/year&gt;
                &lt;manufacturer&gt;BMW&lt;/manufacturer&gt;
            &lt;/car-entry&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CAROLD&lt;/id&gt;
                &lt;year&gt;1950&lt;/year&gt;
                &lt;manufacturer&gt;Ford&lt;/manufacturer&gt;
            &lt;/car-entry&gt;
        &lt;/cars&gt;
        &lt;odl-bmp-monitors xmlns="urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"&gt;
            &lt;bmp-monitor-config&gt;
                &lt;monitor-id&gt;example-bmp-monitor&lt;/monitor-id&gt;
                &lt;server&gt;
                    &lt;binding-port&gt;12345&lt;/binding-port&gt;
                    &lt;binding-address&gt;0.0.0.0&lt;/binding-address&gt;
                &lt;/server&gt;
            &lt;/bmp-monitor-config&gt;
        &lt;/odl-bmp-monitors&gt;
        &lt;aaa-encrypt-service-config xmlns="config:aaa:authn:encrypt:service:config"&gt;
            &lt;encrypt-type&gt;AES&lt;/encrypt-type&gt;
            &lt;encrypt-key-length&gt;128&lt;/encrypt-key-length&gt;
            &lt;password-length&gt;12&lt;/password-length&gt;
            &lt;cipher-transforms&gt;AES/GCM/NoPadding&lt;/cipher-transforms&gt;
            &lt;encrypt-key&gt;DYmlnajBzTZj&lt;/encrypt-key&gt;
            &lt;encrypt-salt&gt;CwWGOgKD82i1gQRzdbP9jw==&lt;/encrypt-salt&gt;
            &lt;auth-tag-length&gt;128&lt;/auth-tag-length&gt;
            &lt;encrypt-method&gt;PBKDF2WithHmacSHA1&lt;/encrypt-method&gt;
            &lt;encrypt-iteration-count&gt;32768&lt;/encrypt-iteration-count&gt;
        &lt;/aaa-encrypt-service-config&gt;
        &lt;routing-policy xmlns="http://openconfig.net/yang/routing-policy"&gt;
            &lt;defined-sets&gt;
                &lt;bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                    &lt;role-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-internal&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ibgp&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;all&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ebgp&lt;/role-set-name&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;ibgp-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                    &lt;/role-sets&gt;
                    &lt;originator-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;originator-id-set&gt;
                            &lt;originator-id-set-name&gt;local-originator-id&lt;/originator-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/originator-id-set&gt;
                    &lt;/originator-id-sets&gt;
                    &lt;cluster-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;cluster-id-set&gt;
                            &lt;cluster-id-set-name&gt;local-cluster-id&lt;/cluster-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/cluster-id-set&gt;
                    &lt;/cluster-id-sets&gt;
                &lt;/bgp-defined-sets&gt;
            &lt;/defined-sets&gt;
            &lt;policy-definitions&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-export-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-odl-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="all"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-odl-internal-to-internal-or-rr-client&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-rr-client-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-not-in xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy" xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-not-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-next-hop&gt;SELF&lt;/set-next-hop&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;vpn-membership-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV6-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV4-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;vpn-non-member xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-import-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-non-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                            &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                    &lt;match-cluster-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;cluster-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/cluster-id-sets/cluster-id-set[cluster-set-name="local-cluster-id"]&lt;/cluster-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-cluster-id-set-condition&gt;
                                    &lt;match-originator-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;originator-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/originator-id-sets/originator-id-set[originator-set-name="local-originator-id"]&lt;/originator-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-originator-id-set-condition&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
            &lt;/policy-definitions&gt;
        &lt;/routing-policy&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-default-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6653&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-legacy-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6633&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:40.076752" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="41"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:39.619527" elapsed="0.457257"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:40.076833" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:35:40.076995" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="41"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:39.614926" elapsed="0.462097"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:40.077067" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:40.077210" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="41"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>merge-multiple-edit-check</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:39.611530" elapsed="0.465707"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:40.077384" elapsed="0.000371"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;model&gt;Dixi&lt;/model&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:40.077900" elapsed="0.000285"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:40.078326" elapsed="0.000323"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;year&gt;1928&lt;/year&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:40.078793" elapsed="0.000278"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.080288" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.079915" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.079892" elapsed="0.000483"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:40.080524" elapsed="0.000313"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.085502" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:40.085071" elapsed="0.000459"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:40.085750" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:35:40.085605" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.085587" elapsed="0.000247"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.085971" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.086126" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.086280" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.086456" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.086610" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.086760" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.086908" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:40.084777" elapsed="0.002209"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:40.079695" elapsed="0.007340"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:40.079326" elapsed="0.007750"/>
</kw>
<doc>Check that the "test" subelement exists and has correct value for "port" subelement.</doc>
<status status="PASS" start="2026-04-05T00:35:39.523743" elapsed="0.563371"/>
</test>
<test id="s1-s3-s1-t35" name="Update_Multiple_Modules_Merge" line="216">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:40.090418" elapsed="0.000297"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:40.090172" elapsed="0.000603"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.091725" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.091619" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.091600" elapsed="0.000192"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.096170" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.096066" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.096048" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.097192" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:40.096818" elapsed="0.000400"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.097676" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:40.097364" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:40.097748" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:35:40.097904" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:40.096460" elapsed="0.001469"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.102946" elapsed="0.000089"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.102840" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.102821" elapsed="0.000275"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.104296" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.104191" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.104172" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:40.104885" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:40.104522" elapsed="0.000389"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.105305" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:40.105057" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.143415" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:40.105867" elapsed="0.037786"/>
</kw>
<msg time="2026-04-05T00:35:40.143824" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:40.143869" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.105494" elapsed="0.038412"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.167653" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "U "p "d "a "t "e "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:40.144457" elapsed="0.023371"/>
</kw>
<msg time="2026-04-05T00:35:40.167993" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:40.168039" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "U "p "d "a "t "e "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.144062" elapsed="0.024016"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.168360" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.168155" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.168135" elapsed="0.000353"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.168992" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "U "p "d "a "t "e "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:40.168619" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.169329" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.169129" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.169111" elapsed="0.000367"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:40.169512" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:40.172353" elapsed="0.000165"/>
</kw>
<msg time="2026-04-05T00:35:40.172590" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:40.171715" elapsed="0.000974"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.173486" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.174287" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:40.170324" elapsed="0.004075"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:40.169762" elapsed="0.004768"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:40.103877" elapsed="0.070764"/>
</kw>
<msg time="2026-04-05T00:35:40.174731" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:40.174779" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "U "p "d "a "t "e "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.103238" elapsed="0.071578"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:40.174996" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:40.174891" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.174873" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.175470" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.175789" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.175858" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:40.102507" elapsed="0.073460"/>
</kw>
<msg time="2026-04-05T00:35:40.176059" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:40.176102" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "U "p "d "a "t "e "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.098280" elapsed="0.077859"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.176463" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.176213" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.176196" elapsed="0.000345"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:40.098152" elapsed="0.078412"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:40.097981" elapsed="0.078612"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:40.095708" elapsed="0.080937"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:40.091317" elapsed="0.085383"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.090911" elapsed="0.085834"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:40.088025" elapsed="0.088775"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:40.178215" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-update-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-update-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:40.178377" level="INFO">${data} = &lt;rpc message-id="42" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operat...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:40.177999" elapsed="0.000407"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:40.178468" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:40.178643" level="INFO">${request} = &lt;rpc message-id="42" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operat...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:40.177697" elapsed="0.001009"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.181552" level="INFO">&lt;rpc message-id="42" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:40.179443" elapsed="0.002167"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.182100" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:40.181753" elapsed="0.000398"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.188316" level="INFO">&lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operation&gt;merge&lt;/default-operation&gt;
    &lt;config&gt;
      &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
        &lt;car-entry&gt;
          &lt;id&gt;test&lt;/id&gt;
          &lt;model&gt;Bentley Speed Six&lt;/model&gt;
          &lt;manufacturer&gt;Bentley&lt;/manufacturer&gt;
          &lt;year&gt;1930&lt;/year&gt;
        &lt;/car-entry&gt;
      &lt;/cars&gt;
    &lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:40.182289" elapsed="0.006095"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:40.179137" elapsed="0.009325"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.190225" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="42"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:40.190314" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="42"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:40.188606" elapsed="0.001735"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:40.190387" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:35:40.190585" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="42"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:40.178851" elapsed="0.011765"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:40.190659" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:40.190802" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="42"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:40.177381" elapsed="0.013450"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:40.192011" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-update-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-update-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:40.192138" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="42"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:40.191802" elapsed="0.000363"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:40.192211" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:40.192358" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="42"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:40.191261" elapsed="0.001123"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:40.192445" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:40.192592" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="42"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:40.190968" elapsed="0.001650"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:40.192954" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="42"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:40.192758" elapsed="0.000224"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:40.193345" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="42"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:40.193123" elapsed="0.000251"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:40.193531" elapsed="0.000423"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:40.194006" elapsed="0.000027"/>
</return>
<arg>merge-multiple-update</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:40.177108" elapsed="0.017019"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.195336" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.194981" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.194963" elapsed="0.000510"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:40.195611" elapsed="0.000313"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.200488" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:40.200073" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:40.200730" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:40.200589" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.200572" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.200946" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.201104" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.201263" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.201415" elapsed="0.000035"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.201585" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.201736" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.201886" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:40.199785" elapsed="0.002177"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:40.194775" elapsed="0.007237"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:40.194393" elapsed="0.007660"/>
</kw>
<doc>Update the value of the "port" subelement of the "test" subelement and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:40.087454" elapsed="0.114637"/>
</test>
<test id="s1-s3-s1-t36" name="Commit_Multiple_Modules_Merge_Update" line="220">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:40.205078" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:40.204834" elapsed="0.000503"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.206279" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.206171" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.206152" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.210987" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.210882" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.210864" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.212015" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:40.211638" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.212501" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:40.212188" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:40.212572" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:40.212725" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:40.211263" elapsed="0.001486"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.217714" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.217608" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.217590" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.218966" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.218862" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.218844" elapsed="0.000227"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:40.219576" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:40.219202" elapsed="0.000400"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.219990" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:40.219749" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.251385" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:40.220548" elapsed="0.031099"/>
</kw>
<msg time="2026-04-05T00:35:40.251828" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:40.251874" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.220161" elapsed="0.031750"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.275497" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "_ "U "p "d "a "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:40.252484" elapsed="0.023192"/>
</kw>
<msg time="2026-04-05T00:35:40.275851" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:40.275896" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.252079" elapsed="0.023854"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.276217" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.276011" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.275990" elapsed="0.000326"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.276852" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "_ "U "p "d "a "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:40.276478" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.277333" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.277128" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.277110" elapsed="0.000336"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:40.277482" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:40.280357" elapsed="0.000169"/>
</kw>
<msg time="2026-04-05T00:35:40.280598" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:40.279665" elapsed="0.001028"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.281493" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.282290" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:40.278288" elapsed="0.004116"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:40.277723" elapsed="0.004816"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:40.218543" elapsed="0.064094"/>
</kw>
<msg time="2026-04-05T00:35:40.282770" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:40.282814" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.217922" elapsed="0.064929"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:40.283192" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:35:40.282927" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.282908" elapsed="0.000370"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.283693" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.284051" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.284123" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:40.217263" elapsed="0.066967"/>
</kw>
<msg time="2026-04-05T00:35:40.284321" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:40.284364" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.213096" elapsed="0.071304"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.284750" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.284510" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.284491" elapsed="0.000339"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:40.212966" elapsed="0.071887"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:40.212799" elapsed="0.072082"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:40.210492" elapsed="0.074442"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:40.205887" elapsed="0.079101"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.205485" elapsed="0.079546"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:40.202889" elapsed="0.082192"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:40.286325" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-update-commit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-update-commit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:40.286499" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="43"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:40.286114" elapsed="0.000413"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:40.286572" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:40.286732" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="43"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:40.285816" elapsed="0.000946"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.289816" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="43"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:40.287669" elapsed="0.002204"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.290323" level="INFO">&lt;commit/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:40.290014" elapsed="0.000359"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.291069" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:40.290535" elapsed="0.000589"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:40.287359" elapsed="0.003820"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.302574" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="43"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:40.302667" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="43"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:40.291316" elapsed="0.011396"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:40.302758" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:40.302907" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="43"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:40.287070" elapsed="0.015864"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:40.302976" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:40.303115" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="43"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:40.285530" elapsed="0.017612"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:40.304117" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-update-commit-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-update-commit-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:40.304280" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="43"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:40.303908" elapsed="0.000400"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:40.304353" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:40.304521" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="43"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:40.303600" elapsed="0.000948"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:40.304590" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:40.304732" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="43"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:40.303281" elapsed="0.001478"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:40.305096" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="43"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:40.304898" elapsed="0.000227"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:40.305501" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="43"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:40.305267" elapsed="0.000263"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:40.305681" elapsed="0.000402"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:40.306136" elapsed="0.000028"/>
</return>
<arg>merge-multiple-update-commit</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:40.285240" elapsed="0.021017"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.307684" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.307308" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.307290" elapsed="0.000481"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:40.307903" elapsed="0.000314"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.312798" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:40.312380" elapsed="0.000445"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:40.313037" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:40.312899" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.312881" elapsed="0.000236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.313252" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.313408" elapsed="0.000034"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.313581" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.313730" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.313884" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.314035" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.314183" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:40.312095" elapsed="0.002164"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:40.306879" elapsed="0.007430"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:40.306514" elapsed="0.007836"/>
</kw>
<doc>Commit the update and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:40.202349" elapsed="0.112095"/>
</test>
<test id="s1-s3-s1-t37" name="Check_Multiple_Modules_Merge_Update" line="224">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:40.317457" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:40.317193" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.318661" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.318553" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.318533" elapsed="0.000210"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.323128" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.323023" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.323005" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.324151" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:40.323777" elapsed="0.000401"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.324633" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:40.324323" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:40.324703" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:40.324854" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:40.323402" elapsed="0.001477"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.330037" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.329930" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.329911" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.331297" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.331193" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.331175" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:40.331880" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:40.331519" elapsed="0.000388"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.332291" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:40.332051" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.362935" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:40.332854" elapsed="0.030252"/>
</kw>
<msg time="2026-04-05T00:35:40.363274" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:40.363320" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.332480" elapsed="0.030877"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.384375" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "_ "U "p "d "a "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:40.363917" elapsed="0.020659"/>
</kw>
<msg time="2026-04-05T00:35:40.384747" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:40.384792" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.363537" elapsed="0.021291"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.385116" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.384905" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.384885" elapsed="0.000330"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.385775" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "_ "U "p "d "a "t "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:40.385350" elapsed="0.000498"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.386157" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.385953" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.385933" elapsed="0.000325"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:40.386290" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:40.389382" elapsed="0.000175"/>
</kw>
<msg time="2026-04-05T00:35:40.389628" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:40.388621" elapsed="0.001104"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.390546" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.391359" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:40.387281" elapsed="0.004212"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:40.386550" elapsed="0.005057"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:40.330897" elapsed="0.060809"/>
</kw>
<msg time="2026-04-05T00:35:40.391802" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:40.391845" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.330244" elapsed="0.061638"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:40.392064" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:40.391958" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.391940" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.392531" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.392850" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.392920" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:40.329595" elapsed="0.063430"/>
</kw>
<msg time="2026-04-05T00:35:40.393117" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:40.393160" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.325222" elapsed="0.067974"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.393532" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.393271" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.393254" elapsed="0.000356"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:40.325094" elapsed="0.068538"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:40.324928" elapsed="0.068732"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:40.322638" elapsed="0.071074"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:40.318252" elapsed="0.075514"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.317853" elapsed="0.075956"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:40.315246" elapsed="0.078614"/>
</kw>
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:40.394925" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-update-check-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-update-check-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:40.395054" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="44"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:40.394682" elapsed="0.000431"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:40.395161" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:40.395307" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="44"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:40.394270" elapsed="0.001064"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.397993" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="44"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:40.396273" elapsed="0.001780"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.398685" level="INFO">&lt;get-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:40.398198" elapsed="0.000538"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.400056" level="INFO">&lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:40.398897" elapsed="0.001217"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:40.395979" elapsed="0.004196"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.863960" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="44"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTOLD&lt;/id&gt;
                &lt;age&gt;99&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTMID&lt;/id&gt;
                &lt;age&gt;40&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTOLD2&lt;/id&gt;
                &lt;age&gt;65&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTYOUNG&lt;/id&gt;
                &lt;age&gt;27&lt;/age&gt;
            &lt;/person&gt;
        &lt;/people&gt;
        &lt;network-instances xmlns="http://openconfig.net/yang/network-instance"&gt;
            &lt;network-instance&gt;
                &lt;name&gt;global-bgp&lt;/name&gt;
                &lt;protocols/&gt;
            &lt;/network-instance&gt;
        &lt;/network-instances&gt;
        &lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CAROLD2&lt;/car-id&gt;
                &lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;
            &lt;/car-person&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CARYOUNG&lt;/car-id&gt;
                &lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;
            &lt;/car-person&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CARMID&lt;/car-id&gt;
                &lt;person-id&gt;CUSTMID&lt;/person-id&gt;
            &lt;/car-person&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;CAROLD&lt;/car-id&gt;
                &lt;person-id&gt;CUSTOLD&lt;/person-id&gt;
            &lt;/car-person&gt;
        &lt;/car-people&gt;
        &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;
                &lt;node&gt;
                    &lt;node-id&gt;43.43.43.43&lt;/node-id&gt;
                    &lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;password&gt;topsecret&lt;/password&gt;
                        &lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;
                    &lt;/session-config&gt;
                &lt;/node&gt;
                &lt;topology-types&gt;
                    &lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;
                        &lt;session-config&gt;
                            &lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;
                            &lt;listen-port&gt;4189&lt;/listen-port&gt;
                            &lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;
                            &lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;
                            &lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;
                        &lt;/session-config&gt;
                    &lt;/topology-pcep&gt;
                &lt;/topology-types&gt;
            &lt;/topology&gt;
        &lt;/network-topology&gt;
        &lt;key-stores xmlns="urn:opendaylight:yang:aaa:cert:mdsal"&gt;
            &lt;id&gt;KeyStores:1&lt;/id&gt;
            &lt;ssl-data&gt;
                &lt;bundle-name&gt;opendaylight&lt;/bundle-name&gt;
                &lt;tls-protocols/&gt;
                &lt;odl-keystore&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j7eR9+jY/ReL6ScBdTboi/ykrFmYXQQ7xFuusDY=&lt;/store-password&gt;
                    &lt;sign-alg&gt;SHA1WithRSAEncryption&lt;/sign-alg&gt;
                    &lt;validity&gt;365&lt;/validity&gt;
                    &lt;alias&gt;controller&lt;/alias&gt;
                    &lt;name&gt;ctl.jks&lt;/name&gt;
                    &lt;dname&gt;CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA&lt;/dname&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTGHQubhwHV9aYycwWBO28GdM+0EbfzFmaKhmDhRYeXS6rzNXHoliYz24Nm9Rrgrt6HUbPrex4U1IKGVHfZ0Ok7NBGIva1O3gjWP564Pdsk02VALY+3x/pSHApp4XbOoK9VYCcR27ceSz8ZakXtNqIJSP+ns/tei6wcB1xSE+4cbVJyYGh1UDqWS1/VdQBlNy6nfXdApw0tanG7ZJFszyDip/doAf8261x3CC98HK81B7ThgpPdwkfKnvxYuSkF3b/1W4TMZRXQKoNXSvvbt7QShC9dyN22zdxIdTlv2E9FgZtMCzHJbnTYQbVnfqASfUj5iF5Ghkz+IM8Ctr6HcZo+25RTqGaKLuZdDKZsbvA3YcX7uBb/X1nA/l2LI0ZdEShpllIgbm3+J55OpqL0QTF2WZCJWu7Da/ancqEis6zpVPrbdOAE1k22Fr+Ctg0l0irt86r8kcXv1m/S5c5k9OItEy6ZsXWcPBbLtn9vnpWI2Dvf6pB53cBpe3xC6ucl3Y31l0zrhw8JROv6BOV1HsYa2L7AMj+iaHNbumqX3rTxLSXsEEPVFiw07o5dj4j2lmaBUCQCGfvTCMExpzSs5/HrTOQhLHQzIkzuu9OEYw9OJOM9PPormeqd4mDlQo3opDFfVwJzc0TICklSr+OcNsKHMoYGuMYgcDR+W3fF13PF/ADvelxR6Jyc9nossRkhn8boEwu2OUhnUrgkfj5dvcaIyEt3QXbN0bp7fLAjJL3bmmqJh3BA6hnVheoEvZU8igAkdqL2y4J9UlXx+JkqZVoJEWizc4jYLpurXL9S0WYbXa37xZBh21j77UbBUBT6fCKjFbnYCjJKOPIfraTehhVxFKiHwwaUk0rYaUMbQMAasY8Z9h921xnfci307Gz2WuvN2blL3RG0n2ylzVTO9W4KWZf8lN1jpLT416KmVoaY7ltl58IQJHIn8Xda2pYe9o9QcgzVBY0gk8IfXThTKl2yFNREbE41NvCmkKQ70wg1/0BOuKAvMkje+CuHggKZXw/h+uw5wS7PGLv+P5ttt2sLjnbxtnFPu1NSS89AJ7iu4djWlEyMTXRGG9N2k1CLygLBXe4SAImLTZdd7N527Q28A3HqMgJQY6Lttme9oIpm+DQl9aQIIJgDZb9vvh9f/w4bYvCRHiwBqWNv+u9+PX0+seqNR1kpGOk933QFd0DGlQhpDrcB3yfQ9amX0V2ThyS6hqtMqgJDsacXG0DsZvotEq/uQ0Y/y++7b8g/3qto/eQ8AtVYnMwDwZJxNfEPJaWlC75coGq26S82cZdXjs48kjW88bcyW4+vhsW6eV+vR4z8u7YgQDBpNqbp1R6LixkqEiMRzkK6tbzvhdOxKzMO5qwuG1j3a2S4AjNxnfph0KUM0o5X/jDpjA7NndqzsanXunCTbr1gC0NKgoSzIfb5FtAVlGocJ+YWMrQYAfZ5EQyPVHTI0oW5V2T4jV7dATMpSXFBJ9Rp7PH02d0rtETqUF0b6Yzd8j2eNG82MXrU9yeshDY6xAD2PK0IQ2iMIXVTvohvMwvXKq7AiGiBI7RGUb+yWlkaYNBbz4L78d98li8+AT1wyfjSS06oa+UeAqFY3ADccuHzX1ZyUzlghNQCEu3mrLW2cIaQFftP+h3QfT0nRI7X7/3qeBiMD7VjhZfSVJwrY6DIdtrax4cUmqVrY1qxnbtmygGasXfC1c7vN/mrMPw+GLHjEaC8hRSQFs3WCV6uGu+LJ9Du3STlQKWEM/BhBU2oSGqaJkeI85I3JypXY=&lt;/keystoreFile&gt;
                    &lt;key-alg&gt;RSA&lt;/key-alg&gt;
                    &lt;keysize&gt;1024&lt;/keysize&gt;
                &lt;/odl-keystore&gt;
                &lt;cipher-suites&gt;
                    &lt;suiteName/&gt;
                &lt;/cipher-suites&gt;
                &lt;trust-keystore&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTcoJvqo8Gw5sBv9S7MPdfC8Ey5w0ERj70l1baW6SoxGbO2hfKQ==&lt;/keystoreFile&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j6X21ePQ7B2NsEEpHtEh2FY13wcfZiComYctBEY=&lt;/store-password&gt;
                    &lt;name&gt;truststore.jks&lt;/name&gt;
                &lt;/trust-keystore&gt;
            &lt;/ssl-data&gt;
        &lt;/key-stores&gt;
        &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CAROLD2&lt;/id&gt;
                &lt;model&gt;Camry&lt;/model&gt;
                &lt;year&gt;1982&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
            &lt;/car-entry&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CARYOUNG&lt;/id&gt;
                &lt;model&gt;Toyota Prius&lt;/model&gt;
                &lt;year&gt;2016&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
                &lt;category&gt;sedan&lt;/category&gt;
            &lt;/car-entry&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CARMID&lt;/id&gt;
                &lt;model&gt;Toyota Aurion&lt;/model&gt;
                &lt;year&gt;2006&lt;/year&gt;
                &lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;
                &lt;category&gt;sedan&lt;/category&gt;
            &lt;/car-entry&gt;
            &lt;car-entry&gt;
                &lt;id&gt;test&lt;/id&gt;
                &lt;model&gt;Bentley Speed Six&lt;/model&gt;
                &lt;year&gt;1930&lt;/year&gt;
                &lt;manufacturer&gt;Bentley&lt;/manufacturer&gt;
            &lt;/car-entry&gt;
            &lt;car-entry&gt;
                &lt;id&gt;CAROLD&lt;/id&gt;
                &lt;year&gt;1950&lt;/year&gt;
                &lt;manufacturer&gt;Ford&lt;/manufacturer&gt;
            &lt;/car-entry&gt;
        &lt;/cars&gt;
        &lt;odl-bmp-monitors xmlns="urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"&gt;
            &lt;bmp-monitor-config&gt;
                &lt;monitor-id&gt;example-bmp-monitor&lt;/monitor-id&gt;
                &lt;server&gt;
                    &lt;binding-port&gt;12345&lt;/binding-port&gt;
                    &lt;binding-address&gt;0.0.0.0&lt;/binding-address&gt;
                &lt;/server&gt;
            &lt;/bmp-monitor-config&gt;
        &lt;/odl-bmp-monitors&gt;
        &lt;aaa-encrypt-service-config xmlns="config:aaa:authn:encrypt:service:config"&gt;
            &lt;encrypt-type&gt;AES&lt;/encrypt-type&gt;
            &lt;encrypt-key-length&gt;128&lt;/encrypt-key-length&gt;
            &lt;password-length&gt;12&lt;/password-length&gt;
            &lt;cipher-transforms&gt;AES/GCM/NoPadding&lt;/cipher-transforms&gt;
            &lt;encrypt-key&gt;DYmlnajBzTZj&lt;/encrypt-key&gt;
            &lt;encrypt-salt&gt;CwWGOgKD82i1gQRzdbP9jw==&lt;/encrypt-salt&gt;
            &lt;auth-tag-length&gt;128&lt;/auth-tag-length&gt;
            &lt;encrypt-method&gt;PBKDF2WithHmacSHA1&lt;/encrypt-method&gt;
            &lt;encrypt-iteration-count&gt;32768&lt;/encrypt-iteration-count&gt;
        &lt;/aaa-encrypt-service-config&gt;
        &lt;routing-policy xmlns="http://openconfig.net/yang/routing-policy"&gt;
            &lt;defined-sets&gt;
                &lt;bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                    &lt;role-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-internal&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ibgp&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;all&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ebgp&lt;/role-set-name&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;ibgp-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                    &lt;/role-sets&gt;
                    &lt;originator-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;originator-id-set&gt;
                            &lt;originator-id-set-name&gt;local-originator-id&lt;/originator-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/originator-id-set&gt;
                    &lt;/originator-id-sets&gt;
                    &lt;cluster-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;cluster-id-set&gt;
                            &lt;cluster-id-set-name&gt;local-cluster-id&lt;/cluster-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/cluster-id-set&gt;
                    &lt;/cluster-id-sets&gt;
                &lt;/bgp-defined-sets&gt;
            &lt;/defined-sets&gt;
            &lt;policy-definitions&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-export-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-odl-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="all"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-odl-internal-to-internal-or-rr-client&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-rr-client-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-not-in xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy" xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-not-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-next-hop&gt;SELF&lt;/set-next-hop&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;vpn-membership-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV6-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV4-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;vpn-non-member xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-import-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-non-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                            &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                    &lt;match-cluster-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;cluster-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/cluster-id-sets/cluster-id-set[cluster-set-name="local-cluster-id"]&lt;/cluster-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-cluster-id-set-condition&gt;
                                    &lt;match-originator-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;originator-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/originator-id-sets/originator-id-set[originator-set-name="local-originator-id"]&lt;/originator-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-originator-id-set-condition&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
            &lt;/policy-definitions&gt;
        &lt;/routing-policy&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-default-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6653&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-legacy-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6633&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:40.864823" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="44"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:40.400314" elapsed="0.464544"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:40.864968" elapsed="0.000068"/>
</return>
<msg time="2026-04-05T00:35:40.865203" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="44"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:40.395490" elapsed="0.469745"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:40.865284" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:40.865462" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="44"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>merge-multiple-update-check</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:40.394004" elapsed="0.471495"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:40.865725" elapsed="0.000454"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;model&gt;Bentley Speed Six&lt;/model&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:40.866333" elapsed="0.000321"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;manufacturer&gt;Bentley&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:40.866803" elapsed="0.000298"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;year&gt;1930&lt;/year&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:40.867286" elapsed="0.000326"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;model&gt;Dixi&lt;/model&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:40.867763" elapsed="0.000293"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:40.868202" elapsed="0.000314"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;year&gt;1928&lt;/year&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:40.868663" elapsed="0.000289"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.870352" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.869938" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.869915" elapsed="0.000559"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:40.870617" elapsed="0.000333"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.876053" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:40.875594" elapsed="0.000486"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:40.876309" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:35:40.876156" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.876138" elapsed="0.000252"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.876563" elapsed="0.000023"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.876745" elapsed="0.000022"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.876917" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.877077" elapsed="0.000025"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.877245" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.877402" elapsed="0.000037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.877695" elapsed="0.000023"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:40.875235" elapsed="0.002544"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:40.869713" elapsed="0.008158"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:40.869257" elapsed="0.008657"/>
</kw>
<doc>Check that the value of the "port" was really updated.</doc>
<status status="PASS" start="2026-04-05T00:35:40.314735" elapsed="0.563220"/>
</test>
<test id="s1-s3-s1-t38" name="Replace_Multiple_Modules_Merge" line="235">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:40.881702" elapsed="0.000220"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:40.881395" elapsed="0.000582"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.883031" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.882921" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.882902" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.887852" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.887731" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.887711" elapsed="0.000210"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.888994" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:40.888575" elapsed="0.000447"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.889514" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:40.889179" elapsed="0.000361"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:40.889594" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:35:40.889760" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:40.888158" elapsed="0.001630"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.895079" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.894963" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.894941" elapsed="0.000219"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.896546" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:40.896390" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.896372" elapsed="0.000245"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:40.897183" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:40.896785" elapsed="0.000425"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.897668" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:40.897372" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.934462" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:40.898281" elapsed="0.036348"/>
</kw>
<msg time="2026-04-05T00:35:40.934804" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:40.934850" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.897864" elapsed="0.037022"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.963653" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "p "l "a "c "e "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:40.935508" elapsed="0.028368"/>
</kw>
<msg time="2026-04-05T00:35:40.964051" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:40.964098" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "p "l "a "c "e "_ "M "u "l "t "i "p "l "e "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.935046" elapsed="0.029089"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.964450" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.964214" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.964193" elapsed="0.000362"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.965073" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "p "l "a "c "e "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:40.964688" elapsed="0.000494"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.965481" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.965252" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.965233" elapsed="0.000352"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:40.965619" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:40.968511" elapsed="0.000149"/>
</kw>
<msg time="2026-04-05T00:35:40.968733" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:40.967842" elapsed="0.000991"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.969655" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.970479" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:40.966482" elapsed="0.004114"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:40.965888" elapsed="0.004822"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:40.896076" elapsed="0.074733"/>
</kw>
<msg time="2026-04-05T00:35:40.970900" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:40.970943" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "p "l "a "c "e "_ "M "u "l "t "i "p "l "e "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.895343" elapsed="0.075637"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:40.971163" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:40.971057" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.971038" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.971665" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.971983" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:40.972052" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:40.894600" elapsed="0.077559"/>
</kw>
<msg time="2026-04-05T00:35:40.972251" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:40.972295" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "p "l "a "c "e "_ "M "u "l "t "i "p "l "e "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.890185" elapsed="0.082146"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.972656" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.972406" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.972388" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:40.890043" elapsed="0.082712"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:40.889855" elapsed="0.082933"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:40.887313" elapsed="0.085530"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:40.882608" elapsed="0.090289"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:40.882127" elapsed="0.090814"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:40.879036" elapsed="0.093957"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:40.974330" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-replace-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-replace-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:40.974575" level="INFO">${data} = &lt;rpc message-id="70" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operat...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:40.974112" elapsed="0.000525"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:40.974685" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:40.974836" level="INFO">${request} = &lt;rpc message-id="70" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operat...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:40.973809" elapsed="0.001054"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.977847" level="INFO">&lt;rpc message-id="70" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:40.975767" elapsed="0.002137"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.978402" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:40.978046" elapsed="0.000422"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.986334" level="INFO">&lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operation&gt;replace&lt;/default-operation&gt;
    &lt;config&gt;
      &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
        &lt;car-entry&gt;
          &lt;id&gt;REPLACE&lt;/id&gt;
          &lt;model&gt;Panda&lt;/model&gt;
          &lt;manufacturer&gt;FIAT&lt;/manufacturer&gt;
          &lt;year&gt;2003&lt;/year&gt;
        &lt;/car-entry&gt;
      &lt;/cars&gt;
      &lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
        &lt;car-person&gt;
          &lt;car-id&gt;REPLACE&lt;/car-id&gt;
          &lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;
        &lt;/car-person&gt;
      &lt;/car-people&gt;
    &lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:40.978608" elapsed="0.007799"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:40.975294" elapsed="0.011191"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:40.988434" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="70"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:40.988523" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="70"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:40.986627" elapsed="0.001923"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:40.988596" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:40.988746" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="70"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:40.975006" elapsed="0.013767"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:40.988816" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:40.988955" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="70"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:40.973517" elapsed="0.015466"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:40.990173" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-replace-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-replace-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:40.990301" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="70"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:40.989963" elapsed="0.000366"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:40.990376" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:40.990540" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="70"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:40.989657" elapsed="0.000910"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:40.990610" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:40.990753" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="70"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:40.989121" elapsed="0.001659"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:40.991122" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="70"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:40.990921" elapsed="0.000228"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:40.991548" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="70"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:40.991293" elapsed="0.000284"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:40.991722" elapsed="0.000457"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:40.992265" elapsed="0.000029"/>
</return>
<arg>merge-multiple-replace</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:40.973163" elapsed="0.019226"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.993565" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:40.993190" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.993172" elapsed="0.000479"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:40.993783" elapsed="0.000310"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:40.998682" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:40.998257" elapsed="0.000452"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:40.998925" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:40.998784" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:40.998766" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.999141" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.999297" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.999484" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.999638" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.999787" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:40.999936" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.000083" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:40.997970" elapsed="0.002187"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:40.992984" elapsed="0.007222"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:40.992647" elapsed="0.007600"/>
</kw>
<doc>Replace the content of the "test" with another completely different and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:40.878370" elapsed="0.121915"/>
</test>
<test id="s1-s3-s1-t39" name="Commit_Multiple_Modules_Merge_Replace" line="239">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:41.003198" elapsed="0.000258"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:41.002955" elapsed="0.000555"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.004457" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.004332" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.004314" elapsed="0.000210"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.010673" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.010567" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.010549" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.011736" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:41.011308" elapsed="0.000454"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.012199" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:41.011907" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:41.012269" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:41.012434" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:41.010949" elapsed="0.001512"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.017458" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.017337" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.017318" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.018696" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.018592" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.018573" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:41.019245" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:41.018893" elapsed="0.000379"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.019705" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:41.019457" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.052741" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.020252" elapsed="0.032743"/>
</kw>
<msg time="2026-04-05T00:35:41.053249" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:41.053313" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.019882" elapsed="0.033481"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.085624" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "_ "R "e "p "l "a "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:41.054177" elapsed="0.031661"/>
</kw>
<msg time="2026-04-05T00:35:41.086038" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:41.086085" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.053620" elapsed="0.032506"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.086494" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.086212" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.086190" elapsed="0.000429"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.087148" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "_ "R "e "p "l "a "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:41.086754" elapsed="0.000465"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.087541" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.087287" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.087268" elapsed="0.000386"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:41.087689" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:41.090617" elapsed="0.000156"/>
</kw>
<msg time="2026-04-05T00:35:41.090846" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:41.089914" elapsed="0.001036"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.091808" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.092650" elapsed="0.000184"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:41.088540" elapsed="0.004381"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:41.087941" elapsed="0.005096"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:41.018269" elapsed="0.074867"/>
</kw>
<msg time="2026-04-05T00:35:41.093229" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:41.093272" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.017663" elapsed="0.075650"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:41.093574" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:41.093460" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.093439" elapsed="0.000220"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.094046" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.094363" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.094465" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:41.017004" elapsed="0.077572"/>
</kw>
<msg time="2026-04-05T00:35:41.094683" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:41.094732" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "M "u "l "t "i "p "l "e "_ "M ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.012854" elapsed="0.081915"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.095097" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.094847" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.094828" elapsed="0.000349"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:41.012724" elapsed="0.082477"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:41.012551" elapsed="0.082681"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:41.010193" elapsed="0.085101"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:41.004051" elapsed="0.091298"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.003644" elapsed="0.091749"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:41.000960" elapsed="0.094540"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:41.096853" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-replace-commit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-replace-commit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:41.096997" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="71"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:41.096631" elapsed="0.000393"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:41.097071" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:41.097222" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="71"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:41.096305" elapsed="0.000949"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.100189" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="71"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.098009" elapsed="0.002240"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.100731" level="INFO">&lt;commit/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.100399" elapsed="0.000389"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.101446" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:41.100940" elapsed="0.000562"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:41.097706" elapsed="0.003852"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.106761" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="71"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:41.106858" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="71"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:41.101706" elapsed="0.005179"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:41.106933" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:41.107082" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="71"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:41.097398" elapsed="0.009747"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:41.107190" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:41.107334" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="71"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:41.095999" elapsed="0.011362"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:41.108350" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-replace-commit-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-replace-commit-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:41.108494" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="71"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:41.108142" elapsed="0.000379"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:41.108567" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:41.108714" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="71"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:41.107843" elapsed="0.000898"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:41.108783" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:41.108964" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="71"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:41.107547" elapsed="0.001447"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:41.109349" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="71"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:41.109138" elapsed="0.000240"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:41.109763" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="71"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:41.109541" elapsed="0.000251"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:41.109944" elapsed="0.000412"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:41.110410" elapsed="0.000045"/>
</return>
<arg>merge-multiple-replace-commit</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:41.095676" elapsed="0.014877"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.111989" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.111615" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.111597" elapsed="0.000480"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:41.112210" elapsed="0.000333"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.117525" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:41.117070" elapsed="0.000483"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:41.117794" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:41.117639" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.117620" elapsed="0.000256"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.118011" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.118178" elapsed="0.000023"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.118351" elapsed="0.000022"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.118525" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.118680" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.118832" elapsed="0.000054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.119024" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:41.116762" elapsed="0.002338"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:41.111365" elapsed="0.007791"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:41.110797" elapsed="0.008403"/>
</kw>
<doc>Commit the replace and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:41.000496" elapsed="0.118741"/>
</test>
<test id="s1-s3-s1-t40" name="Check_Multiple_Modules_Merge_Replace" line="243">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:41.122355" elapsed="0.000229"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:41.122096" elapsed="0.000543"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.123641" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.123527" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.123474" elapsed="0.000236"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.128144" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.128038" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.128019" elapsed="0.000217"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.129216" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:41.128835" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.129728" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:41.129406" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:41.129800" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:41.129954" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:41.128472" elapsed="0.001507"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.135238" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.135130" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.135109" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.136569" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.136459" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.136439" elapsed="0.000198"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:41.137122" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:41.136768" elapsed="0.000380"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.137566" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:41.137292" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.172911" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.138109" elapsed="0.034974"/>
</kw>
<msg time="2026-04-05T00:35:41.173252" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:41.173297" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.137739" elapsed="0.035594"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.199385" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "_ "R "e "p "l "a "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:41.173962" elapsed="0.025651"/>
</kw>
<msg time="2026-04-05T00:35:41.199797" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:41.199848" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.173542" elapsed="0.026387"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.200247" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.200017" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.199995" elapsed="0.000364"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.200921" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o "d "u "l "e "s "_ "M "e "r "g "e "_ "R "e "p "l "a "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:41.200538" elapsed="0.000456"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.201263" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.201061" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.201043" elapsed="0.000321"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:41.201397" elapsed="0.000047"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:41.204297" elapsed="0.000179"/>
</kw>
<msg time="2026-04-05T00:35:41.204549" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:41.203642" elapsed="0.001008"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.205449" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.206273" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:41.202240" elapsed="0.004148"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:41.201664" elapsed="0.004860"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:41.136109" elapsed="0.070515"/>
</kw>
<msg time="2026-04-05T00:35:41.206715" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:41.206759" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.135463" elapsed="0.071333"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:41.207015" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:35:41.206874" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.206854" elapsed="0.000249"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.207501" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.207870" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.207942" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:41.134787" elapsed="0.073262"/>
</kw>
<msg time="2026-04-05T00:35:41.208143" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:41.208186" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "h "e "c "k "_ "M "u "l "t "i "p "l "e "_ "M "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.130334" elapsed="0.077888"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.208568" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.208298" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.208280" elapsed="0.000365"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:41.130201" elapsed="0.078468"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:41.130031" elapsed="0.078666"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:41.127679" elapsed="0.081072"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:41.123180" elapsed="0.085630"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.122774" elapsed="0.086080"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:41.120115" elapsed="0.088838"/>
</kw>
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:41.209916" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-replace-check-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-replace-check-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:41.210145" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="72"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:41.209705" elapsed="0.000473"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:41.210225" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:41.210374" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="72"&gt;
    &lt;get-config&gt;
        &lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:41.209377" elapsed="0.001025"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.213209" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="72"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.211363" elapsed="0.001906"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.213896" level="INFO">&lt;get-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.213415" elapsed="0.000533"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.215182" level="INFO">&lt;source&gt;
            &lt;running/&gt;
        &lt;/source&gt;
    &lt;/get-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:41.214085" elapsed="0.001153"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:41.211068" elapsed="0.004227"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.666571" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="72"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people"&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTOLD&lt;/id&gt;
                &lt;age&gt;99&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTMID&lt;/id&gt;
                &lt;age&gt;40&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTOLD2&lt;/id&gt;
                &lt;age&gt;65&lt;/age&gt;
            &lt;/person&gt;
            &lt;person&gt;
                &lt;id&gt;CUSTYOUNG&lt;/id&gt;
                &lt;age&gt;27&lt;/age&gt;
            &lt;/person&gt;
        &lt;/people&gt;
        &lt;network-instances xmlns="http://openconfig.net/yang/network-instance"&gt;
            &lt;network-instance&gt;
                &lt;name&gt;global-bgp&lt;/name&gt;
                &lt;protocols/&gt;
            &lt;/network-instance&gt;
        &lt;/network-instances&gt;
        &lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people"&gt;
            &lt;car-person&gt;
                &lt;car-id&gt;REPLACE&lt;/car-id&gt;
                &lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;
            &lt;/car-person&gt;
        &lt;/car-people&gt;
        &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;
            &lt;/topology&gt;
            &lt;topology&gt;
                &lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;
                &lt;node&gt;
                    &lt;node-id&gt;43.43.43.43&lt;/node-id&gt;
                    &lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;password&gt;topsecret&lt;/password&gt;
                        &lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;
                    &lt;/session-config&gt;
                &lt;/node&gt;
                &lt;topology-types&gt;
                    &lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;
                        &lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;
                        &lt;session-config&gt;
                            &lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;
                            &lt;listen-port&gt;4189&lt;/listen-port&gt;
                            &lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;
                            &lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;
                            &lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;
                        &lt;/session-config&gt;
                    &lt;/topology-pcep&gt;
                &lt;/topology-types&gt;
            &lt;/topology&gt;
        &lt;/network-topology&gt;
        &lt;key-stores xmlns="urn:opendaylight:yang:aaa:cert:mdsal"&gt;
            &lt;id&gt;KeyStores:1&lt;/id&gt;
            &lt;ssl-data&gt;
                &lt;bundle-name&gt;opendaylight&lt;/bundle-name&gt;
                &lt;tls-protocols/&gt;
                &lt;odl-keystore&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j7eR9+jY/ReL6ScBdTboi/ykrFmYXQQ7xFuusDY=&lt;/store-password&gt;
                    &lt;sign-alg&gt;SHA1WithRSAEncryption&lt;/sign-alg&gt;
                    &lt;validity&gt;365&lt;/validity&gt;
                    &lt;alias&gt;controller&lt;/alias&gt;
                    &lt;name&gt;ctl.jks&lt;/name&gt;
                    &lt;dname&gt;CN=ODL, OU=Dev, O=LinuxFoundation, L=QC Montreal, C=CA&lt;/dname&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTGHQubhwHV9aYycwWBO28GdM+0EbfzFmaKhmDhRYeXS6rzNXHoliYz24Nm9Rrgrt6HUbPrex4U1IKGVHfZ0Ok7NBGIva1O3gjWP564Pdsk02VALY+3x/pSHApp4XbOoK9VYCcR27ceSz8ZakXtNqIJSP+ns/tei6wcB1xSE+4cbVJyYGh1UDqWS1/VdQBlNy6nfXdApw0tanG7ZJFszyDip/doAf8261x3CC98HK81B7ThgpPdwkfKnvxYuSkF3b/1W4TMZRXQKoNXSvvbt7QShC9dyN22zdxIdTlv2E9FgZtMCzHJbnTYQbVnfqASfUj5iF5Ghkz+IM8Ctr6HcZo+25RTqGaKLuZdDKZsbvA3YcX7uBb/X1nA/l2LI0ZdEShpllIgbm3+J55OpqL0QTF2WZCJWu7Da/ancqEis6zpVPrbdOAE1k22Fr+Ctg0l0irt86r8kcXv1m/S5c5k9OItEy6ZsXWcPBbLtn9vnpWI2Dvf6pB53cBpe3xC6ucl3Y31l0zrhw8JROv6BOV1HsYa2L7AMj+iaHNbumqX3rTxLSXsEEPVFiw07o5dj4j2lmaBUCQCGfvTCMExpzSs5/HrTOQhLHQzIkzuu9OEYw9OJOM9PPormeqd4mDlQo3opDFfVwJzc0TICklSr+OcNsKHMoYGuMYgcDR+W3fF13PF/ADvelxR6Jyc9nossRkhn8boEwu2OUhnUrgkfj5dvcaIyEt3QXbN0bp7fLAjJL3bmmqJh3BA6hnVheoEvZU8igAkdqL2y4J9UlXx+JkqZVoJEWizc4jYLpurXL9S0WYbXa37xZBh21j77UbBUBT6fCKjFbnYCjJKOPIfraTehhVxFKiHwwaUk0rYaUMbQMAasY8Z9h921xnfci307Gz2WuvN2blL3RG0n2ylzVTO9W4KWZf8lN1jpLT416KmVoaY7ltl58IQJHIn8Xda2pYe9o9QcgzVBY0gk8IfXThTKl2yFNREbE41NvCmkKQ70wg1/0BOuKAvMkje+CuHggKZXw/h+uw5wS7PGLv+P5ttt2sLjnbxtnFPu1NSS89AJ7iu4djWlEyMTXRGG9N2k1CLygLBXe4SAImLTZdd7N527Q28A3HqMgJQY6Lttme9oIpm+DQl9aQIIJgDZb9vvh9f/w4bYvCRHiwBqWNv+u9+PX0+seqNR1kpGOk933QFd0DGlQhpDrcB3yfQ9amX0V2ThyS6hqtMqgJDsacXG0DsZvotEq/uQ0Y/y++7b8g/3qto/eQ8AtVYnMwDwZJxNfEPJaWlC75coGq26S82cZdXjs48kjW88bcyW4+vhsW6eV+vR4z8u7YgQDBpNqbp1R6LixkqEiMRzkK6tbzvhdOxKzMO5qwuG1j3a2S4AjNxnfph0KUM0o5X/jDpjA7NndqzsanXunCTbr1gC0NKgoSzIfb5FtAVlGocJ+YWMrQYAfZ5EQyPVHTI0oW5V2T4jV7dATMpSXFBJ9Rp7PH02d0rtETqUF0b6Yzd8j2eNG82MXrU9yeshDY6xAD2PK0IQ2iMIXVTvohvMwvXKq7AiGiBI7RGUb+yWlkaYNBbz4L78d98li8+AT1wyfjSS06oa+UeAqFY3ADccuHzX1ZyUzlghNQCEu3mrLW2cIaQFftP+h3QfT0nRI7X7/3qeBiMD7VjhZfSVJwrY6DIdtrax4cUmqVrY1qxnbtmygGasXfC1c7vN/mrMPw+GLHjEaC8hRSQFs3WCV6uGu+LJ9Du3STlQKWEM/BhBU2oSGqaJkeI85I3JypXY=&lt;/keystoreFile&gt;
                    &lt;key-alg&gt;RSA&lt;/key-alg&gt;
                    &lt;keysize&gt;1024&lt;/keysize&gt;
                &lt;/odl-keystore&gt;
                &lt;cipher-suites&gt;
                    &lt;suiteName/&gt;
                &lt;/cipher-suites&gt;
                &lt;trust-keystore&gt;
                    &lt;keystoreFile&gt;CwWGOgKD82i1gQRzdbP9jw5KRmuyni/H2XVsTcoJvqo8Gw5sBv9S7MPdfC8Ey5w0ERj70l1baW6SoxGbO2hfKQ==&lt;/keystoreFile&gt;
                    &lt;store-password&gt;CwWGOgKD82i1gQRzdbP9j6X21ePQ7B2NsEEpHtEh2FY13wcfZiComYctBEY=&lt;/store-password&gt;
                    &lt;name&gt;truststore.jks&lt;/name&gt;
                &lt;/trust-keystore&gt;
            &lt;/ssl-data&gt;
        &lt;/key-stores&gt;
        &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
            &lt;car-entry&gt;
                &lt;id&gt;REPLACE&lt;/id&gt;
                &lt;model&gt;Panda&lt;/model&gt;
                &lt;year&gt;2003&lt;/year&gt;
                &lt;manufacturer&gt;FIAT&lt;/manufacturer&gt;
            &lt;/car-entry&gt;
        &lt;/cars&gt;
        &lt;odl-bmp-monitors xmlns="urn:opendaylight:params:xml:ns:yang:bmp-monitor-config"&gt;
            &lt;bmp-monitor-config&gt;
                &lt;monitor-id&gt;example-bmp-monitor&lt;/monitor-id&gt;
                &lt;server&gt;
                    &lt;binding-port&gt;12345&lt;/binding-port&gt;
                    &lt;binding-address&gt;0.0.0.0&lt;/binding-address&gt;
                &lt;/server&gt;
            &lt;/bmp-monitor-config&gt;
        &lt;/odl-bmp-monitors&gt;
        &lt;aaa-encrypt-service-config xmlns="config:aaa:authn:encrypt:service:config"&gt;
            &lt;encrypt-type&gt;AES&lt;/encrypt-type&gt;
            &lt;encrypt-key-length&gt;128&lt;/encrypt-key-length&gt;
            &lt;password-length&gt;12&lt;/password-length&gt;
            &lt;cipher-transforms&gt;AES/GCM/NoPadding&lt;/cipher-transforms&gt;
            &lt;encrypt-key&gt;DYmlnajBzTZj&lt;/encrypt-key&gt;
            &lt;encrypt-salt&gt;CwWGOgKD82i1gQRzdbP9jw==&lt;/encrypt-salt&gt;
            &lt;auth-tag-length&gt;128&lt;/auth-tag-length&gt;
            &lt;encrypt-method&gt;PBKDF2WithHmacSHA1&lt;/encrypt-method&gt;
            &lt;encrypt-iteration-count&gt;32768&lt;/encrypt-iteration-count&gt;
        &lt;/aaa-encrypt-service-config&gt;
        &lt;routing-policy xmlns="http://openconfig.net/yang/routing-policy"&gt;
            &lt;defined-sets&gt;
                &lt;bgp-defined-sets xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                    &lt;role-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-internal&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ibgp&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;all&lt;/role-set-name&gt;
                            &lt;role&gt;internal&lt;/role&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;only-ebgp&lt;/role-set-name&gt;
                            &lt;role&gt;ebgp&lt;/role&gt;
                        &lt;/role-set&gt;
                        &lt;role-set&gt;
                            &lt;role-set-name&gt;ibgp-rr-client&lt;/role-set-name&gt;
                            &lt;role&gt;ibgp&lt;/role&gt;
                            &lt;role&gt;rr-client&lt;/role&gt;
                        &lt;/role-set&gt;
                    &lt;/role-sets&gt;
                    &lt;originator-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;originator-id-set&gt;
                            &lt;originator-id-set-name&gt;local-originator-id&lt;/originator-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/originator-id-set&gt;
                    &lt;/originator-id-sets&gt;
                    &lt;cluster-id-sets xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                        &lt;cluster-id-set&gt;
                            &lt;cluster-id-set-name&gt;local-cluster-id&lt;/cluster-id-set-name&gt;
                            &lt;local/&gt;
                        &lt;/cluster-id-set&gt;
                    &lt;/cluster-id-sets&gt;
                &lt;/bgp-defined-sets&gt;
            &lt;/defined-sets&gt;
            &lt;policy-definitions&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-export-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-odl-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;to-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="all"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-odl-internal-to-internal-or-rr-client&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-internal"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-rr-client-to-internal&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ibgp"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-reflector&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-cluster-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-not-in xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy" xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-not-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-internal-or-rr-client-to-route-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;bgp-actions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;set-originator-id-prepend xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                    &lt;set-next-hop&gt;SELF&lt;/set-next-hop&gt;
                                &lt;/bgp-actions&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions"&gt;x:ROUTE-TARGET-CONSTRAIN&lt;/afi-safi-in&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="ibgp-rr-client"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                        &lt;to-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-rr-client"]&lt;/role-set&gt;
                                        &lt;/to-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;vpn-membership-RTC&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV6-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;afi-safi-in xmlns:x="http://openconfig.net/yang/bgp-types"&gt;x:L3VPN-IPV4-UNICAST&lt;/afi-safi-in&gt;
                                    &lt;vpn-non-member xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"/&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
                &lt;policy-definition&gt;
                    &lt;name&gt;default-odl-import-policy&lt;/name&gt;
                    &lt;statements&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;reject-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                        &lt;statement&gt;
                            &lt;name&gt;from-non-external&lt;/name&gt;
                            &lt;actions&gt;
                                &lt;accept-route/&gt;
                            &lt;/actions&gt;
                            &lt;conditions&gt;
                                &lt;bgp-conditions xmlns="http://openconfig.net/yang/bgp-policy"&gt;
                                    &lt;match-role-set xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;from-role&gt;
                                            &lt;role-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/role-sets/role-set[role-set-name="only-ebgp"]&lt;/role-set&gt;
                                            &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                        &lt;/from-role&gt;
                                    &lt;/match-role-set&gt;
                                    &lt;match-cluster-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;cluster-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/cluster-id-sets/cluster-id-set[cluster-set-name="local-cluster-id"]&lt;/cluster-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-cluster-id-set-condition&gt;
                                    &lt;match-originator-id-set-condition xmlns="urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy"&gt;
                                        &lt;originator-id-set&gt;/rpol:routing-policy/rpol:defined-sets/bgppol:bgp-defined-sets/originator-id-sets/originator-id-set[originator-set-name="local-originator-id"]&lt;/originator-id-set&gt;
                                        &lt;match-set-options&gt;INVERT&lt;/match-set-options&gt;
                                    &lt;/match-originator-id-set-condition&gt;
                                &lt;/bgp-conditions&gt;
                            &lt;/conditions&gt;
                        &lt;/statement&gt;
                    &lt;/statements&gt;
                &lt;/policy-definition&gt;
            &lt;/policy-definitions&gt;
        &lt;/routing-policy&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-default-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6653&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
        &lt;switch-connection-config xmlns="urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config"&gt;
            &lt;instance-name&gt;openflow-switch-connection-provider-legacy-impl&lt;/instance-name&gt;
            &lt;group-add-mod-enabled&gt;false&lt;/group-add-mod-enabled&gt;
            &lt;tls&gt;
                &lt;truststore-path-type&gt;PATH&lt;/truststore-path-type&gt;
                &lt;keystore-path-type&gt;PATH&lt;/keystore-path-type&gt;
                &lt;keystore-password&gt;opendaylight&lt;/keystore-password&gt;
                &lt;truststore-type&gt;JKS&lt;/truststore-type&gt;
                &lt;keystore&gt;configuration/ssl/ctl.jks&lt;/keystore&gt;
                &lt;truststore&gt;configuration/ssl/truststore.jks&lt;/truststore&gt;
                &lt;certificate-password&gt;opendaylight&lt;/certificate-password&gt;
                &lt;keystore-type&gt;JKS&lt;/keystore-type&gt;
                &lt;truststore-password&gt;opendaylight&lt;/truststore-password&gt;
                &lt;cipher-suites/&gt;
            &lt;/tls&gt;
            &lt;port&gt;6633&lt;/port&gt;
            &lt;transport-protocol&gt;TCP&lt;/transport-protocol&gt;
            &lt;channel-outbound-queue-size&gt;1024&lt;/channel-outbound-queue-size&gt;
        &lt;/switch-connection-config&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:41.667110" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="72"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:41.215445" elapsed="0.451695"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:41.667197" elapsed="0.000042"/>
</return>
<msg time="2026-04-05T00:35:41.667373" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="72"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:41.210568" elapsed="0.456834"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:41.667465" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:41.667611" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="72"&gt;
    &lt;data&gt;
        &lt;people xmlns="urn:opendaylight:params:xml:ns...</msg>
<var>${reply}</var>
<arg>merge-multiple-replace-check</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:41.209106" elapsed="0.458533"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;REPLACE&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.667800" elapsed="0.000391"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;manufacturer&gt;FIAT&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.668337" elapsed="0.000306"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;model&gt;Panda&lt;/model&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.668785" elapsed="0.000280"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;year&gt;2003&lt;/year&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.669207" elapsed="0.000298"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;REPLACE&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.669647" elapsed="0.000278"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;TOY001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.670067" elapsed="0.000287"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.670508" elapsed="0.000284"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;TOY001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.670932" elapsed="0.000283"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST001&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.671353" elapsed="0.000297"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;OLD001&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.671791" elapsed="0.000294"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUST002&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.672225" elapsed="0.000306"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;OLD001&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.672672" elapsed="0.000286"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUST002&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.673097" elapsed="0.000277"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.673529" elapsed="0.000281"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.673947" elapsed="0.000276"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.674361" elapsed="0.000304"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.674804" elapsed="0.000278"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CARYOUNG&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.675221" elapsed="0.000300"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTYOUNG&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.675661" elapsed="0.000281"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARYOUNG&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.676127" elapsed="0.000307"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTYOUNG&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.676576" elapsed="0.000275"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CARMID&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.676989" elapsed="0.000282"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTMID&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.677409" elapsed="0.000291"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CARMID&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.677838" elapsed="0.000279"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTMID&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.678293" elapsed="0.000300"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CAROLD2&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.678734" elapsed="0.000282"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTOLD2&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.679156" elapsed="0.000289"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;car-id&gt;CAROLD2&lt;/car-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.679586" elapsed="0.000284"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;person-id&gt;CUSTOLD2&lt;/person-id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.680008" elapsed="0.000293"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;CUSTBAD&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.680454" elapsed="0.000289"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${reply}</arg>
<arg>&lt;id&gt;test&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:35:41.680882" elapsed="0.000288"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.682582" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.682183" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.682163" elapsed="0.000506"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:41.682804" elapsed="0.000315"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.687771" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:41.687345" elapsed="0.000454"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:41.688061" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-05T00:35:41.687876" elapsed="0.000245"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.687858" elapsed="0.000287"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.688281" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.688450" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.688607" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.688756" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.688904" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.689053" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.689198" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:41.687055" elapsed="0.002218"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:41.681971" elapsed="0.007352"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:41.681454" elapsed="0.007909"/>
</kw>
<doc>Check that the new content is there and the old content is gone.</doc>
<status status="PASS" start="2026-04-05T00:35:41.119564" elapsed="0.569837"/>
</test>
<test id="s1-s3-s1-t41" name="Remove_Test_Data" line="278">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:41.692497" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:41.692232" elapsed="0.000525"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.693704" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.693597" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.693578" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.698143" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.698039" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.698022" elapsed="0.000237"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.699374" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:41.698956" elapsed="0.000444"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.699861" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:41.699566" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:41.699930" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:41.700140" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:41.698491" elapsed="0.001675"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.706315" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.706205" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.706185" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.707618" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.707512" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.707493" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:41.708228" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:41.707818" elapsed="0.000437"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.708670" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:41.708403" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.742325" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.709217" elapsed="0.033504"/>
</kw>
<msg time="2026-04-05T00:35:41.743105" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:41.743209" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.708840" elapsed="0.034450"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.761225" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "m "o "v "e "_ "T "e "s "t "_ "D "a "t "a "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:41.744681" elapsed="0.016716"/>
</kw>
<msg time="2026-04-05T00:35:41.761584" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:41.761629" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "m "o "v "e "_ "T "e "s "t "_ "D "a "t "a "[...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.743760" elapsed="0.017906"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.761954" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.761744" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.761723" elapsed="0.000331"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.762590" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "m "o "v "e "_ "T "e "s "t "_ "D "a "t "a "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:41.762186" elapsed="0.000470"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.762922" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.762722" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.762704" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:41.763054" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:41.765929" elapsed="0.000149"/>
</kw>
<msg time="2026-04-05T00:35:41.766150" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:41.765263" elapsed="0.000987"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.767102" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.767931" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:41.763893" elapsed="0.004152"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:41.763308" elapsed="0.004879"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:41.707187" elapsed="0.061099"/>
</kw>
<msg time="2026-04-05T00:35:41.768376" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:41.768435" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "m "o "v "e "_ "T "e "s "t "_ "D "a "t "a "[...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.706538" elapsed="0.061936"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:41.768660" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:41.768552" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.768533" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.769125" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.769457" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.769530" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:41.705861" elapsed="0.063777"/>
</kw>
<msg time="2026-04-05T00:35:41.769730" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:41.769773" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "m "o "v "e "_ "T "e "s "t "_ "D "a "t "a "[...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.700544" elapsed="0.069265"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.770120" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.769884" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.769866" elapsed="0.000331"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:41.700397" elapsed="0.069823"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:41.700221" elapsed="0.070030"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:41.697687" elapsed="0.072618"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:41.693295" elapsed="0.077065"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.692892" elapsed="0.077511"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:41.690224" elapsed="0.080264"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:41.772063" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-remove-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-remove-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:41.772262" level="INFO">${data} = &lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operati...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:41.771841" elapsed="0.000451"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:41.772340" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:41.772506" level="INFO">${request} = &lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operati...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:41.771225" elapsed="0.001309"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.775783" level="INFO">&lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.773259" elapsed="0.002583"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.776366" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.775984" elapsed="0.000433"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.782776" level="INFO">&lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operation&gt;none&lt;/default-operation&gt;
    &lt;config xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car" a:operation="remove"&gt;
    &lt;/cars&gt;
    &lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people" a:operation="remove"&gt;
    &lt;/people&gt;
    &lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people" a:operation="remove"&gt;
    &lt;/car-people&gt;
    &lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:41.776617" elapsed="0.006229"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:41.772970" elapsed="0.009933"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.784784" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:41.784874" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:41.783041" elapsed="0.001859"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:41.784946" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:41.785093" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:41.772681" elapsed="0.012439"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:41.785163" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:41.785303" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:41.770937" elapsed="0.014393"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:41.786290" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-remove-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-remove-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:41.786417" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:41.786080" elapsed="0.000381"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:41.786508" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:41.786655" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:41.785780" elapsed="0.000901"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:41.786724" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:41.786865" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:41.785487" elapsed="0.001404"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:41.787233" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:41.787033" elapsed="0.000229"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:41.787647" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:41.787408" elapsed="0.000268"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:41.787823" elapsed="0.000485"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:41.788363" elapsed="0.000029"/>
</return>
<arg>merge-multiple-remove</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:41.770659" elapsed="0.017842"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.789689" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.789305" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.789285" elapsed="0.000491"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:41.789907" elapsed="0.000313"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.795077" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:41.794670" elapsed="0.000435"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:41.795322" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:41.795180" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.795161" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.795559" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.795717" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.795877" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.796028" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.796200" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.796352" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.796518" elapsed="0.000021"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:41.794366" elapsed="0.002230"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:41.789092" elapsed="0.007554"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:41.788745" elapsed="0.007941"/>
</kw>
<doc>Remove the testing elements and all their subelements and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:41.689705" elapsed="0.107020"/>
</test>
<test id="s1-s3-s1-t42" name="Commit_Test_Data_Removal" line="282">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:41.799665" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:41.799399" elapsed="0.000531"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.800911" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.800803" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.800784" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.805382" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.805277" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.805259" elapsed="0.000208"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.806409" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:41.806032" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.806893" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:41.806599" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:41.806963" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:41.807115" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:41.805676" elapsed="0.001463"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.812372" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.812264" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.812245" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.813645" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.813540" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.813521" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:41.814213" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:41.813842" elapsed="0.000399"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.814687" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:41.814438" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.847323" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.815237" elapsed="0.032276"/>
</kw>
<msg time="2026-04-05T00:35:41.847684" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:41.847729" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.814860" elapsed="0.032907"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.867480" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "T "e "s "t "_ "D "a "t "a "_ "R "e "m "o "v "a "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:41.848333" elapsed="0.019320"/>
</kw>
<msg time="2026-04-05T00:35:41.867825" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:41.867870" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "T "e "s "t "_ "D "a "t "a "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.847925" elapsed="0.019982"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.868206" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.867985" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.867965" elapsed="0.000342"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.868832" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "T "e "s "t "_ "D "a "t "a "_ "R "e "m "o "v "a "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:41.868456" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.869167" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.868967" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.868948" elapsed="0.000316"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:41.869296" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:41.872083" elapsed="0.000173"/>
</kw>
<msg time="2026-04-05T00:35:41.872327" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:41.871457" elapsed="0.000983"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.873215" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.874047" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:41.870113" elapsed="0.004048"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:41.869554" elapsed="0.004721"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:41.813212" elapsed="0.061163"/>
</kw>
<msg time="2026-04-05T00:35:41.874490" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:41.874535" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "T "e "s "t "_ "D "a "t "a "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.812599" elapsed="0.061973"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:41.874757" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:41.874650" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.874631" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.875213" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.875568" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.875640" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:41.811910" elapsed="0.063873"/>
</kw>
<msg time="2026-04-05T00:35:41.875882" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:41.875925" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "T "e "s "t "_ "D "a "t "a "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.807504" elapsed="0.068458"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.876301" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.876038" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.876020" elapsed="0.000360"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:41.807359" elapsed="0.069045"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:41.807192" elapsed="0.069255"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:41.804925" elapsed="0.071577"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:41.800519" elapsed="0.076037"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.800064" elapsed="0.076536"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:41.797469" elapsed="0.079181"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:41.878096" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-remove-commit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-remove-commit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:41.878238" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:41.877685" elapsed="0.000581"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:41.878313" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:41.878478" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:41.877369" elapsed="0.001136"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.880953" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.879226" elapsed="0.001786"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.881480" level="INFO">&lt;commit/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.881155" elapsed="0.000378"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.882152" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:41.881669" elapsed="0.000536"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:41.878935" elapsed="0.003327"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.888281" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:41.888373" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:41.882397" elapsed="0.006003"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:41.888466" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:35:41.888617" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:41.878648" elapsed="0.009997"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:41.888687" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:41.888827" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:41.877085" elapsed="0.011771"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:41.889815" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-remove-commit-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/merge-multiple-remove-commit-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:41.889944" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:41.889605" elapsed="0.000367"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:41.890051" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:41.890200" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:41.889282" elapsed="0.000944"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:41.890269" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:41.890412" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:41.888993" elapsed="0.001463"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:41.890795" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:41.890599" elapsed="0.000224"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:41.891183" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:41.890966" elapsed="0.000246"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:41.891353" elapsed="0.000415"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:41.891821" elapsed="0.000028"/>
</return>
<arg>merge-multiple-remove-commit</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:41.876811" elapsed="0.015132"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.893139" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.892775" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.892757" elapsed="0.000469"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:41.893355" elapsed="0.000328"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.898440" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:41.898026" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:41.898685" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:41.898545" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.898527" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.898898" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.899054" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.899207" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.899355" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.899521" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.899672" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.899825" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:41.897736" elapsed="0.002164"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:41.892565" elapsed="0.007384"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:41.892184" elapsed="0.007806"/>
</kw>
<doc>Commit the removal and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:41.796987" elapsed="0.103040"/>
</test>
<test id="s1-s3-s1-t43" name="Connector_Simplified_Pattern" line="286">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:41.903088" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:41.902802" elapsed="0.000549"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.904327" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.904190" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.904172" elapsed="0.000224"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.908739" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.908635" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.908617" elapsed="0.000188"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.909760" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:41.909366" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.910224" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:41.909932" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:41.910294" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:41.910462" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:41.909011" elapsed="0.001477"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.917229" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.917122" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.917103" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.918480" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:41.918353" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.918335" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:41.919032" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:41.918678" elapsed="0.000381"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.919462" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:41.919201" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.956992" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.920006" elapsed="0.037167"/>
</kw>
<msg time="2026-04-05T00:35:41.957349" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:41.957396" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.919634" elapsed="0.037834"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.978933" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "n "n "e "c "t "o "r "_ "S "i "m "p "l "i "f "i "e "d "_ "P "a "t "t "e "r "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:41.958027" elapsed="0.021085"/>
</kw>
<msg time="2026-04-05T00:35:41.979281" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:41.979326" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "n "n "e "c "t "o "r "_ "S "i "m "p "l "i "f ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.957634" elapsed="0.021728"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.979677" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.979468" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.979445" elapsed="0.000331"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:41.980272" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "n "n "e "c "t "o "r "_ "S "i "m "p "l "i "f "i "e "d "_ "P "a "t "t "e "r "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:41.979905" elapsed="0.000465"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.980660" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.980457" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.980437" elapsed="0.000358"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:41.980828" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:41.983611" elapsed="0.000147"/>
</kw>
<msg time="2026-04-05T00:35:41.983827" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:41.982963" elapsed="0.000960"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.984740" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.985558" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:41.981644" elapsed="0.004027"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:41.981066" elapsed="0.004718"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:41.918056" elapsed="0.067825"/>
</kw>
<msg time="2026-04-05T00:35:41.985971" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:41.986013" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "n "n "e "c "t "o "r "_ "S "i "m "p "l "i "f ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.917450" elapsed="0.068599"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:41.986229" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:41.986124" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.986106" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.986692" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.987004" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:41.987073" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:41.916781" elapsed="0.070399"/>
</kw>
<msg time="2026-04-05T00:35:41.987271" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:41.987313" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "n "n "e "c "t "o "r "_ "S "i "m "p "l "i "f ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.910835" elapsed="0.076514"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:41.987690" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:41.987453" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:41.987405" elapsed="0.000362"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:41.910706" elapsed="0.077083"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:41.910539" elapsed="0.077278"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:41.908267" elapsed="0.079600"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:41.903909" elapsed="0.084012"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:41.903502" elapsed="0.084462"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:41.900867" elapsed="0.087147"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:41.989499" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/none-replace-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/none-replace-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:41.989692" level="INFO">${data} = &lt;rpc message-id="m-1" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;edit-config&gt;
        &lt;target&gt;
            &lt;candidate/&gt;
        &lt;/target&gt;
        &lt;default-operation&gt;none&lt;/default-ope...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:41.989079" elapsed="0.000642"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:41.989769" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:41.989920" level="INFO">${request} = &lt;rpc message-id="m-1" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;edit-config&gt;
        &lt;target&gt;
            &lt;candidate/&gt;
        &lt;/target&gt;
        &lt;default-operation&gt;none&lt;/default-ope...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:41.988775" elapsed="0.001203"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.992498" level="INFO">&lt;rpc message-id="m-1" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.990720" elapsed="0.001835"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.993165" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:41.992696" elapsed="0.000520"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.997998" level="INFO">&lt;target&gt;
            &lt;candidate/&gt;
        &lt;/target&gt;
        &lt;default-operation&gt;none&lt;/default-operation&gt;
        &lt;config&gt;
            &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"
                    xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0" a:operation="replace"&gt;
                &lt;car-entry&gt;
                    &lt;id&gt;connector&lt;/id&gt;
                &lt;/car-entry&gt;
            &lt;/cars&gt;
        &lt;/config&gt;
    &lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:41.993399" elapsed="0.004661"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:41.990410" elapsed="0.007706"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:41.999936" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-1"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:42.000023" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-1"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:41.998254" elapsed="0.001797"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.000096" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.000244" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-1"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:41.990124" elapsed="0.010147"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.000337" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.000499" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-1"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:41.988488" elapsed="0.012039"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.001475" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/none-replace-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/none-replace-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.001601" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-1"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.001253" elapsed="0.000375"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.001673" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:42.001817" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-1"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.000954" elapsed="0.000889"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.001886" elapsed="0.000024"/>
</return>
<msg time="2026-04-05T00:35:42.002026" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-1"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.000663" elapsed="0.001389"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:42.002383" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-1"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.002190" elapsed="0.000222"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:42.002785" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-1"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:42.002569" elapsed="0.000245"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.002954" elapsed="0.000390"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:42.003396" elapsed="0.000043"/>
</return>
<arg>none-replace</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:41.988169" elapsed="0.015365"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.004771" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.004925" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.004562" elapsed="0.000391"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.004999" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.005144" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.004233" elapsed="0.000937"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.007453" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.005900" elapsed="0.001611"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.007962" level="INFO">&lt;commit/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.007652" elapsed="0.000361"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.009569" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.008151" elapsed="0.001490"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:42.005611" elapsed="0.004106"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.014699" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:42.014793" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.009870" elapsed="0.004951"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.014867" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:35:42.015024" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.005309" elapsed="0.009743"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.015097" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:42.015244" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.003953" elapsed="0.011320"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.016256" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.016439" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.016046" elapsed="0.000422"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.016513" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:42.016662" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.015736" elapsed="0.000952"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.016730" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:42.016873" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.015416" elapsed="0.001483"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:42.017238" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.017040" elapsed="0.000226"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:42.017642" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:42.017408" elapsed="0.000262"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.017812" elapsed="0.000395"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:42.018259" elapsed="0.000027"/>
</return>
<arg>commit-edit</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:42.003689" elapsed="0.014691"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.019641" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.019833" level="INFO">${data} = &lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operati...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.019413" elapsed="0.000449"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.019908" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.020054" level="INFO">${request} = &lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operati...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.019111" elapsed="0.000970"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.022853" level="INFO">&lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.020870" elapsed="0.002040"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.023395" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.023052" elapsed="0.000409"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.029619" level="INFO">&lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operation&gt;none&lt;/default-operation&gt;
    &lt;config xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car" a:operation="remove"&gt;
    &lt;/cars&gt;
    &lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people" a:operation="remove"&gt;
    &lt;/people&gt;
    &lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people" a:operation="remove"&gt;
    &lt;/car-people&gt;
    &lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.023601" elapsed="0.006083"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:42.020581" elapsed="0.009161"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.031536" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:42.031624" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.029881" elapsed="0.001771"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.031697" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:42.031847" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.020223" elapsed="0.011651"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.031916" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:42.032056" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.018827" elapsed="0.013256"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.033107" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.033228" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.032884" elapsed="0.000371"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.033301" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.033464" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.032559" elapsed="0.000932"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.033534" elapsed="0.000224"/>
</return>
<msg time="2026-04-05T00:35:42.033882" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.032220" elapsed="0.001688"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:42.034241" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.034047" elapsed="0.000222"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:42.034644" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:42.034410" elapsed="0.000262"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.034814" elapsed="0.000432"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:42.035298" elapsed="0.000028"/>
</return>
<arg>delete</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:42.018554" elapsed="0.016879"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.036674" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.036795" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.036462" elapsed="0.000359"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.036867" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.037012" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.036141" elapsed="0.000897"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.039322" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.037766" elapsed="0.001613"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.039851" level="INFO">&lt;commit/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.039540" elapsed="0.000361"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.040494" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.040036" elapsed="0.000512"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:42.037476" elapsed="0.003126"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.046081" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:42.046172" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.040739" elapsed="0.005460"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.046245" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:42.046394" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.037177" elapsed="0.009257"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.046479" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:42.046624" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.035861" elapsed="0.010790"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.047593" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.047715" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.047371" elapsed="0.000371"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.047786" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:35:42.047936" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.047072" elapsed="0.000890"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.048003" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:42.048144" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.046785" elapsed="0.001385"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:42.048546" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.048308" elapsed="0.000266"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:42.048928" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:42.048715" elapsed="0.000241"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.049097" elapsed="0.000446"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:42.049596" elapsed="0.000027"/>
</return>
<arg>commit-edit</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:42.035592" elapsed="0.014125"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.051067" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.050700" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.050499" elapsed="0.000655"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:42.051287" elapsed="0.000332"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.056196" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:42.055801" elapsed="0.000422"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:42.056477" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:42.056297" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.056279" elapsed="0.000280"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.056693" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.056866" elapsed="0.000025"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.057044" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.057194" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.057345" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.057510" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.057660" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.055512" elapsed="0.002223"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:42.050294" elapsed="0.007492"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:42.049957" elapsed="0.007874"/>
</kw>
<doc>Several requests in a (simplified) pattern typical for requests from netconf-connector.</doc>
<status status="PASS" start="2026-04-05T00:35:41.900302" elapsed="0.157565"/>
</test>
<test id="s1-s3-s1-t44" name="Test_Bug_7791" line="293">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:42.060900" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:42.060656" elapsed="0.000503"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.062109" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.062002" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.061984" elapsed="0.000192"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.067374" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.067260" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.067241" elapsed="0.000223"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.068485" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:42.068057" elapsed="0.000455"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.068964" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:42.068662" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:42.069033" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.069184" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:42.067692" elapsed="0.001516"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.074510" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.074387" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.074368" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.075754" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.075650" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.075632" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:42.076309" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.075958" elapsed="0.000378"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.076785" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:42.076537" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.109080" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.077330" elapsed="0.031914"/>
</kw>
<msg time="2026-04-05T00:35:42.109412" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:42.109555" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.076958" elapsed="0.032635"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.128862" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "T "e "s "t "_ "B "u "g "_ "7 "7 "9 "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:42.110129" elapsed="0.018902"/>
</kw>
<msg time="2026-04-05T00:35:42.129196" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:42.129241" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "T "e "s "t "_ "B "u "g "_ "7 "7 "9 "1 "[K"
[?1l&gt;[?...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.109750" elapsed="0.019528"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.129589" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.129355" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.129335" elapsed="0.000355"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.130189" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "T "e "s "t "_ "B "u "g "_ "7 "7 "9 "1 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:42.129820" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.130533" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.130318" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.130299" elapsed="0.000333"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:42.130665" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:42.133444" elapsed="0.000147"/>
</kw>
<msg time="2026-04-05T00:35:42.133661" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:42.132830" elapsed="0.000927"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.134551" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.135350" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:42.131478" elapsed="0.004002"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:42.130905" elapsed="0.004688"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:42.075332" elapsed="0.060360"/>
</kw>
<msg time="2026-04-05T00:35:42.135788" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:42.135868" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "T "e "s "t "_ "B "u "g "_ "7 "7 "9 "1 "[K"
[?1l&gt;[?...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.074717" elapsed="0.061192"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:42.136091" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:42.135985" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.135967" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.136575" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.136893" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.136964" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:42.074050" elapsed="0.063020"/>
</kw>
<msg time="2026-04-05T00:35:42.137162" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:42.137204" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "T "e "s "t "_ "B "u "g "_ "7 "7 "9 "1 "[K"
[?1l&gt;[?...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.069648" elapsed="0.067594"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.137567" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.137318" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.137300" elapsed="0.000345"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:42.069518" elapsed="0.068150"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:42.069331" elapsed="0.068365"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:42.066769" elapsed="0.070980"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:42.061721" elapsed="0.076080"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.061293" elapsed="0.076551"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:42.058696" elapsed="0.079199"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.139348" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/bug7791-1-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/bug7791-1-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.139535" level="INFO">${data} = &lt;rpc message-id="m-2" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;edit-config&gt;
        &lt;target&gt;
            &lt;candidate/&gt;
        &lt;/target&gt;
        &lt;default-operation&gt;none&lt;/default-ope...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.138945" elapsed="0.000620"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.139611" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.139757" level="INFO">${request} = &lt;rpc message-id="m-2" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;edit-config&gt;
        &lt;target&gt;
            &lt;candidate/&gt;
        &lt;/target&gt;
        &lt;default-operation&gt;none&lt;/default-ope...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.138642" elapsed="0.001142"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.142683" level="INFO">&lt;rpc message-id="m-2" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.140567" elapsed="0.002175"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.143275" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.142890" elapsed="0.000435"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.147462" level="INFO">&lt;target&gt;
            &lt;candidate/&gt;
        &lt;/target&gt;
        &lt;default-operation&gt;none&lt;/default-operation&gt;
        &lt;config&gt;
            &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car" xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0" a:operation="replace"&gt;
            &lt;/cars&gt;
        &lt;/config&gt;
    &lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.143480" elapsed="0.004043"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:42.140213" elapsed="0.007368"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.149504" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-2"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:42.149629" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-2"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.147719" elapsed="0.001939"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.149703" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:42.149851" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-2"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.139926" elapsed="0.009953"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.149921" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:42.150061" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-2"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.138327" elapsed="0.011761"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.151037" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/bug7791-1-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/bug7791-1-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.151163" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-2"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.150832" elapsed="0.000359"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.151236" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.151383" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-2"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.150531" elapsed="0.000878"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.151469" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:42.151614" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-2"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.150226" elapsed="0.001414"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:42.151979" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-2"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.151778" elapsed="0.000229"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:42.152364" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-2"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:42.152147" elapsed="0.000246"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.152561" elapsed="0.000405"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:42.153020" elapsed="0.000027"/>
</return>
<arg>bug7791-1</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:42.138053" elapsed="0.015088"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.154371" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/bug7791-2-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/bug7791-2-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.154514" level="INFO">${data} = &lt;rpc message-id="m-3" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;edit-config&gt;
        &lt;target&gt;
            &lt;candidate/&gt;
        &lt;/target&gt;
        &lt;default-operation&gt;none&lt;/default-ope...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.154164" elapsed="0.000379"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.154588" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:35:42.154733" level="INFO">${request} = &lt;rpc message-id="m-3" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;edit-config&gt;
        &lt;target&gt;
            &lt;candidate/&gt;
        &lt;/target&gt;
        &lt;default-operation&gt;none&lt;/default-ope...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.153868" elapsed="0.000892"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.157222" level="INFO">&lt;rpc message-id="m-3" a="64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.155497" elapsed="0.001784"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.157824" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.157444" elapsed="0.000430"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.162742" level="INFO">&lt;target&gt;
            &lt;candidate/&gt;
        &lt;/target&gt;
        &lt;default-operation&gt;none&lt;/default-operation&gt;
        &lt;config&gt;
            &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
                &lt;car-entry xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0" a:operation="replace"&gt;
                    &lt;id&gt;bug7791&lt;/id&gt;
                &lt;/car-entry&gt;
            &lt;/cars&gt;
        &lt;/config&gt;
    &lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.158009" elapsed="0.004831"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:42.155190" elapsed="0.007731"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.164829" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-3"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:42.164918" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-3"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.163060" elapsed="0.001885"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.164989" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:42.165137" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-3"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.154903" elapsed="0.010262"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.165207" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:42.165345" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-3"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.153585" elapsed="0.011788"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.166324" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/bug7791-2-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/bug7791-2-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.166470" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-3"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.166116" elapsed="0.000383"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.166544" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.166693" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-3"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.165811" elapsed="0.000908"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.166761" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:42.166904" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-3"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.165524" elapsed="0.001406"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:42.167260" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-3"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.167069" elapsed="0.000220"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:42.167660" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" a="64" message-id="m-3"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:42.167446" elapsed="0.000243"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.167833" elapsed="0.000387"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:42.168272" elapsed="0.000027"/>
</return>
<arg>bug7791-2</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:42.153297" elapsed="0.015094"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.169655" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.169776" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.169443" elapsed="0.000360"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.169848" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.169994" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.169128" elapsed="0.000892"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.172644" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.170750" elapsed="0.001952"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.173156" level="INFO">&lt;commit/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.172843" elapsed="0.000364"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.173872" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.173389" elapsed="0.000538"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:42.170459" elapsed="0.003525"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.180295" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:42.180386" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.174121" elapsed="0.006292"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.180498" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:35:42.180650" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.170159" elapsed="0.010519"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.180720" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:42.180860" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.168845" elapsed="0.012043"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.181842" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.181962" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.181633" elapsed="0.000356"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.182034" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.182197" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.181316" elapsed="0.000909"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.182268" elapsed="0.000232"/>
</return>
<msg time="2026-04-05T00:35:42.182626" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.181025" elapsed="0.001628"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:42.182983" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.182792" elapsed="0.000219"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:42.183361" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:42.183151" elapsed="0.000238"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.183544" elapsed="0.000388"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:42.183985" elapsed="0.000028"/>
</return>
<arg>commit-edit</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:42.168575" elapsed="0.015530"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.185368" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.185507" level="INFO">${data} = &lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operati...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.185160" elapsed="0.000375"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.185581" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.185727" level="INFO">${request} = &lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operati...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.184862" elapsed="0.000893"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.188182" level="INFO">&lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.186486" elapsed="0.001751"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.188824" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.188415" elapsed="0.000461"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.194903" level="INFO">&lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operation&gt;none&lt;/default-operation&gt;
    &lt;config xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car" a:operation="remove"&gt;
    &lt;/cars&gt;
    &lt;people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people" a:operation="remove"&gt;
    &lt;/people&gt;
    &lt;car-people xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people" a:operation="remove"&gt;
    &lt;/car-people&gt;
    &lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.189015" elapsed="0.005952"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:42.186180" elapsed="0.008844"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.196807" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:42.196895" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.195159" elapsed="0.001762"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.196967" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.197116" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.185895" elapsed="0.011248"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.197186" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:42.197327" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.184571" elapsed="0.012784"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.198304" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.198439" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.198098" elapsed="0.000370"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.198514" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.198660" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.197800" elapsed="0.000886"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.198728" elapsed="0.000024"/>
</return>
<msg time="2026-04-05T00:35:42.198875" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.197509" elapsed="0.001393"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:42.199233" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.199040" elapsed="0.000222"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:42.199635" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:42.199403" elapsed="0.000260"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.199805" elapsed="0.000390"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:42.200247" elapsed="0.000028"/>
</return>
<arg>delete</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:42.184262" elapsed="0.016107"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.201827" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.201947" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.201618" elapsed="0.000355"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.202019" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.202162" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.201297" elapsed="0.000923"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.204566" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.202967" elapsed="0.001663"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.205086" level="INFO">&lt;commit/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.204773" elapsed="0.000363"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.205753" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.205272" elapsed="0.000534"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:42.202673" elapsed="0.003189"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.212196" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:42.212641" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.205997" elapsed="0.006717"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.212884" elapsed="0.000098"/>
</return>
<msg time="2026-04-05T00:35:42.213219" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.202366" elapsed="0.010895"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.213329" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:35:42.213570" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.200832" elapsed="0.012779"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.215334" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-edit-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.215582" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.214983" elapsed="0.000638"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.215689" elapsed="0.000042"/>
</return>
<msg time="2026-04-05T00:35:42.215929" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.214483" elapsed="0.001490"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.216035" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:35:42.216237" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.213940" elapsed="0.002334"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:42.216812" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.216499" elapsed="0.000354"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:42.217382" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:42.217056" elapsed="0.000385"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.217652" elapsed="0.000698"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:42.218446" elapsed="0.000041"/>
</return>
<arg>commit-edit</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:42.200559" elapsed="0.018069"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.220344" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:42.219723" elapsed="0.000659"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:42.220769" elapsed="0.000045"/>
</return>
<status status="PASS" start="2026-04-05T00:35:42.220553" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.220491" elapsed="0.000422"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.221143" elapsed="0.000022"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.221436" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.221612" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.221773" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.221927" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.222078" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.222232" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.222478" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.222316" elapsed="0.000216"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:35:42.222299" elapsed="0.000256"/>
</if>
<arg>7791</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.219213" elapsed="0.003392"/>
</kw>
<doc>Send (checking replies) series of netconf messages to trigger
https://bugs.opendaylight.org/show_bug.cgi?id=7791</doc>
<status status="PASS" start="2026-04-05T00:35:42.058125" elapsed="0.164529"/>
</test>
<test id="s1-s3-s1-t45" name="Delete_Not_Existing_Element" line="303">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:42.226768" elapsed="0.000244"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:42.226515" elapsed="0.000559"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.228098" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.227988" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.227969" elapsed="0.000199"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.232675" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.232567" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.232549" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.233776" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:42.233325" elapsed="0.000478"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.234248" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:42.233951" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:42.234318" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.234491" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:42.232968" elapsed="0.001548"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.239595" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.239485" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.239466" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.240919" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.240812" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.240794" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:42.241534" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.241119" elapsed="0.000441"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.241972" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:42.241709" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.277728" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.242533" elapsed="0.035383"/>
</kw>
<msg time="2026-04-05T00:35:42.278093" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:42.278190" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.242141" elapsed="0.036088"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.299044" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "e "l "e "t "e "_ "N "o "t "_ "E "x "i "s "t "i "n "g "_ "E "l "e "m "e "n "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:42.278797" elapsed="0.020425"/>
</kw>
<msg time="2026-04-05T00:35:42.299394" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:42.299465" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "e "l "e "t "e "_ "N "o "t "_ "E "x "i "s "t "i ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.278389" elapsed="0.021115"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.299796" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.299583" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.299563" elapsed="0.000336"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.300414" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "e "l "e "t "e "_ "N "o "t "_ "E "x "i "s "t "i "n "g "_ "E "l "e "m "e "n "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:42.300035" elapsed="0.000468"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.300798" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.300571" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.300552" elapsed="0.000347"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:42.300932" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:42.303791" elapsed="0.000145"/>
</kw>
<msg time="2026-04-05T00:35:42.304009" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:42.303166" elapsed="0.000948"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.305067" elapsed="0.000040"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.305908" elapsed="0.000063"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:42.301769" elapsed="0.004283"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:42.301180" elapsed="0.004990"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:42.240481" elapsed="0.065788"/>
</kw>
<msg time="2026-04-05T00:35:42.306360" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:42.306402" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "e "l "e "t "e "_ "N "o "t "_ "E "x "i "s "t "i ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.239802" elapsed="0.066652"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:42.306640" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:42.306533" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.306514" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.307109" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.307519" elapsed="0.000038"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.307612" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:42.239103" elapsed="0.068620"/>
</kw>
<msg time="2026-04-05T00:35:42.307815" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:42.307858" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "D "e "l "e "t "e "_ "N "o "t "_ "E "x "i "s "t "i ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.234902" elapsed="0.072992"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.308248" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.308006" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.307987" elapsed="0.000339"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:42.234768" elapsed="0.073582"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:42.234580" elapsed="0.073802"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:42.232153" elapsed="0.076301"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:42.227677" elapsed="0.080834"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.227222" elapsed="0.081335"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:42.223757" elapsed="0.084863"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.309941" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-not-existing-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-not-existing-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.310090" level="INFO">${data} = &lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operati...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.309727" elapsed="0.000391"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.310164" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.310310" level="INFO">${request} = &lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operati...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.309394" elapsed="0.000944"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.312930" level="INFO">&lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.311083" elapsed="0.001904"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.313486" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.313125" elapsed="0.000414"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.317212" level="INFO">&lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operation&gt;none&lt;/default-operation&gt;
    &lt;config xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
      &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car" a:operation="delete"&gt;
      &lt;/cars&gt;
    &lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.313678" elapsed="0.003600"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:42.310790" elapsed="0.006543"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.321182" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;protocol&lt;/error-type&gt;
        &lt;error-tag&gt;data-missing&lt;/error-tag&gt;
        &lt;error-severity&gt;error&lt;/error-severity&gt;
        &lt;error-message&gt;Data is missing, cannot execute DELETE operation&lt;/error-message&gt;
    &lt;/rpc-error&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:42.321273" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;protocol&lt;/error-type&gt;
      ...</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.317672" elapsed="0.003629"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.321347" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.321521" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;protocol&lt;/error-type&gt;
      ...</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.310499" elapsed="0.011057"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.321600" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:42.321747" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;protocol&lt;/error-type&gt;
      ...</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.309076" elapsed="0.012702"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.324963" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-not-existing-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/delete-not-existing-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.325119" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;rpc-error&gt;
&lt;error-type&gt;protocol&lt;/error-type&gt;
&lt;error-tag&gt;data-missing&lt;...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.324746" elapsed="0.000444"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.325239" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.325391" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;rpc-error&gt;
&lt;error-type&gt;protocol&lt;/error-type&gt;
&lt;error-tag&gt;data-missing&lt;...</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.324406" elapsed="0.001012"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.325480" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:42.325626" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;rpc-error&gt;
&lt;error-type&gt;protocol&lt;/error-type&gt;
&lt;error-tag&gt;data-missing&lt;...</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.321918" elapsed="0.003735"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:42.325993" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;protocol&lt;/error-type&gt;
      ...</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.325794" elapsed="0.000227"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:42.326385" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;rpc-error&gt;
        &lt;error-type&gt;protocol&lt;/error-type&gt;
        ...</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:42.326165" elapsed="0.000249"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.326586" elapsed="0.000475"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:42.327114" elapsed="0.000028"/>
</return>
<arg>delete-not-existing</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:42.308797" elapsed="0.018437"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.328413" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.328046" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.328027" elapsed="0.000488"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:42.328680" elapsed="0.000315"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.333767" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:42.333342" elapsed="0.000452"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:42.334007" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:35:42.333867" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.333849" elapsed="0.000236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.334220" elapsed="0.000020"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.334375" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.334551" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.334700" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.334848" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.334997" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.335144" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.333048" elapsed="0.002170"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:42.327839" elapsed="0.007431"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:42.327498" elapsed="0.007812"/>
</kw>
<doc>Attempt to delete the elements again and check that it fails with the correct error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.223036" elapsed="0.112346"/>
</test>
<test id="s1-s3-s1-t46" name="Commit_Delete_Not_Existing_Module" line="307">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:42.338626" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:42.338362" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.339856" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.339749" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.339730" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.344525" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.344404" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.344387" elapsed="0.000207"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.345581" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:42.345187" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.346044" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:42.345753" elapsed="0.000316"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:42.346113" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.346265" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:42.344828" elapsed="0.001461"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.351279" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.351172" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.351154" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.352539" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.352409" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.352391" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:42.353138" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.352781" elapsed="0.000384"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.353574" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:42.353310" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.389735" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.354154" elapsed="0.035760"/>
</kw>
<msg time="2026-04-05T00:35:42.390085" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:42.390130" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.353747" elapsed="0.036420"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.435058" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "D "e "l "e "t "e "_ "N "o "t "_ "E "x "i "s "t "i "n "g "_ "M "o "d "u "l "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:42.390769" elapsed="0.044475"/>
</kw>
<msg time="2026-04-05T00:35:42.435440" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:42.435496" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "D "e "l "e "t "e "_ "N "o "t ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.390326" elapsed="0.045208"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.435830" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.435615" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.435595" elapsed="0.000337"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.436464" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "D "e "l "e "t "e "_ "N "o "t "_ "E "x "i "s "t "i "n "g "_ "M "o "d "u "l "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:42.436065" elapsed="0.000508"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.436866" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.436643" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.436625" elapsed="0.000344"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:42.437003" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:42.439872" elapsed="0.000164"/>
</kw>
<msg time="2026-04-05T00:35:42.440110" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:42.439199" elapsed="0.001011"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.441483" elapsed="0.000042"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.442473" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:42.437841" elapsed="0.004751"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:42.437249" elapsed="0.005468"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:42.352111" elapsed="0.090709"/>
</kw>
<msg time="2026-04-05T00:35:42.442913" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:42.442958" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "D "e "l "e "t "e "_ "N "o "t ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.351499" elapsed="0.091497"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:42.443191" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:42.443074" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.443055" elapsed="0.000222"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.443678" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.444003" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.444074" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:42.350839" elapsed="0.093343"/>
</kw>
<msg time="2026-04-05T00:35:42.444277" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:42.444321" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "D "e "l "e "t "e "_ "N "o "t ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.346654" elapsed="0.097705"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.444687" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.444449" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.444417" elapsed="0.000421"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:42.346525" elapsed="0.098339"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:42.346340" elapsed="0.098555"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:42.344046" elapsed="0.100906"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:42.339463" elapsed="0.105546"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.339023" elapsed="0.106032"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:42.336190" elapsed="0.108919"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.446528" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-no-transaction-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-no-transaction-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.446675" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.446297" elapsed="0.000406"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.446793" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:42.446944" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.445993" elapsed="0.000978"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.449590" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.447718" elapsed="0.001931"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.450203" level="INFO">&lt;commit/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.449792" elapsed="0.000485"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.451091" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.450505" elapsed="0.000663"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:42.447406" elapsed="0.003845"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.462681" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:42.462777" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.451475" elapsed="0.011329"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.462852" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:42.463002" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.447114" elapsed="0.015916"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.463073" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:42.463214" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.445702" elapsed="0.017540"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.464446" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-no-transaction-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/commit-no-transaction-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.464572" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.464221" elapsed="0.000379"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.464646" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.464832" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.463699" elapsed="0.001161"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.464909" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:42.465053" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.463382" elapsed="0.001697"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:42.465416" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.465219" elapsed="0.000243"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:42.465829" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="10"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:42.465607" elapsed="0.000251"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.466006" elapsed="0.000411"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:42.466488" elapsed="0.000028"/>
</return>
<arg>commit-no-transaction</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:42.445280" elapsed="0.021329"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.467731" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:42.467310" elapsed="0.000448"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:42.467973" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:42.467833" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.467815" elapsed="0.000278"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.468246" elapsed="0.000021"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.468407" elapsed="0.000041"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.468598" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.468774" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.468939" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.469091" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.469240" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.469483" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.469321" elapsed="0.000215"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:35:42.469305" elapsed="0.000254"/>
</if>
<arg>4455</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.466978" elapsed="0.002630"/>
</kw>
<doc>Attempt to commit and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.335661" elapsed="0.133992"/>
</test>
<test id="s1-s3-s1-t47" name="Remove_Not_Existing_Module" line="312">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:42.472867" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:42.472591" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.474078" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.473971" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.473953" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.478726" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.478621" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.478603" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.479756" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:42.479361" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.480225" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:42.479930" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:42.480295" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:42.480463" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:42.479001" elapsed="0.001487"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.485625" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.485517" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.485498" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.486872" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.486760" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.486742" elapsed="0.000198"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:42.487442" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.487069" elapsed="0.000401"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.487883" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:42.487630" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.529674" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.488442" elapsed="0.041479"/>
</kw>
<msg time="2026-04-05T00:35:42.530095" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:42.530141" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.488057" elapsed="0.042122"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.555648" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "m "o "v "e "_ "N "o "t "_ "E "x "i "s "t "i "n "g "_ "M "o "d "u "l "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:42.530760" elapsed="0.025068"/>
</kw>
<msg time="2026-04-05T00:35:42.556002" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:42.556049" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "m "o "v "e "_ "N "o "t "_ "E "x "i "s "t "i ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.530337" elapsed="0.025750"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.556374" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.556165" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.556145" elapsed="0.000357"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.557075" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "m "o "v "e "_ "N "o "t "_ "E "x "i "s "t "i "n "g "_ "M "o "d "u "l "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:42.556634" elapsed="0.000512"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.557456" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.557215" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.557197" elapsed="0.000362"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:42.557592" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:42.560351" elapsed="0.000160"/>
</kw>
<msg time="2026-04-05T00:35:42.560583" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:42.559759" elapsed="0.000923"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.561527" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.562331" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:42.558401" elapsed="0.004117"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:42.557835" elapsed="0.004803"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:42.486461" elapsed="0.076278"/>
</kw>
<msg time="2026-04-05T00:35:42.562833" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:42.562880" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "m "o "v "e "_ "N "o "t "_ "E "x "i "s "t "i ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.485832" elapsed="0.077085"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:42.563273" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:35:42.562993" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.562975" elapsed="0.000385"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.563773" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.564094" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.564165" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:42.485166" elapsed="0.079106"/>
</kw>
<msg time="2026-04-05T00:35:42.564366" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:42.564410" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "R "e "m "o "v "e "_ "N "o "t "_ "E "x "i "s "t "i ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.480880" elapsed="0.083583"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.564876" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.564605" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.564586" elapsed="0.000374"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:42.480711" elapsed="0.084272"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:42.480540" elapsed="0.084473"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:42.478251" elapsed="0.086815"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:42.473687" elapsed="0.091434"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.473265" elapsed="0.091901"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:42.470497" elapsed="0.094720"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.566487" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/remove-not-existing-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/remove-not-existing-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.566637" level="INFO">${data} = &lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operati...</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.566259" elapsed="0.000407"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.566711" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.566860" level="INFO">${request} = &lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
&lt;edit-config&gt;
    &lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operati...</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.565958" elapsed="0.000930"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.569677" level="INFO">&lt;rpc message-id="6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.567762" elapsed="0.001972"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.570210" level="INFO">&lt;edit-config&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.569876" elapsed="0.000385"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.573974" level="INFO">&lt;target&gt;
        &lt;candidate/&gt;
    &lt;/target&gt;
    &lt;test-option&gt;
        set
    &lt;/test-option&gt;
    &lt;default-operation&gt;none&lt;/default-operation&gt;
    &lt;config xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
      &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car" a:operation="remove"&gt;
      &lt;/cars&gt;
    &lt;/config&gt;
&lt;/edit-config&gt;
&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.570400" elapsed="0.003636"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:42.567318" elapsed="0.006776"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.577114" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:42.577205" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.574233" elapsed="0.003000"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.577279" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.577442" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.567029" elapsed="0.010444"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.577516" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:42.577660" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.565670" elapsed="0.012018"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.578652" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/remove-not-existing-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/remove-not-existing-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.578787" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.578440" elapsed="0.000375"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.578895" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:42.579046" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.578119" elapsed="0.000954"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.579115" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:42.579260" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.577826" elapsed="0.001461"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:42.579643" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.579442" elapsed="0.000230"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:42.580037" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:42.579816" elapsed="0.000250"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.580211" elapsed="0.000434"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:42.580699" elapsed="0.000028"/>
</return>
<arg>remove-not-existing</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:42.565378" elapsed="0.015447"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.582278" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.581913" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.581894" elapsed="0.000473"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:42.582516" elapsed="0.000326"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.587460" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:42.587042" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:42.587706" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:42.587565" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.587547" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.587927" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.588087" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.588245" elapsed="0.000022"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.588401" elapsed="0.000033"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.588571" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.588725" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.588918" elapsed="0.000022"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.586748" elapsed="0.002256"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:42.581462" elapsed="0.007594"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:42.581102" elapsed="0.007998"/>
</kw>
<doc>Attempt to remove the "module" element again and check that the operation is "silently ignored".</doc>
<status status="PASS" start="2026-04-05T00:35:42.469919" elapsed="0.119219"/>
</test>
<test id="s1-s3-s1-t48" name="Commit_Remove_Not_Existing_Module" line="316">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:42.592204" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:42.591953" elapsed="0.000531"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.593460" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.593335" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.593316" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.597915" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.597808" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.597790" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.598953" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:42.598572" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.599436" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:42.599126" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:42.599508" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.599662" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:42.598193" elapsed="0.001494"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.604949" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.604791" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.604771" elapsed="0.000255"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.606216" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.606109" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.606090" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:42.606796" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.606416" elapsed="0.000407"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.607212" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:42.606970" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.641823" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.607775" elapsed="0.034217"/>
</kw>
<msg time="2026-04-05T00:35:42.642165" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:42.642211" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.607384" elapsed="0.034864"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.669578" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "R "e "m "o "v "e "_ "N "o "t "_ "E "x "i "s "t "i "n "g "_ "M "o "d "u "l "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:42.642805" elapsed="0.026952"/>
</kw>
<msg time="2026-04-05T00:35:42.669928" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:42.669974" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "R "e "m "o "v "e "_ "N "o "t ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.642407" elapsed="0.027604"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.670298" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.670090" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.670070" elapsed="0.000328"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.670932" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "R "e "m "o "v "e "_ "N "o "t "_ "E "x "i "s "t "i "n "g "_ "M "o "d "u "l "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:42.670555" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.671274" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.671072" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.671053" elapsed="0.000355"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:42.671459" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:42.674276" elapsed="0.000161"/>
</kw>
<msg time="2026-04-05T00:35:42.674511" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:42.673677" elapsed="0.000933"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.675392" elapsed="0.000052"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.676300" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:42.672280" elapsed="0.004137"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:42.671709" elapsed="0.004857"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:42.605806" elapsed="0.070860"/>
</kw>
<msg time="2026-04-05T00:35:42.676761" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:42.676806" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "R "e "m "o "v "e "_ "N "o "t ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.605167" elapsed="0.071680"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:42.677051" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:42.676939" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.676908" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.677529" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.677850" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.677923" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:42.604449" elapsed="0.073583"/>
</kw>
<msg time="2026-04-05T00:35:42.678126" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:42.678171" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "o "m "m "i "t "_ "R "e "m "o "v "e "_ "N "o "t ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.600040" elapsed="0.078168"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.678535" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.678285" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.678267" elapsed="0.000346"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:42.599911" elapsed="0.078725"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:42.599738" elapsed="0.078926"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:42.597448" elapsed="0.081269"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:42.593047" elapsed="0.085727"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.592620" elapsed="0.086199"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:42.589796" elapsed="0.089077"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.680369" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/remove-not-existing-commit-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/remove-not-existing-commit-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.680576" level="INFO">${data} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="88"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.679943" elapsed="0.000662"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.680651" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.680799" level="INFO">${request} = &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="88"&gt;
&lt;commit/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.679635" elapsed="0.001223"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.683216" level="INFO">&lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="88"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.681644" elapsed="0.001627"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.683733" level="INFO">&lt;commit/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.683410" elapsed="0.000384"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.684325" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.683934" elapsed="0.000443"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:42.681331" elapsed="0.003308"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.693641" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="88"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:42.693897" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="88"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.684781" elapsed="0.009156"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.694030" elapsed="0.000063"/>
</return>
<msg time="2026-04-05T00:35:42.694293" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="88"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.681036" elapsed="0.013296"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.694401" elapsed="0.000058"/>
</return>
<msg time="2026-04-05T00:35:42.694634" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="88"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.679314" elapsed="0.015359"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.696183" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/remove-not-existing-commit-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/remove-not-existing-commit-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.696373" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="88"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.695867" elapsed="0.000544"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.696497" elapsed="0.000041"/>
</return>
<msg time="2026-04-05T00:35:42.696706" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="88"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.695389" elapsed="0.001354"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.696802" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:35:42.697024" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="88"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.694922" elapsed="0.002139"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:42.697566" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="88"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.697261" elapsed="0.000346"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:42.698125" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="88"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:42.697807" elapsed="0.000357"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.698367" elapsed="0.000630"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:42.699072" elapsed="0.000039"/>
</return>
<arg>remove-not-existing-commit</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:42.679036" elapsed="0.020210"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.700902" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:42.700290" elapsed="0.000692"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:42.701315" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-05T00:35:42.701108" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.701078" elapsed="0.000375"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.701692" elapsed="0.000030"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.701951" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.702120" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.702283" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.702453" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.702608" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.702761" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.702990" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.702843" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:35:42.702826" elapsed="0.000239"/>
</if>
<arg>4455</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.699815" elapsed="0.003298"/>
</kw>
<doc>Attempt to commit and check the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.589332" elapsed="0.113826"/>
</test>
<test id="s1-s3-s1-t49" name="Close_Session" line="321">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:42.706456" elapsed="0.000213"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:42.706188" elapsed="0.000535"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.707698" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.707591" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.707572" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.712163" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.712057" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.712039" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.713213" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:42.712818" elapsed="0.000422"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.713701" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:42.713387" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:42.713770" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.713923" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:42.712457" elapsed="0.001490"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.718993" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.718884" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.718865" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.720242" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.720137" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.720119" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:42.720827" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.720468" elapsed="0.000386"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.721260" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:42.721014" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.774468" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.721820" elapsed="0.052927"/>
</kw>
<msg time="2026-04-05T00:35:42.775048" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:42.775125" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.721448" elapsed="0.053914"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.795897" level="INFO">"s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "l "o "s "e "_ "S "e "s "s "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:42.776285" elapsed="0.019785"/>
</kw>
<msg time="2026-04-05T00:35:42.796243" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:42.796289" level="INFO">${message_wait} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "l "o "s "e "_ "S "e "s "s "i "o "n "[K"
[?1l&gt;[?...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.775670" elapsed="0.020659"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.796665" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.796418" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.796392" elapsed="0.000377"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.797332" level="INFO"> "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "l "o "s "e "_ "S "e "s "s "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:42.796909" elapsed="0.000489"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.797691" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.797484" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.797465" elapsed="0.000328"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:42.797829" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:42.800850" elapsed="0.000161"/>
</kw>
<msg time="2026-04-05T00:35:42.801104" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:42.800100" elapsed="0.001109"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.802071" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.802924" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:42.798716" elapsed="0.004324"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:42.798107" elapsed="0.005052"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:42.719838" elapsed="0.083421"/>
</kw>
<msg time="2026-04-05T00:35:42.803355" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:42.803400" level="INFO">${message} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "l "o "s "e "_ "S "e "s "s "i "o "n "[K"
[?1l&gt;[?...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.719198" elapsed="0.084257"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:42.803645" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:42.803535" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.803516" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.804123" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.804576" elapsed="0.000031"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.804660" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:42.718549" elapsed="0.086225"/>
</kw>
<msg time="2026-04-05T00:35:42.804881" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:42.804927" level="INFO">${output} =  "s ". "t "x "t ". "M "D "S "A "L ". "N "o "r "t "h "b "o "u "n "d ". "C "l "o "s "e "_ "S "e "s "s "i "o "n "[K"
[?1l&gt;[?...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.714312" elapsed="0.090657"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.805334" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.805085" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.805031" elapsed="0.000452"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:42.714181" elapsed="0.091329"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:42.714005" elapsed="0.091537"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:42.711701" elapsed="0.093901"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:42.707286" elapsed="0.098376"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.706868" elapsed="0.098843"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:42.703863" elapsed="0.101905"/>
</kw>
<kw name="Perform_Test">
<kw name="Load_And_Send_Message">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.807086" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/close-session-request.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/close-session-request.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.807238" level="INFO">${data} = &lt;rpc message-id="999" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;close-session/&gt;
&lt;/rpc&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.806865" elapsed="0.000401"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.807313" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.807480" level="INFO">${request} = &lt;rpc message-id="999" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
    &lt;close-session/&gt;
&lt;/rpc&gt;
</msg>
<var>${request}</var>
<arg>${name}-request</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.806553" elapsed="0.000956"/>
</kw>
<kw name="Send_Message">
<kw name="Transmit_Message">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.810143" level="INFO">&lt;rpc message-id="999" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</msg>
<arg>${message}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.808279" elapsed="0.001923"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.810769" level="INFO">&lt;close-session/&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.810346" elapsed="0.000480"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.811369" level="INFO">&lt;/rpc&gt;

]]&gt;]]&gt;</msg>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.810977" elapsed="0.000459"/>
</kw>
<arg>${message}</arg>
<doc>Transmit message to Netconf connection and discard the echo of the message.</doc>
<status status="PASS" start="2026-04-05T00:35:42.807945" elapsed="0.003552"/>
</kw>
<kw name="Read Until" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.817611" level="INFO">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<msg time="2026-04-05T00:35:42.817703" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${ODL_NETCONF_PROMPT}</arg>
<doc>Consumes and returns the server output until ``expected`` is encountered.</doc>
<status status="PASS" start="2026-04-05T00:35:42.811636" elapsed="0.006096"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.817778" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:42.817927" level="INFO">${reply} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${reply}</var>
<arg>${request}</arg>
<doc>Send message to Netconf connection and get the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.807653" elapsed="0.010303"/>
</kw>
<return>
<value>${reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.817999" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:35:42.818140" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
]]&gt;]]&gt;</msg>
<var>${actual}</var>
<arg>${name}</arg>
<doc>Load a message from the data file set, send it to Netconf and return the reply.</doc>
<status status="PASS" start="2026-04-05T00:35:42.806240" elapsed="0.011929"/>
</kw>
<kw name="Load_Expected_Reply">
<kw name="Get_Data">
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:35:42.819467" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/close-session-reply.msg"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/MDSAL/close-session-reply.msg&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:35:42.819791" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${data}</var>
<arg>${datadir}${/}${name}.${dataext}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.819229" elapsed="0.000594"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:35:42.819871" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:42.820026" level="INFO">${expected_reply} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected_reply}</var>
<arg>${name}-reply</arg>
<doc>Load the specified data from the data directory and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.818618" elapsed="0.001437"/>
</kw>
<return>
<value>${expected_reply}</value>
<status status="PASS" start="2026-04-05T00:35:42.820101" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:35:42.820249" level="INFO">${expected} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
&lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${expected}</var>
<arg>${name}</arg>
<doc>Load the expected reply from the data file set and return it.</doc>
<status status="PASS" start="2026-04-05T00:35:42.818308" elapsed="0.001970"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:35:42.820697" level="INFO">${actual} = 
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;
</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>]]&gt;]]&gt;</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.820483" elapsed="0.000245"/>
</kw>
<kw name="Strip String" owner="String">
<msg time="2026-04-05T00:35:42.821142" level="INFO">${actual} = &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="999"&gt;
    &lt;ok/&gt;
&lt;/rpc-reply&gt;</msg>
<var>${actual}</var>
<arg>${actual}</arg>
<arg>mode=both</arg>
<doc>Remove leading and/or trailing whitespaces from the given string.</doc>
<status status="PASS" start="2026-04-05T00:35:42.820877" elapsed="0.000298"/>
</kw>
<kw name="Elements Should Be Equal" owner="XML">
<arg>${actual}</arg>
<arg>${expected}</arg>
<arg>normalize_whitespace=True</arg>
<doc>Verifies that the given ``source`` element is equal to ``expected``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.821337" elapsed="0.000456"/>
</kw>
<return>
<value>${actual}</value>
<status status="PASS" start="2026-04-05T00:35:42.821849" elapsed="0.000031"/>
</return>
<arg>close-session</arg>
<doc>Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.</doc>
<status status="PASS" start="2026-04-05T00:35:42.805950" elapsed="0.016026"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.823174" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.822802" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.822784" elapsed="0.000479"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:42.823399" elapsed="0.000336"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.828372" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:42.827959" elapsed="0.000441"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:35:42.828636" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:35:42.828493" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.828474" elapsed="0.000244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.828854" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.829017" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.829236" elapsed="0.000023"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.829399" elapsed="0.000035"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.829574" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.829730" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.829883" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:35:42.827657" elapsed="0.002304"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:42.822592" elapsed="0.007421"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:35:42.822231" elapsed="0.007825"/>
</kw>
<doc>Close the session and check that it was closed properly.</doc>
<status status="PASS" start="2026-04-05T00:35:42.703367" elapsed="0.126728"/>
</test>
<kw name="Teardown_Everything" type="TEARDOWN">
<kw name="Abort_ODL_Netconf_Connection">
<if>
<branch type="IF" condition="${ssh_netconf_pid} == -1">
<return>
<status status="NOT RUN" start="2026-04-05T00:35:42.831244" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.831130" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.831112" elapsed="0.000199"/>
</if>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.831774" level="INFO">${kill_command} = kill 4550</msg>
<var>${kill_command}</var>
<arg>kill ${ssh_netconf_pid}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:42.831460" elapsed="0.000502"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.832472" level="INFO">${ssh_netconf_pid} = -1</msg>
<arg>${ssh_netconf_pid}</arg>
<arg>-1</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:42.832123" elapsed="0.000394"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${ssh_control}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:42.832658" elapsed="0.000139"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.834218" level="INFO">kill 4550</msg>
<arg>${kill_command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:42.832931" elapsed="0.001382"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.835340" level="INFO">[?2004l-bash: kill: (4550) - No such process
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-05T00:35:42.834484" elapsed="0.000909"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${ssh_netconf}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:42.835545" elapsed="0.000139"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.836710" level="INFO">Connection to 127.0.0.1 closed by remote host.
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-05T00:35:42.835824" elapsed="0.000939"/>
</kw>
<doc>Correctly close the Netconf connection and make sure it is really dead.</doc>
<status status="PASS" start="2026-04-05T00:35:42.831006" elapsed="0.005809"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-05T00:35:42.837023" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-05T00:35:42.836947" elapsed="0.000242"/>
</kw>
<doc>Close the Netconf connection and destroy all sessions in the requests library.</doc>
<status status="PASS" start="2026-04-05T00:35:42.830737" elapsed="0.006513"/>
</kw>
<doc>Metconf MDSAL Northbound test suite.

Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html


The request produced by test cases "Get Config Running", "Get Config Running
To Confirm No_Edit Before Commit", "Get Config Running To Confirm Delete
After Commit" and "Get Config Candidate To Confirm Discard" all use the same
message id ("empty") for their requests. This is possible because the
requests produced by this suite are strictly serialized. The RFC 6241 does
not state that these IDs are unique, it only requires that each ID used is
"XML attribute normalized" if the client wants it to be returned unmodified.
The RFC specifically says that "the content of this attribute is not
interpreted in any way, it only is stored to be returned with the reply to
the request. The reuse of the "empty" string for the 4 test cases was chosen
for simplicity.

TODO: Change the 4 testcases to use unique message IDs.

TODO: There are many sections with too many "Should_[Not_]Contain" keyword
invocations (see Check_Multiple_Modules_Merge_Replace for a particularly bad
example). Create a resource that will be able to extract the data from the
requests and search for them in the response, then convert to usage of this
resource (think "Thou shall not repeat yourself"). The following resource was
found when doing research on this:
http://robotframework.org/robotframework/latest/libraries/XML.html</doc>
<status status="PASS" start="2026-04-05T00:35:26.523215" elapsed="16.314066"/>
</suite>
<status status="PASS" start="2026-04-05T00:35:26.521933" elapsed="16.316537"/>
</suite>
<suite id="s1-s4" name="CRUD" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD">
<suite id="s1-s4-s1" name="CRUD-RPC" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/CRUD-RPC.robot">
<kw name="Setup_Everything" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.932890" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:42.928655" elapsed="0.004285"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-05T00:35:42.928438" elapsed="0.004566"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.937852" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-05T00:35:42.934124" elapsed="0.003756"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-05T00:35:42.938069" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.937962" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.937939" elapsed="0.000198"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.938827" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:42.938285" elapsed="0.000585"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.939336" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-05T00:35:42.939027" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-05T00:35:42.939879" elapsed="0.000280"/>
</kw>
<msg time="2026-04-05T00:35:42.940268" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:42.940315" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:42.939544" elapsed="0.000793"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.940880" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:42.940514" elapsed="0.000392"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.941922" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:42.941660" elapsed="0.000288"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.942340" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:42.942091" elapsed="0.000274"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.942820" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.942534" elapsed="0.000313"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.946011" elapsed="0.000217"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.946724" level="INFO">${member_ip} = 10.30.170.184</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:42.946383" elapsed="0.000367"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.946899" elapsed="0.000231"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.947921" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:42.947626" elapsed="0.000321"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:35:42.947992" elapsed="0.000041"/>
</return>
<msg time="2026-04-05T00:35:42.948157" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:35:42.947321" elapsed="0.000860"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:35:42.948916" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4cf384d90&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:35:42.948330" elapsed="0.000725"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.949261" elapsed="0.000211"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-05T00:35:42.945374" elapsed="0.004160"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:42.945150" elapsed="0.004429"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-05T00:35:42.942900" elapsed="0.006711"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.950168" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:42.949767" elapsed="0.000443"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.950780" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.184'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:42.950367" elapsed="0.000455"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.951358" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:42.950976" elapsed="0.000423"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-05T00:35:42.941183" elapsed="0.010289"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-05T00:35:42.933792" elapsed="0.017736"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:42.951707" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:42.951593" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.951575" elapsed="0.000198"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.954797" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:42.954408" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.955276" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:42.954983" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:42.955346" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:42.955516" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:42.954090" elapsed="0.001451"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:42.956517" level="INFO">${member_ip} = 10.30.170.184</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.956235" elapsed="0.000308"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.957383" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:35:42.957512" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:35:42.957204" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:42.961067" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:42.960400" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:42.960356" elapsed="0.000908"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.961933" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:35:42.961552" elapsed="0.000755"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.963203" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.184" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:42.962585" elapsed="0.000779"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.964374" level="INFO">${conn_id} = 1</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:42.963648" elapsed="0.000848"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:35:42.966047" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:35:42.966124" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:35:42.965616" elapsed="0.000533"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:42.966352" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:35:42.967597" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:35:43.298195" 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 Apr  5 00:35:03 UTC 2026

  System load:  0.21               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:35:28 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:35:42.967257" elapsed="0.331040"/>
</kw>
<msg time="2026-04-05T00:35:43.298365" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:42.966905" elapsed="0.331547"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:35:42.964858" elapsed="0.333790"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:43.299365" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-05T00:35:43.312014" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-05T00:35:43.312683" level="INFO">${stdout} = </msg>
<msg time="2026-04-05T00:35:43.313006" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:43.298950" elapsed="0.014275"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:43.314096" elapsed="0.001151"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:43.317764" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:43.316544" elapsed="0.001545"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-05T00:35:43.318710" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:43.318303" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:43.318237" elapsed="0.000670"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-05T00:35:43.319464" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-05T00:35:43.319093" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:43.319037" elapsed="0.000679"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-05T00:35:43.319838" elapsed="0.000022"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:43.324563" elapsed="0.000549"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:43.325627" elapsed="0.000335"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:43.326221" elapsed="0.000174"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:43.320613" elapsed="0.005882"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-05T00:35:42.959370" elapsed="0.367377"/>
</kw>
<msg time="2026-04-05T00:35:43.326940" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:42.958727" elapsed="0.368269"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:35:42.958237" elapsed="0.368841"/>
</kw>
<msg time="2026-04-05T00:35:43.327119" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:42.957733" elapsed="0.369432"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:43.330059" elapsed="0.000306"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:43.330540" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:43.330825" elapsed="0.000093"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:43.327466" elapsed="0.003503"/>
</kw>
<msg time="2026-04-05T00:35:43.331059" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-05T00:35:42.956758" elapsed="0.374326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:43.331513" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:43.331253" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:35:43.331595" elapsed="0.000030"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-05T00:35:42.955890" elapsed="0.375828"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:42.955715" elapsed="0.376039"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:42.955591" elapsed="0.376198"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-05T00:35:42.951987" elapsed="0.379857"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:43.332150" elapsed="0.000214"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:43.346099" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:43.345984" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:43.345964" elapsed="0.000204"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:43.346489" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:35:43.346596" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:35:43.346321" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:43.347034" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:43.346775" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:43.347489" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:43.347228" elapsed="0.000305"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:43.348272" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-05T00:35:43.348043" elapsed="0.000342">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-05T00:35:43.348508" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-05T00:35:43.348556" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:43.347687" elapsed="0.000892"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:43.348929" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:43.348695" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:43.348676" elapsed="0.000353"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:43.349833" level="INFO">${ip_address} = 10.30.170.184</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:43.349542" elapsed="0.000317"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-05T00:35:43.349908" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:35:43.350060" level="INFO">${odl_ip} = 10.30.170.184</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-05T00:35:43.349227" elapsed="0.000858"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:43.350236" elapsed="0.000415"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:43.350932" level="INFO">index=4
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:35:43.351033" level="INFO">${karaf_connection_object} = index=4
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:35:43.350820" elapsed="0.000239"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:35:43.351207" elapsed="0.002351"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-05T00:35:43.354008" level="INFO">Logging into '10.30.170.184:8101' as 'karaf'.</msg>
<msg time="2026-04-05T00:35:43.570399" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-05T00:35:43.353743" elapsed="0.216765"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:43.573509" elapsed="0.000439"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:43.574109" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:43.574398" elapsed="0.000122"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:43.571316" elapsed="0.003255"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:43.570778" elapsed="0.003838"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-05T00:35:43.345700" elapsed="0.228967"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:35:43.333086" elapsed="0.241627"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:43.332723" elapsed="0.242038"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:43.332585" elapsed="0.242216"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-05T00:35:43.332419" elapsed="0.242414"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-05T00:35:42.933341" elapsed="0.641549"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:43.577490" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:43.577365" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:43.577344" elapsed="0.000252"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:43.582339" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:43.582232" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:43.582214" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:43.583355" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:43.582972" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:43.583853" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:43.583555" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:43.583922" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:35:43.584079" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:43.582645" elapsed="0.001458"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:43.589676" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:43.589570" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:43.589551" elapsed="0.000239"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:43.591099" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:43.590923" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:43.590904" elapsed="0.000330"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:43.591791" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:43.591372" elapsed="0.000461"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:43.592295" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:43.592062" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:43.631067" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "n "e "t "[78Cc "[A[78Co</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:43.593898" elapsed="0.037661"/>
</kw>
<msg time="2026-04-05T00:35:43.631980" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:43.632148" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:43.592569" elapsed="0.039695"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:43.693024" level="INFO">"n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "n "e "t "c "o "n "f "/ "C "R "U "D "/ "C "R "U "D "- "R "P "C "[78C. "[A[78Cr
 "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:43.636304" elapsed="0.056896"/>
</kw>
<msg time="2026-04-05T00:35:43.693372" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:43.693482" level="INFO">${message_wait} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:43.633017" elapsed="0.060523"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:43.694139" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:43.693737" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:43.693703" elapsed="0.000619"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:43.695053" level="INFO"> "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "n "e "t "c "o "n "f "/ "C "R "U "D "/ "C "R "U "D "- "R "P "C "[78C. "[A[78Cr
 "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:43.694488" elapsed="0.000692"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:43.695636" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:43.695307" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:43.695287" elapsed="0.000520"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:43.695846" elapsed="0.000047"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:43.697970" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:43.698518" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:43.698888" elapsed="0.000107"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:43.697151" elapsed="0.001954"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:43.696192" elapsed="0.003006"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:43.590575" elapsed="0.108726"/>
</kw>
<msg time="2026-04-05T00:35:43.699399" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:43.699462" level="INFO">${message} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:43.589942" elapsed="0.109560"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:43.699690" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:43.699583" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:43.699563" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:43.700259" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:43.700667" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:43.700740" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:43.589262" elapsed="0.111590"/>
</kw>
<msg time="2026-04-05T00:35:43.700953" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:43.700998" level="INFO">${output} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:43.584478" elapsed="0.116558"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:43.701366" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:43.701116" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:43.701098" elapsed="0.000387"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:43.584324" elapsed="0.117185"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:43.584155" elapsed="0.117392"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:43.581943" elapsed="0.119670"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-05T00:35:43.575489" elapsed="0.126187"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:43.575045" elapsed="0.126679"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-05T00:35:42.928116" elapsed="0.773665"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:35:43.702294" level="INFO">Creating Session using : alias=operational, url=http://10.30.170.184:8181/rests/data, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4bf009650&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>operational</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}${REST_API}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:35:43.701986" elapsed="0.000528"/>
</kw>
<kw name="Setup_NetconfKeywords" owner="NetconfKeywords">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:35:43.703328" level="INFO">${tmp} = {}</msg>
<var>${tmp}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:35:43.703040" elapsed="0.000314"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:43.707850" level="INFO">${NetconfKeywords__mounted_device_types} = {}</msg>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${tmp}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:43.703540" elapsed="0.004356"/>
</kw>
<if>
<branch type="IF" condition="${create_session_for_templated_requests}">
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:35:43.712276" level="INFO">Creating Session using : alias=default, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4cf3cd750&gt;, timeout=2, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:35:43.711894" elapsed="0.000487"/>
</kw>
<arg>timeout=2</arg>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-05T00:35:43.711366" elapsed="0.001136"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:43.707969" elapsed="0.004568"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:43.707950" elapsed="0.004612"/>
</if>
<kw name="Initialize_Artifact_Deployment_And_Usage" owner="NexusKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:43.717652" level="INFO">${odl_connection} = 7</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:43.717249" elapsed="0.000431"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:35:43.719490" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:35:43.719569" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:35:43.719179" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:43.719750" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:35:43.720941" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:35:44.044598" 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 Apr  5 00:35:03 UTC 2026

  System load:  0.21               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:35:43 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:35:43.720617" elapsed="0.324172"/>
</kw>
<msg time="2026-04-05T00:35:44.044885" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:43.720245" elapsed="0.324733"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:35:43.718745" elapsed="0.326365"/>
</kw>
<msg time="2026-04-05T00:35:44.045168" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:43.718316" elapsed="0.326904"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:35:43.717967" elapsed="0.327341"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-05T00:35:44.045369" elapsed="0.000073"/>
</return>
<msg time="2026-04-05T00:35:44.045647" level="INFO">${odl} = 7</msg>
<var>${odl}</var>
<doc>Open a connection to the ODL system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:35:43.716937" elapsed="0.328739"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-05T00:35:44.055835" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-05T00:35:44.061974" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../../tools/deployment/search.sh' -&gt; '/home/jenkins//search.sh'</msg>
<arg>/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../../tools/deployment/search.sh</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-05T00:35:44.045951" elapsed="0.016085"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:44.062223" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="not (${tools_system_connect})">
<return>
<status status="NOT RUN" start="2026-04-05T00:35:44.062762" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:44.062607" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:44.062581" elapsed="0.000250"/>
</if>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:44.068532" level="INFO">${tools_connection} = 8</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:44.067899" elapsed="0.000687"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:35:44.071044" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:35:44.071152" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:35:44.070635" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.071403" elapsed="0.000476"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:35:44.073057" level="INFO">Logging into '10.30.170.167:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:35:44.660501" 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 Apr  5 00:35:44 UTC 2026

  System load:  0.0                Processes:             103
  Usage of /:   20.6% of 38.58GB   Users logged in:       1
  Memory usage: 4%                 IPv4 address for ens3: 10.30.170.167
  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.


Last login: Sun Apr  5 00:29:24 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-1-docker-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:35:44.072621" elapsed="0.588127"/>
</kw>
<msg time="2026-04-05T00:35:44.660836" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.072113" elapsed="0.588803"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:35:44.069990" elapsed="0.591046"/>
</kw>
<msg time="2026-04-05T00:35:44.661090" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.069341" elapsed="0.591798"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-05T00:35:44.068872" elapsed="0.592342"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-05T00:35:44.661267" elapsed="0.000046"/>
</return>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:35:44.067264" elapsed="0.594201"/>
</kw>
<doc>Places search utility to ODL system, which will be needed for version detection.
By default also initialize a SSH connection to Tools system,
as following Keywords assume a working connection towards target system.</doc>
<status status="PASS" start="2026-04-05T00:35:43.712814" elapsed="0.948708"/>
</kw>
<doc>Setup the environment for the other keywords of this Resource to work properly.</doc>
<status status="PASS" start="2026-04-05T00:35:43.702777" elapsed="0.958795"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:44.662341" level="INFO">${device_type_rpc} = rpc-device</msg>
<var>${device_type_rpc}</var>
<arg>"""${USE_NETCONF_CONNECTOR}""" == """True"""</arg>
<arg>default</arg>
<arg>${device_type_rpc}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:44.661808" elapsed="0.000560"/>
</kw>
<doc>Initialize SetupUtils. Setup everything needed for the test cases.</doc>
<status status="PASS" start="2026-04-05T00:35:42.927833" elapsed="1.734617"/>
</kw>
<test id="s1-s4-s1-t1" name="Start_Testtool" line="49">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:35:44.665828" elapsed="0.000215"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:35:44.665561" elapsed="0.000536"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:44.667152" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:44.667039" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:44.667017" elapsed="0.000205"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:44.672120" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:44.672015" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:44.671997" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:44.673205" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:44.672826" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:35:44.673696" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:35:44.673386" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:35:44.673766" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:44.673918" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:35:44.672412" elapsed="0.001531"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:44.679293" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:44.679187" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:44.679167" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:35:44.680605" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:44.680490" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:44.680472" elapsed="0.000200"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:35:44.681189" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:44.680821" elapsed="0.000394"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:44.681630" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:44.681367" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:44.717901" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:44.682188" elapsed="0.035871"/>
</kw>
<msg time="2026-04-05T00:35:44.718226" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:35:44.718343" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:44.681808" elapsed="0.036575"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:35:44.733976" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "S "t "a "r "t "_ "T "e "s "t "t "o "o "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:35:44.719002" elapsed="0.015142"/>
</kw>
<msg time="2026-04-05T00:35:44.734313" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:35:44.734360" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "S "t "a "r "t "_ "T "e "s "t "t "o "o "l "[K"
[?1l&gt;[?2004l[?1h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:44.718567" elapsed="0.015831"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:44.734753" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:44.734502" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:44.734482" elapsed="0.000378"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:44.735376" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "S "t "a "r "t "_ "T "e "s "t "t "o "o "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:44.734999" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:44.735737" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:44.735525" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:44.735507" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:35:44.735871" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:44.738838" elapsed="0.000144"/>
</kw>
<msg time="2026-04-05T00:35:44.739053" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.738196" elapsed="0.000955"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:44.740119" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:44.741064" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:44.736737" elapsed="0.004441"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:35:44.736143" elapsed="0.005151"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:35:44.680170" elapsed="0.061223"/>
</kw>
<msg time="2026-04-05T00:35:44.741505" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:44.741549" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "S "t "a "r "t "_ "T "e "s "t "t "o "o "l "[K"
[?1l&gt;[?2004l[?1h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:44.679523" elapsed="0.062065"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:35:44.741773" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:35:44.741666" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:44.741648" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:44.742243" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:44.742585" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:35:44.742682" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:35:44.678848" elapsed="0.063945"/>
</kw>
<msg time="2026-04-05T00:35:44.742886" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:35:44.742929" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "S "t "a "r "t "_ "T "e "s "t "t "o "o "l "[K"
[?1l&gt;[?2004l[?1h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:44.674312" elapsed="0.068655"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:44.743333" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:44.743042" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:44.743024" elapsed="0.000388"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:35:44.674173" elapsed="0.069290"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:35:44.673998" elapsed="0.069497"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:35:44.671660" elapsed="0.071889"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:35:44.666733" elapsed="0.076870"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:44.666246" elapsed="0.077401"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:35:44.663128" elapsed="0.080570"/>
</kw>
<kw name="Install_And_Start_Testtool" owner="NetconfKeywords">
<kw name="Deploy_Test_Tool" owner="NexusKeywords">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:44.764599" level="INFO">${name_prefix} = netconf-testtool-</msg>
<var>${name_prefix}</var>
<arg>${artifact}-</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:44.764247" elapsed="0.000382"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:44.765158" level="INFO">${extension} = jar</msg>
<var>${extension}</var>
<arg>'${component}'=='odl-micro'</arg>
<arg>tar</arg>
<arg>jar</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:44.764798" elapsed="0.000386"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:44.765805" level="INFO">${name_suffix} = -executable.jar</msg>
<var>${name_suffix}</var>
<arg>"${suffix}" != ""</arg>
<arg>-${suffix}.${extension}</arg>
<arg>.${extension}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:44.765393" elapsed="0.000438"/>
</kw>
<kw name="Deploy_Artifact" owner="NexusKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_url}""" != ""</arg>
<arg>Deploy_From_Url</arg>
<arg>${explicit_url}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.767129" elapsed="0.000322"/>
</kw>
<kw name="Fetch From Left" owner="String">
<msg time="2026-04-05T00:35:44.767822" level="INFO">${urlbase} = https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot</msg>
<var>${urlbase}</var>
<arg>${BUNDLE_URL}</arg>
<arg>/org/opendaylight</arg>
<doc>Returns contents of the ``string`` before the first occurrence of ``marker``.</doc>
<status status="PASS" start="2026-04-05T00:35:44.767611" elapsed="0.000237"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:44.768387" level="INFO">${urlbase} = https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot</msg>
<var>${urlbase}</var>
<arg>'${urlbase}' != '${BUNDLE_URL}'</arg>
<arg>${urlbase}</arg>
<arg>${fallback_url}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:44.768005" elapsed="0.000408"/>
</kw>
<kw name="Run_Keyword_If_At_Most_Magnesium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_At_Most" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &lt;= ${Stream_dict}[${upper_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.787075" elapsed="0.000417"/>
</kw>
<arg>magnesium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${upper_bound} to titanium and in case titanium is at most ${upper_bound},
run Collections.Remove_Values_From_List [['mdsal', 'odlparent', 'yangtools', 'carpeople', 'netconf', 'bgpcep'], 'carpeople'] {} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:35:44.786601" elapsed="0.000961"/>
</kw>
<msg time="2026-04-05T00:35:44.787613" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_At_Most</arg>
<arg>magnesium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.778052" elapsed="0.009616"/>
</kw>
<arg>Collections.Remove_Values_From_List</arg>
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>carpeople</arg>
<doc>Compare magnesium to titanium and in case titanium is at most magnesium,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:35:44.777663" elapsed="0.010080"/>
</kw>
<kw name="Run_Keyword_If_At_Most_Aluminium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_At_Most" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &lt;= ${Stream_dict}[${upper_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.806166" elapsed="0.000418"/>
</kw>
<arg>aluminium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${upper_bound} to titanium and in case titanium is at most ${upper_bound},
run Collections.Remove_Values_From_List [['mdsal', 'odlparent', 'yangtools', 'carpeople', 'netconf', 'bgpcep'], 'netconf'] {} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:35:44.805715" elapsed="0.000939"/>
</kw>
<msg time="2026-04-05T00:35:44.806700" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_At_Most</arg>
<arg>aluminium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.797224" elapsed="0.009548"/>
</kw>
<arg>Collections.Remove_Values_From_List</arg>
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>netconf</arg>
<doc>Compare aluminium to titanium and in case titanium is at most aluminium,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:35:44.796840" elapsed="0.010009"/>
</kw>
<kw name="Run_Keyword_If_At_Most_Silicon" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_At_Most" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &lt;= ${Stream_dict}[${upper_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.825314" elapsed="0.000413"/>
</kw>
<arg>silicon</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${upper_bound} to titanium and in case titanium is at most ${upper_bound},
run Collections.Remove_Values_From_List [['mdsal', 'odlparent', 'yangtools', 'carpeople', 'netconf', 'bgpcep'], 'bgpcep'] {} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:35:44.824869" elapsed="0.000925"/>
</kw>
<msg time="2026-04-05T00:35:44.825915" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_At_Most</arg>
<arg>silicon</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.816384" elapsed="0.009580"/>
</kw>
<arg>Collections.Remove_Values_From_List</arg>
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>bgpcep</arg>
<doc>Compare silicon to titanium and in case titanium is at most silicon,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:35:44.815984" elapsed="0.010056"/>
</kw>
<if>
<branch type="IF" condition="'${build_version}'=='${EMPTY}'">
<kw name="NexusKeywords__Detect_Version_To_Pull" owner="NexusKeywords">
<kw name="NexusKeywords__Get_Items_To_Look_At" owner="NexusKeywords">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${COMPONENT_MAPPING}</arg>
<arg>${component}</arg>
<arg>Component not supported by NexusKeywords version detection: ${component}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:35:44.829045" elapsed="0.000245"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${COMPONENT_MAPPING}</arg>
<arg>${component}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:35:44.829802" elapsed="0.000177"/>
</kw>
<msg time="2026-04-05T00:35:44.830025" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Collections.Get_From_Dictionary</arg>
<arg>${COMPONENT_MAPPING}</arg>
<arg>${component}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.829465" elapsed="0.000609"/>
</kw>
<msg time="2026-04-05T00:35:44.830173" level="INFO">${itemlist} = netconf-api</msg>
<var>${itemlist}</var>
<arg>${component}</arg>
<doc>Get a list of items that might contain the version number that we are looking for.</doc>
<status status="PASS" start="2026-04-05T00:35:44.828729" elapsed="0.001468"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:44.830494" level="INFO">index=8
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:35:44.830594" level="INFO">${current_ssh_connection} = index=8
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:35:44.830353" elapsed="0.000268"/>
</kw>
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:35:44.835676" level="INFO">${odl_connection} = 9</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:35:44.835254" elapsed="0.000449"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:35:44.837470" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:35:44.837548" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:35:44.837127" elapsed="0.000445"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.837726" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:35:44.839416" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:35:45.158041" 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 Apr  5 00:35:03 UTC 2026

  System load:  0.21               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:35:44 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:35:44.838665" elapsed="0.319524"/>
</kw>
<msg time="2026-04-05T00:35:45.158310" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.838297" elapsed="0.320091"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:35:44.836653" elapsed="0.322067"/>
</kw>
<msg time="2026-04-05T00:35:45.158774" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:44.836251" elapsed="0.322571"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:35:44.835880" elapsed="0.323016"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-05T00:35:45.158947" elapsed="0.000068"/>
</return>
<doc>Open a connection to the ODL system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:35:44.834914" elapsed="0.324248"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:45.159686" level="INFO">Executing command 'sh search.sh /tmp/karaf-0.22.2-SNAPSHOT/system netconf-api'.</msg>
<msg time="2026-04-05T00:35:45.212910" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:35:45.213180" level="INFO">${version} = 9.0.2
org/opendaylight/netconf</msg>
<msg time="2026-04-05T00:35:45.213399" level="INFO">${result} = 0</msg>
<var>${version}</var>
<var>${result}</var>
<arg>sh search.sh ${WORKSPACE}/${BUNDLEFOLDER}/system ${itemlist}</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:45.159386" elapsed="0.054110"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:35:45.213896" elapsed="0.000478"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:35:45.221774" elapsed="0.000379"/>
</kw>
<msg time="2026-04-05T00:35:45.222253" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:45.220646" elapsed="0.001724"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.222753" elapsed="0.000049"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.223161" elapsed="0.000048"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:35:45.214972" elapsed="0.008384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.224129" level="INFO">9.0.2
org/opendaylight/netconf</msg>
<arg>${version}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:45.223725" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="${result}!=0">
<kw name="Fail" owner="BuiltIn">
<arg>Component "${component}": searching for "${itemlist}" found no version, cannot locate test tool.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.224489" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:45.224258" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:45.224233" elapsed="0.000337"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-05T00:35:45.224950" level="INFO">${version} = 9.0.2</msg>
<msg time="2026-04-05T00:35:45.224995" level="INFO">${location} = org/opendaylight/netconf</msg>
<var>${version}</var>
<var>${location}</var>
<arg>${version}</arg>
<arg>max_split=1</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-05T00:35:45.224712" elapsed="0.000305"/>
</kw>
<return>
<value>${version}</value>
<value>${location}</value>
<status status="PASS" start="2026-04-05T00:35:45.225068" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:35:45.225261" level="INFO">${version} = 9.0.2</msg>
<msg time="2026-04-05T00:35:45.225303" level="INFO">${location} = org/opendaylight/netconf</msg>
<var>${version}</var>
<var>${location}</var>
<arg>${component}</arg>
<doc>Determine the exact Nexus directory to be used as a source for a particular test tool
Figure out what version of the tool needs to be pulled out of the
Nexus by looking at the version directory of the subsystem from
which the tool is being pulled. This code is REALLY UGLY but there
is no way around it until the bug
https://bugs.opendaylight.org/show_bug.cgi?id=5206 gets fixed.
I also don't want to depend on maven-metadata-local.xml and other
bits and pieces of ODL distribution which are not required for ODL
to function properly.</doc>
<status status="PASS" start="2026-04-05T00:35:44.828301" elapsed="0.397025"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:44.826119" elapsed="0.399248"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${version}</var>
<var>${location}</var>
<arg>${build_version}</arg>
<arg>${build_location}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.225556" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:45.225392" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:44.826095" elapsed="0.399543"/>
</if>
<if>
<branch type="IF" condition="'SNAPSHOT' in '${version}'">
<kw name="Remove Values From List" owner="Collections">
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>netconf</arg>
<arg>bgpcep</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.225901" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:45.225694" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:45.225678" elapsed="0.000303"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.226511" level="INFO">${is_staged} = "FALSE"</msg>
<var>${is_staged}</var>
<arg>"opendaylight.release" not in '${urlbase}' and "opendaylight.snapshot" not in '${urlbase}'</arg>
<arg>"TRUE"</arg>
<arg>"FALSE"</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:45.226124" elapsed="0.000413"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.227310" level="INFO">${is_mri_component} = "TRUE"</msg>
<var>${is_mri_component}</var>
<arg>'${component}' in ${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>"TRUE"</arg>
<arg>"FALSE"</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:45.226698" elapsed="0.000657"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.227990" level="INFO">${urlbase} = https://nexus.opendaylight.org/content/repositories/opendaylight.release</msg>
<var>${urlbase}</var>
<arg>${is_mri_component} == "TRUE" and ${is_staged} == "FALSE"</arg>
<arg>${NEXUS_RELEASE_BASE_URL}</arg>
<arg>${urlbase}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:45.227578" elapsed="0.000439"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.228549" level="INFO">${url} = https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/netconf/netconf-testtool/9.0.2</msg>
<var>${url}</var>
<arg>${urlbase}/${location}/${artifact}/${version}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:45.228172" elapsed="0.000403"/>
</kw>
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:45.230524" level="INFO">Executing command 'curl -L https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml'.</msg>
<msg time="2026-04-05T00:35:45.376315" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:35:45.376602" level="INFO">${stdout} = &lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.rel...</msg>
<msg time="2026-04-05T00:35:45.376710" level="INFO">${stderr} =   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0   ...</msg>
<msg time="2026-04-05T00:35:45.376913" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:45.230319" elapsed="0.146651"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.378899" level="INFO">Length is 316.</msg>
<msg time="2026-04-05T00:35:45.379116" level="FAIL">'  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100  1080    0  1080    0     0  10264      0 --:--:-- --:--:-- --:--:-- 10285' should be empty.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-05T00:35:45.378211" elapsed="0.001090">'  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100  1080    0  1080    0     0  10264      0 --:--:-- --:--:-- --:--:-- 10285' should be empty.</status>
</kw>
<msg time="2026-04-05T00:35:45.379569" level="INFO">${emptiness_status} = FAIL</msg>
<msg time="2026-04-05T00:35:45.379669" level="INFO">${result} = '  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0  ...</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:45.377360" elapsed="0.002362"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.381069" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:45.380092" elapsed="0.001035"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.383652" level="INFO">&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/title&gt;
    &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&gt;

    &lt;link rel="icon" type="image/png" href="https://nexus.opendaylight.org/favicon.png"&gt;
    &lt;!--[if IE]&gt;
    &lt;link rel="SHORTCUT ICON" href="https://nexus.opendaylight.org/favicon.ico"/&gt;
    &lt;![endif]--&gt;

    &lt;link rel="stylesheet" href="https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02" type="text/css" media="screen" title="no title" charset="utf-8"&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/h1&gt;
    &lt;p&gt;Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/p&gt;
  &lt;/body&gt;
&lt;/html&gt;</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:45.383015" elapsed="0.000768"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.384671" level="INFO">  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100  1080    0  1080    0     0  10264      0 --:--:-- --:--:-- --:--:-- 10285</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:45.384112" elapsed="0.000660"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.385648" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:45.385090" elapsed="0.000654"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-05T00:35:45.382099" elapsed="0.003765"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:45.381303" elapsed="0.004639"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:45.381258" elapsed="0.004740"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-05T00:35:45.386340" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:45.386121" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:45.386084" elapsed="0.000437"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-05T00:35:45.386833" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-05T00:35:45.386638" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:45.386605" elapsed="0.000415"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.387468" elapsed="0.000065"/>
</kw>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-05T00:35:45.229735" elapsed="0.158034"/>
</kw>
<msg time="2026-04-05T00:35:45.387910" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:45.229181" elapsed="0.158814"/>
</kw>
<msg time="2026-04-05T00:35:45.388159" level="INFO">${metadata} = &lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.rel...</msg>
<var>${metadata}</var>
<arg>curl -L ${url}/maven-metadata.xml</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="PASS" start="2026-04-05T00:35:45.228780" elapsed="0.159407"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:45.390784" level="INFO">Executing command 'echo "&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/title&gt;
    &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&gt;

    &lt;link rel="icon" type="image/png" href="https://nexus.opendaylight.org/favicon.png"&gt;
    &lt;!--[if IE]&gt;
    &lt;link rel="SHORTCUT ICON" href="https://nexus.opendaylight.org/favicon.ico"/&gt;
    &lt;![endif]--&gt;

    &lt;link rel="stylesheet" href="https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02" type="text/css" media="screen" title="no title" charset="utf-8"&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/h1&gt;
    &lt;p&gt;Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/p&gt;
  &lt;/body&gt;
&lt;/html&gt;" | grep value | head -n 1 | cut -d '&gt;' -f 2 | cut -d '&lt;' -f 1'.</msg>
<msg time="2026-04-05T00:35:45.421154" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:35:45.421265" level="INFO">${stdout} = &lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.rel...</msg>
<msg time="2026-04-05T00:35:45.421312" level="INFO">${stderr} = bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text...</msg>
<msg time="2026-04-05T00:35:45.421354" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:45.390601" elapsed="0.030775"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.422180" level="INFO">Length is 253.</msg>
<msg time="2026-04-05T00:35:45.422261" level="FAIL">'bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory' should be empty.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-05T00:35:45.421909" elapsed="0.000422">'bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory' should be empty.</status>
</kw>
<msg time="2026-04-05T00:35:45.422449" level="INFO">${emptiness_status} = FAIL</msg>
<msg time="2026-04-05T00:35:45.422495" level="INFO">${result} = 'bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=tex...</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:45.421575" elapsed="0.000944"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.423101" level="INFO">${success} = False</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:45.422682" elapsed="0.000444"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.424265" level="INFO">&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/title&gt;
    &lt;meta http-equiv=Content-Type content=text/html</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:45.423976" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.424740" level="INFO">bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:45.424481" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.425187" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:45.424932" elapsed="0.000298"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-05T00:35:45.423586" elapsed="0.001698"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:45.423231" elapsed="0.002089"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:45.423183" elapsed="0.002162"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-05T00:35:45.425529" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:45.425401" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:45.425384" elapsed="0.000217"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-05T00:35:45.425738" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:45.425651" elapsed="0.000129"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:45.425637" elapsed="0.000165"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.426279" level="FAIL">Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</msg>
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-05T00:35:45.425941" elapsed="0.000401">Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</status>
</kw>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="FAIL" start="2026-04-05T00:35:45.389960" elapsed="0.036518">Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</status>
</kw>
<msg time="2026-04-05T00:35:45.426570" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-05T00:35:45.389443" elapsed="0.037176"/>
</kw>
<arg>echo "${metadata}" | grep value | head -n 1 | cut -d '&gt;' -f 2 | cut -d '&lt;' -f 1</arg>
<arg>stderr_must_be_empty=${True}</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="FAIL" start="2026-04-05T00:35:45.388749" elapsed="0.037974">Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</status>
</kw>
<msg time="2026-04-05T00:35:45.426829" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-05T00:35:45.426874" level="INFO">${namepart} = Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonaty...</msg>
<var>${status}</var>
<var>${namepart}</var>
<arg>SSHKeywords.Execute_Command_Should_Pass</arg>
<arg>echo "${metadata}" | grep value | head -n 1 | cut -d '&gt;' -f 2 | cut -d '&lt;' -f 1</arg>
<arg>stderr_must_be_empty=${True}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:45.388345" elapsed="0.038554"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.427336" level="INFO">Length is 288.</msg>
<msg time="2026-04-05T00:35:45.427410" level="INFO">${length} = 288</msg>
<var>${length}</var>
<arg>${namepart}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:35:45.427058" elapsed="0.000391"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.427999" level="INFO">${namepart} = 9.0.2</msg>
<var>${namepart}</var>
<arg>"${status}" != "PASS" or ${length} == 0</arg>
<arg>${version}</arg>
<arg>${namepart}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:45.427608" elapsed="0.000418"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.428533" level="INFO">${filename} = netconf-testtool-9.0.2-executable.jar</msg>
<var>${filename}</var>
<arg>${name_prefix}${namepart}${name_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:45.428180" elapsed="0.000378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.428941" level="INFO">netconf-testtool-9.0.2-executable.jar</msg>
<arg>${filename}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:45.428706" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.429462" level="INFO">${url} = https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/netconf/netconf-testtool/9.0.2/netconf-testtool-9.0.2-executable.jar</msg>
<var>${url}</var>
<arg>${url}/${filename}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:45.429129" elapsed="0.000361"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:45.429806" level="INFO">Executing command 'wget -q -N 'https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/netconf/netconf-testtool/9.0.2/netconf-testtool-9.0.2-executable.jar' 2&gt;&amp;1'.</msg>
<msg time="2026-04-05T00:35:45.725523" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:35:45.725769" level="INFO">${response} = </msg>
<msg time="2026-04-05T00:35:45.725854" level="INFO">${result} = 0</msg>
<var>${response}</var>
<var>${result}</var>
<arg>wget -q -N '${url}' 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:45.429643" elapsed="0.296263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.726475" level="INFO"/>
<arg>${response}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:45.726170" elapsed="0.000348"/>
</kw>
<if>
<branch type="IF" condition="${result} == 0">
<return>
<value>${filename}</value>
<status status="PASS" start="2026-04-05T00:35:45.726720" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-05T00:35:45.726597" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:45.726576" elapsed="0.000233"/>
</if>
<kw name="Replace String Using Regexp" owner="String">
<var>${release_url}</var>
<arg>${url}</arg>
<arg>autorelease-[0-9]{4}</arg>
<arg>opendaylight.release</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.726960" elapsed="0.000022"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${response}</var>
<var>${result}</var>
<arg>wget -q -N '${release_url}' 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.727136" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="${result} != 0">
<kw name="Fail" owner="BuiltIn">
<arg>Artifact "${artifact}" in component "${component}" could not be downloaded from ${release_url} nor ${url}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.727360" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:45.727226" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:35:45.727210" elapsed="0.000262"/>
</if>
<return>
<value>${filename}</value>
<status status="NOT RUN" start="2026-04-05T00:35:45.727506" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:35:45.727652" level="INFO">${filename} = netconf-testtool-9.0.2-executable.jar</msg>
<var>${filename}</var>
<arg>${component}</arg>
<arg>${artifact}</arg>
<arg>${name_prefix}</arg>
<arg>${name_suffix}</arg>
<arg>${fallback_url}</arg>
<arg>${explicit_url}</arg>
<arg>${build_version}</arg>
<arg>${build_location}</arg>
<doc>Deploy the specified artifact from Nexus to the cwd of the machine to which the active SSHLibrary connection points.
netconf is a name part of an artifact present in system/ of ODl installation with the same version as netconf-testtool should have.
Must have https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/karaf/0.22.2-SNAPSHOT/karaf-0.22.2-20260401.071003-721.zip variable set to the URL from which the
tested ODL distribution was downloaded and this place must be
inside a repository created by a standard distribution
construction job. If this is detected to ne be the case, fallback URL is used.
If  is non-empty, Deploy_From_Utrl is called instead.
TODO: Allow deploying to a specific directory, we have SSHKeywords.Execute_Command_At_Cwd_Should_Pass now.</doc>
<status status="PASS" start="2026-04-05T00:35:44.766451" elapsed="0.961226"/>
</kw>
<return>
<value>${filename}</value>
<status status="PASS" start="2026-04-05T00:35:45.727791" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:35:45.727944" level="INFO">${filename} = netconf-testtool-9.0.2-executable.jar</msg>
<var>${filename}</var>
<arg>netconf</arg>
<arg>netconf-testtool</arg>
<doc>Deploy a test tool.
The test tools have naming convention of the form
"&lt;repository_url&gt;/some/dir/somewhere/&lt;tool-name&gt;/&lt;tool-name&gt;-&lt;version-tag&gt;-${suffix}.jar"
where "&lt;tool-name&gt;" is the name of the tool and "&lt;version-tag&gt;" is
the version tag that is digged out of the maven metadata. This
keyword calculates ${name_prefix} and ${name_suffix} for
"Deploy_Artifact" and then calls "Deploy_Artifact" to do the real
work of deploying the artifact.</doc>
<status status="PASS" start="2026-04-05T00:35:44.758409" elapsed="0.969560"/>
</kw>
<kw name="Start_Testtool" owner="NetconfKeywords">
<kw name="NetconfKeywords__Deploy_Additional_Schemas" owner="NetconfKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:45.729773" level="INFO">Executing command 'rm -rf schemas 2&gt;&amp;1'.</msg>
<msg time="2026-04-05T00:35:45.777048" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:35:45.777154" level="INFO">${response} = </msg>
<var>${response}</var>
<arg>rm -rf schemas 2&gt;&amp;1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:45.729673" elapsed="0.047507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.777647" level="INFO"/>
<arg>${response}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:45.777344" elapsed="0.000346"/>
</kw>
<if>
<branch type="IF" condition="'${schemas}' == 'none'">
<return>
<value>${EMPTY}</value>
<status status="NOT RUN" start="2026-04-05T00:35:45.777880" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:45.777760" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:45.777741" elapsed="0.000206"/>
</if>
<kw name="Put Directory" owner="SSHLibrary">
<msg time="2026-04-05T00:35:45.821765" level="INFO">[chan 5] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-05T00:35:45.904995" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/yang-ext@2013-07-09.yang' -&gt; '/home/jenkins/./schemas/yang-ext@2013-07-09.yang'</msg>
<msg time="2026-04-05T00:35:45.905056" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/example-action@2016-07-07.yang' -&gt; '/home/jenkins/./schemas/example-action@2016-07-07.yang'</msg>
<msg time="2026-04-05T00:35:45.905094" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/car@2014-08-18.yang' -&gt; '/home/jenkins/./schemas/car@2014-08-18.yang'</msg>
<msg time="2026-04-05T00:35:45.905132" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/car-purchase@2014-08-18.yang' -&gt; '/home/jenkins/./schemas/car-purchase@2014-08-18.yang'</msg>
<msg time="2026-04-05T00:35:45.905168" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/ncmount-l2fib@2016-03-07.yang' -&gt; '/home/jenkins/./schemas/ncmount-l2fib@2016-03-07.yang'</msg>
<msg time="2026-04-05T00:35:45.905202" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/augment-main-a@2014-01-21.yang' -&gt; '/home/jenkins/./schemas/augment-main-a@2014-01-21.yang'</msg>
<msg time="2026-04-05T00:35:45.905235" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/ietf-netconf-monitoring@2010-10-04.yang' -&gt; '/home/jenkins/./schemas/ietf-netconf-monitoring@2010-10-04.yang'</msg>
<msg time="2026-04-05T00:35:45.905268" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/ietf-netconf-monitoring-extension@2013-12-10.yang' -&gt; '/home/jenkins/./schemas/ietf-netconf-monitoring-extension@2013-12-10.yang'</msg>
<msg time="2026-04-05T00:35:45.905302" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/people@2014-08-18.yang' -&gt; '/home/jenkins/./schemas/people@2014-08-18.yang'</msg>
<msg time="2026-04-05T00:35:45.905335" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/test@2014-10-18.yang' -&gt; '/home/jenkins/./schemas/test@2014-10-18.yang'</msg>
<msg time="2026-04-05T00:35:45.905369" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/car-people@2014-08-18.yang' -&gt; '/home/jenkins/./schemas/car-people@2014-08-18.yang'</msg>
<msg time="2026-04-05T00:35:45.905402" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/ietf-inet-types@2010-09-24.yang' -&gt; '/home/jenkins/./schemas/ietf-inet-types@2010-09-24.yang'</msg>
<msg time="2026-04-05T00:35:45.905458" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/main@2014-01-21.yang' -&gt; '/home/jenkins/./schemas/main@2014-01-21.yang'</msg>
<arg>${schemas}</arg>
<arg>destination=./schemas</arg>
<doc>Uploads a directory, including its content, from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-05T00:35:45.778092" elapsed="0.127439"/>
</kw>
<kw name="List Directory" owner="SSHLibrary">
<msg time="2026-04-05T00:35:45.909486" level="INFO">13 items:
augment-main-a@2014-01-21.yang
car-people@2014-08-18.yang
car-purchase@2014-08-18.yang
car@2014-08-18.yang
example-action@2016-07-07.yang
ietf-inet-types@2010-09-24.yang
ietf-netconf-monitoring-extension@2013-12-10.yang
ietf-netconf-monitoring@2010-10-04.yang
main@2014-01-21.yang
ncmount-l2fib@2016-03-07.yang
people@2014-08-18.yang
test@2014-10-18.yang
yang-ext@2013-07-09.yang</msg>
<arg>./schemas</arg>
<doc>Returns and logs items in the remote ``path``, optionally filtered with ``pattern``.</doc>
<status status="PASS" start="2026-04-05T00:35:45.905806" elapsed="0.003769"/>
</kw>
<return>
<value>--schemas-dir ./schemas</value>
<status status="PASS" start="2026-04-05T00:35:45.909643" elapsed="0.000055"/>
</return>
<msg time="2026-04-05T00:35:45.909868" level="INFO">${schemas_option} = --schemas-dir ./schemas</msg>
<var>${schemas_option}</var>
<arg>${schemas}</arg>
<doc>Internal keyword for Install_And_Start_TestTool
This deploys the additional schemas if any and returns a
command line argument to be added to the testtool commandline
to tell it to load them. While this code could be integrated
into its only user, I considered the resulting code to be too
unreadable as the actions are quite different in the two
possibilities (additional schemas present versus no additional
schemas present), therefore a separate keyword is used.</doc>
<status status="PASS" start="2026-04-05T00:35:45.729111" elapsed="0.180792"/>
</kw>
<kw name="NetconfKeywords__Deploy_Custom_RPC" owner="NetconfKeywords">
<if>
<branch type="IF" condition="'${rpc_config}' == 'none'">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:35:45.910874" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-05T00:35:45.910706" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:45.910677" elapsed="0.000315"/>
</if>
<kw name="Copy_File_To_Tools_System" owner="SSHKeywords">
<arg>${TOOLS_SYSTEM_1_IP}</arg>
<arg>${rpc_config}</arg>
<arg>/tmp</arg>
<doc>Wrapper keyword to make it easier to copy a file to an Tools specific system</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.911317" elapsed="0.000034"/>
</kw>
<return>
<value>--rpc-config /tmp/customaction.xml</value>
<status status="NOT RUN" start="2026-04-05T00:35:45.911416" elapsed="0.000043"/>
</return>
<msg time="2026-04-05T00:35:45.914167" level="INFO">${rpc_config_option} = </msg>
<var>${rpc_config_option}</var>
<arg>${rpc_config}</arg>
<doc>Internal keyword for Install_And_Start_TestTool
This deploys the optional custom rpc file.
Drop out of the keyword, returning no command line argument when there
is no rpc file to deploy.</doc>
<status status="PASS" start="2026-04-05T00:35:45.910308" elapsed="0.003895"/>
</kw>
<kw name="Compose_Full_Java_Command" owner="NexusKeywords">
<kw name="Compose_Base_Java_Command" owner="NexusKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${openjdk}""" == "openjdk8"</arg>
<arg>Compose_Dilemma_Filepath</arg>
<arg>${JAVA_8_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_8_HOME_UBUNTU}/bin/java</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:45.916148" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${openjdk}""" == "openjdk11"</arg>
<arg>Compose_Dilemma_Filepath</arg>
<arg>${JAVA_11_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_11_HOME_UBUNTU}/bin/java</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:45.916690" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${openjdk}""" == "openjdk17"</arg>
<arg>Compose_Dilemma_Filepath</arg>
<arg>${JAVA_17_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_17_HOME_UBUNTU}/bin/java</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:45.917153" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Compose_Dilemma_Filepath" owner="NexusKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:45.918685" level="INFO">Executing command 'ls -lA /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2&gt;&amp;1'.</msg>
<msg time="2026-04-05T00:35:45.930595" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:35:45.930739" level="INFO">${out} = -rwxr-xr-x 1 root root 14456 Jan 22 23:45 /usr/lib/jvm/java-21-openjdk-amd64/bin/java</msg>
<msg time="2026-04-05T00:35:45.930799" level="INFO">${rc} = 0</msg>
<var>${out}</var>
<var>${rc}</var>
<arg>ls -lA ${specific_path} 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:45.918509" elapsed="0.012321"/>
</kw>
<if>
<branch type="IF" condition="${rc} == 0">
<return>
<value>${specific_path}</value>
<status status="PASS" start="2026-04-05T00:35:45.931090" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-05T00:35:45.930940" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:45.930914" elapsed="0.000293"/>
</if>
<return>
<value>${default_path}</value>
<status status="NOT RUN" start="2026-04-05T00:35:45.931254" elapsed="0.000019"/>
</return>
<arg>${JAVA_21_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_21_HOME_UBUNTU}/bin/java</arg>
<doc>Query active SSH connection, return specific path if it exists else default path.</doc>
<status status="PASS" start="2026-04-05T00:35:45.918112" elapsed="0.013292"/>
</kw>
<msg time="2026-04-05T00:35:45.931494" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>"""${openjdk}""" == "openjdk21"</arg>
<arg>Compose_Dilemma_Filepath</arg>
<arg>${JAVA_21_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_21_HOME_UBUNTU}/bin/java</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:35:45.917626" elapsed="0.013938"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${out}</var>
<var>${rc}</var>
<arg>java -version 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.931835" elapsed="0.000031"/>
</kw>
<if>
<branch type="IF" condition="${rc} == 0">
<return>
<value>java</value>
<status status="NOT RUN" start="2026-04-05T00:35:45.932110" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:45.932020" elapsed="0.000179"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:35:45.931978" elapsed="0.000267"/>
</if>
<kw name="Execute Command" owner="SSHLibrary">
<var>${java}</var>
<arg>echo $JAVA_HOME/bin/java 2&gt;&amp;1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.932582" elapsed="0.000048"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${out}</var>
<var>${rc}</var>
<arg>${java} -version 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.932955" elapsed="0.000044"/>
</kw>
<if>
<branch type="IF" condition="${rc} == 0">
<return>
<value>${java}</value>
<status status="NOT RUN" start="2026-04-05T00:35:45.933228" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:45.933151" elapsed="0.000162"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:35:45.933115" elapsed="0.000245"/>
</if>
<kw name="Get Environment Variable" owner="OperatingSystem">
<var>${JAVA_HOME}</var>
<arg>JAVA_HOME</arg>
<arg>${EMPTY}</arg>
<doc>Returns the value of an environment variable with the given name.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.933689" elapsed="0.000048"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${java}</var>
<arg>"""${JAVA_HOME}"""!=""</arg>
<arg>${JAVA_HOME}/bin/java</arg>
<arg>false</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.934079" elapsed="0.000044"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${out}</var>
<var>${rc}</var>
<arg>${java} -version 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.934482" elapsed="0.000046"/>
</kw>
<if>
<branch type="IF" condition="${rc} == 0">
<return>
<value>${java}</value>
<status status="NOT RUN" start="2026-04-05T00:35:45.934757" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:45.934682" elapsed="0.000163"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:35:45.934647" elapsed="0.000245"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unable to find Java; specify \${JDKVERSION}, put it to your PATH or set JAVA_HOME environment variable.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.935185" elapsed="0.000045"/>
</kw>
<msg time="2026-04-05T00:35:45.935481" level="INFO">${base_command} = /usr/lib/jvm/java-21-openjdk-amd64/bin/java</msg>
<var>${base_command}</var>
<arg>openjdk=${openjdk}</arg>
<doc>Return string suitable for launching Java programs over SSHLibrary, depending on JRE version needed.
This requires that the SSH connection on which the command is going to be used is active as it is needed for querying files.
Commands composed for one SSH connection shall not be reused on other SSH connections as the two connections may have different Java setups.
Not directly related to Nexus, but versioned Java tools may need this.</doc>
<status status="PASS" start="2026-04-05T00:35:45.915622" elapsed="0.019917"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.936658" level="INFO">${full_command} = /usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas  --md-sal t...</msg>
<var>${full_command}</var>
<arg>${base_command} ${options}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:35:45.935890" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.937718" level="INFO">/usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas  --md-sal true</msg>
<arg>${full_command}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:45.937132" elapsed="0.000687"/>
</kw>
<return>
<value>${full_command}</value>
<status status="PASS" start="2026-04-05T00:35:45.937914" elapsed="0.000461"/>
</return>
<msg time="2026-04-05T00:35:45.938699" level="INFO">${command} = /usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas  --md-sal t...</msg>
<var>${command}</var>
<arg>${java_options} -jar ${filename} ${tool_options} --device-count ${device-count} --debug ${debug} ${schemas_option} ${rpc_config_option} --md-sal ${mdsal}</arg>
<doc>Return full Bash command to run Java with given options.
This requires that the SSH connection on which the command is going to be used is active as it is needed for querying files.
The options may include JVM options, application command line arguments, Bash redirects and other constructs.</doc>
<status status="PASS" start="2026-04-05T00:35:45.914537" elapsed="0.024223"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.939746" level="INFO">Running testtool: /usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas  --md-sal true</msg>
<arg>Running testtool: ${command}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:35:45.939101" elapsed="0.000750"/>
</kw>
<kw name="Get Log File Name" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.942653" level="INFO">${name} = netconf-userfeatures-txt-CRUD-CRUD-RPC</msg>
<var>${name}</var>
<arg>"""${SUITE_NAME}""".replace(" ","-").replace("/","-").replace(".","-")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:45.942284" elapsed="0.000396"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.944951" level="INFO">${suffix} = </msg>
<var>${suffix}</var>
<arg>'${testcase}' != ''</arg>
<arg>--${testcase}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:35:45.942840" elapsed="0.002138"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-05T00:35:45.945326" level="INFO">${date} = 2026-04-05 00:35:45.945</msg>
<var>${date}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-05T00:35:45.945139" elapsed="0.000212"/>
</kw>
<kw name="Convert Date" owner="DateTime">
<msg time="2026-04-05T00:35:45.950048" level="INFO">${timestamp} = 1775349345.945</msg>
<var>${timestamp}</var>
<arg>${date}</arg>
<arg>epoch</arg>
<doc>Converts between supported `date formats`.</doc>
<status status="PASS" start="2026-04-05T00:35:45.945511" elapsed="0.004577"/>
</kw>
<return>
<value>${testtool}--${name}${suffix}.${timestamp}.log</value>
<status status="PASS" start="2026-04-05T00:35:45.950158" elapsed="0.000041"/>
</return>
<msg time="2026-04-05T00:35:45.950513" level="INFO">${logfile} = testtool--netconf-userfeatures-txt-CRUD-CRUD-RPC.1775349345.945.log</msg>
<var>${logfile}</var>
<arg>testtool</arg>
<doc>Get the name of the suite sanitized to be usable as a part of filename.
These names are used to constructs names of the log files produced
by the testing tools so two suites using a tool wont overwrite the
log files if they happen to run in one job.</doc>
<status status="PASS" start="2026-04-05T00:35:45.940209" elapsed="0.010341"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.956953" level="INFO">${testtool_log} = testtool--netconf-userfeatures-txt-CRUD-CRUD-RPC.1775349345.945.log</msg>
<arg>${testtool_log}</arg>
<arg>${logfile}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:45.950779" elapsed="0.006239"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:35:45.972934" level="INFO">/usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas  --md-sal true &gt;testtool--netconf-userfeatures-txt-CRUD-CRUD-RPC.1775349345.945.log 2&gt;&amp;1</msg>
<arg>${command} &gt;${logfile} 2&gt;&amp;1</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:35:45.957231" elapsed="0.015763"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.976941" level="INFO">${NetconfKeywords__testtool_device_count} = 1</msg>
<arg>${NetconfKeywords__testtool_device_count}</arg>
<arg>${device-count}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:45.973157" elapsed="0.003830"/>
</kw>
<kw name="Perform_Operation_On_Each_Device" owner="NetconfKeywords">
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-05T00:35:45.977797" level="INFO">${current_Date} = 2026-04-05 00:35:45.978</msg>
<var>${current_Date}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-05T00:35:45.977644" elapsed="0.000180"/>
</kw>
<kw name="Add Time To Date" owner="DateTime">
<msg time="2026-04-05T00:35:45.978309" level="INFO">${deadline_Date} = 2026-04-05 01:20:45.978</msg>
<var>${deadline_Date}</var>
<arg>${current_Date}</arg>
<arg>${timeout}</arg>
<doc>Adds time to date and returns the resulting date.</doc>
<status status="PASS" start="2026-04-05T00:35:45.977968" elapsed="0.000367"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.982862" level="INFO">${current_port} = 17830</msg>
<arg>${current_port}</arg>
<arg>${BASE_NETCONF_DEVICE_PORT}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:35:45.978510" elapsed="0.004397"/>
</kw>
<kw name="Repeat Keyword" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.983382" level="INFO">Repeating keyword, round 1/1.</msg>
<kw name="NetconfKeywords__Perform_Operation_With_Checking_On_Next_Device" owner="NetconfKeywords">
<kw name="NetconfKeywords__Check_Netconf_Test_Timeout_Not_Expired" owner="NetconfKeywords">
<if>
<branch type="IF" condition="not ${ENABLE_NETCONF_TEST_TIMEOUT}">
<return>
<status status="NOT RUN" start="2026-04-05T00:35:45.984522" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:35:45.984397" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:45.984378" elapsed="0.000207"/>
</if>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-05T00:35:45.984881" level="INFO">${current_Date} = 2026-04-05 00:35:45.985</msg>
<var>${current_Date}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-05T00:35:45.984729" elapsed="0.000177"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<msg time="2026-04-05T00:35:45.985359" level="INFO">${ellapsed_seconds} = 2699.993</msg>
<var>${ellapsed_seconds}</var>
<arg>${deadline_Date}</arg>
<arg>${current_Date}</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="PASS" start="2026-04-05T00:35:45.985052" elapsed="0.000333"/>
</kw>
<if>
<branch type="IF" condition="${ellapsed_seconds}&lt;0">
<kw name="Fail" owner="BuiltIn">
<arg>The global time out period expired</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:35:45.985750" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:35:45.985507" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:45.985487" elapsed="0.000342"/>
</if>
<arg>${deadline_Date}</arg>
<status status="PASS" start="2026-04-05T00:35:45.984165" elapsed="0.001710"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.986380" level="INFO">${number} = 1</msg>
<var>${number}</var>
<arg>${current_port}-${BASE_NETCONF_DEVICE_PORT}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:45.986018" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="NetconfKeywords__Wait_Device_Is_Up_And_Running" owner="NetconfKeywords">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.987841" level="INFO">${number} = 1</msg>
<var>${number}</var>
<arg>'${device_name}'.split('-').pop()</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:45.987490" elapsed="0.000377"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Up_And_Running" owner="NetconfKeywords">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:35:45.989766" level="INFO">${device-port} = 17830</msg>
<var>${device-port}</var>
<arg>${FIRST_TESTTOOL_PORT}+${device-number}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:35:45.989027" elapsed="0.000767"/>
</kw>
<kw name="NetconfKeywords__Check_Device_Is_Up" owner="NetconfKeywords">
<kw name="Count_Port_Occurences" owner="SSHKeywords">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Check_And_Install_Netstat" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:45.992492" level="INFO">Executing command 'netstat --version'.</msg>
<msg time="2026-04-05T00:35:46.004465" level="INFO">Command exited with return code 127.</msg>
<msg time="2026-04-05T00:35:46.004690" level="INFO">${netstat_installed} = </msg>
<var>${netstat_installed}</var>
<arg>netstat --version</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:45.992381" elapsed="0.012365"/>
</kw>
<if>
<branch type="IF" condition="'${netstat_installed}' is not string and '${netstat_installed}' != '0'">
<kw name="Install_Netstat" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:46.006548" level="INFO">Executing command 'sudo apt-get update'.</msg>
<msg time="2026-04-05T00:35:57.233409" level="INFO">Command exited with return code 0.</msg>
<arg>sudo apt-get update</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:46.006299" elapsed="11.227453"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:35:57.234615" level="INFO">Executing command 'sudo apt-get install -y net-tools'.</msg>
<msg time="2026-04-05T00:36:06.032084" level="INFO">Command exited with return code 0.</msg>
<arg>sudo apt-get install -y net-tools</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:35:57.234275" elapsed="8.798204"/>
</kw>
<doc>Install netstat if it is not already installed.</doc>
<status status="PASS" start="2026-04-05T00:35:46.005687" elapsed="20.027055"/>
</kw>
<status status="PASS" start="2026-04-05T00:35:46.004917" elapsed="20.027909"/>
</branch>
<status status="PASS" start="2026-04-05T00:35:46.004869" elapsed="20.028046"/>
</if>
<doc>Check if netstat is installed and install it if not.</doc>
<status status="PASS" start="2026-04-05T00:35:45.992115" elapsed="20.040917"/>
</kw>
<arg>Check_And_Install_Netstat</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:35:45.991618" elapsed="20.041670"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:06.035550" level="INFO">Executing command 'netstat -punta 2&gt; /dev/null | grep -E ":17830 .+ LISTEN .+java" | wc -l'.</msg>
<msg time="2026-04-05T00:36:06.086412" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:06.086928" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>${NETSTAT_COMMAND} 2&gt; /dev/null | grep -E ":${port} .+ ${state} .+${name}" | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:06.034573" elapsed="0.052435"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:36:06.087194" elapsed="0.000171"/>
</return>
<msg time="2026-04-05T00:36:06.088033" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>${last-port}</arg>
<arg>LISTEN</arg>
<arg>java</arg>
<doc>Run 'netstat' on the remote machine and count occurences of given port in the given state connected to process with the given name.</doc>
<status status="PASS" start="2026-04-05T00:35:45.990565" elapsed="20.097563"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-05T00:36:06.088752" elapsed="0.001742"/>
</kw>
<arg>${device-port}</arg>
<status status="PASS" start="2026-04-05T00:35:45.989972" elapsed="20.100691"/>
</kw>
<arg>${number}</arg>
<doc>Query netstat on remote machine whether testtool device with the specified number has its port open and fail if not.</doc>
<status status="PASS" start="2026-04-05T00:35:45.988707" elapsed="20.102041"/>
</kw>
<arg>${TESTTOOL_BOOT_TIMEOUT}</arg>
<arg>1s</arg>
<arg>Check_Device_Up_And_Running</arg>
<arg>${number}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:35:45.988029" elapsed="20.102790"/>
</kw>
<arg>${DEVICE_NAME_BASE}-${number}</arg>
<arg>log_response=${log_response}</arg>
<status status="PASS" start="2026-04-05T00:35:45.987038" elapsed="20.103870"/>
</kw>
<arg>${operation}</arg>
<arg>${DEVICE_NAME_BASE}-${number}</arg>
<arg>log_response=${log_response}</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:35:45.986587" elapsed="20.104390"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.091790" level="INFO">${next} = 17831</msg>
<var>${next}</var>
<arg>${current_port}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:06.091210" elapsed="0.000619"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.092706" level="INFO">${current_port} = 17831</msg>
<arg>${current_port}</arg>
<arg>${next}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:06.092075" elapsed="0.000692"/>
</kw>
<arg>${operation}</arg>
<arg>${deadline_Date}</arg>
<arg>log_response=${log_response}</arg>
<status status="PASS" start="2026-04-05T00:35:45.983591" elapsed="20.109261"/>
</kw>
<arg>${count} times</arg>
<arg>NetconfKeywords__Perform_Operation_With_Checking_On_Next_Device</arg>
<arg>${operation}</arg>
<arg>${deadline_Date}</arg>
<arg>log_response=${log_response}</arg>
<doc>Executes the specified keyword multiple times.</doc>
<status status="PASS" start="2026-04-05T00:35:45.983064" elapsed="20.109866"/>
</kw>
<arg>NetconfKeywords__Wait_Device_Is_Up_And_Running</arg>
<arg>log_response=${log_response}</arg>
<status status="PASS" start="2026-04-05T00:35:45.977182" elapsed="20.115839"/>
</kw>
<arg>${filename}</arg>
<arg>${device-count}</arg>
<arg>${debug}</arg>
<arg>${schemas}</arg>
<arg>${rpc_config}</arg>
<arg>${tool_options}</arg>
<arg>${java_options}</arg>
<arg>${mdsal}</arg>
<arg>log_response=${log_response}</arg>
<doc>Arrange to collect tool's output into a log file.
Will use specific /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas unless argument resolves to 'none',
which signifies that there are no additional schemas to be deployed.
If so the directory for the additional schemas is deleted on the
remote machine and the additional schemas argument is left out.</doc>
<status status="PASS" start="2026-04-05T00:35:45.728253" elapsed="20.364850"/>
</kw>
<arg>device-count=1</arg>
<arg>schemas=/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas</arg>
<arg>mdsal=true</arg>
<doc>Install and run testtool.</doc>
<status status="PASS" start="2026-04-05T00:35:44.743905" elapsed="21.349444"/>
</kw>
<doc>Deploy and start test tool, then wait for all its devices to become online.</doc>
<status status="PASS" start="2026-04-05T00:35:44.662525" elapsed="21.431052"/>
</test>
<test id="s1-s4-s1-t2" name="Check_Device_Is_Not_Configured_At_Beginning" line="56">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:06.099381" elapsed="0.000233"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:06.099109" elapsed="0.000561"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.100793" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.100662" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.100637" elapsed="0.000228"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.106175" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.106064" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.106044" elapsed="0.000201"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.107276" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:06.106881" elapsed="0.000422"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.107784" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:06.107483" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:06.107854" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:06.108009" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:06.106500" elapsed="0.001534"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.113474" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.113348" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.113329" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.114806" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.114699" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.114681" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:06.115403" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.115019" elapsed="0.000428"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:06.115867" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:06.115609" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:06.151269" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:06.116450" elapsed="0.035066"/>
</kw>
<msg time="2026-04-05T00:36:06.151765" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:06.151812" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.116047" elapsed="0.035804"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:06.179856" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "I "s "_ "N "o "t "_ "C "o "n "f "i "g "u "r "e "d "_ "A "t "_ "B "e "g "i "n "n "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:06.152579" elapsed="0.027836"/>
</kw>
<msg time="2026-04-05T00:36:06.180875" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:06.180946" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "I "s "_ "N "o "t "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.152081" elapsed="0.028920"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.182093" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.181446" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.181336" elapsed="0.000975"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.183400" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "I "s "_ "N "o "t "_ "C "o "n "f "i "g "u "r "e "d "_ "A "t "_ "B "e "g "i "n "n "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.182559" elapsed="0.000976"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.183939" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.183637" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.183609" elapsed="0.000470"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:06.184142" elapsed="0.000080"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:06.188518" elapsed="0.000175"/>
</kw>
<msg time="2026-04-05T00:36:06.188769" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:06.187662" elapsed="0.001230"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.190244" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.191242" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:06.185725" elapsed="0.005646"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:06.184703" elapsed="0.006855"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:06.114373" elapsed="0.077291"/>
</kw>
<msg time="2026-04-05T00:36:06.191775" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:06.191821" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "I "s "_ "N "o "t "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.113687" elapsed="0.078174"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:06.192065" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:06.191949" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.191927" elapsed="0.000229"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.192667" elapsed="0.000029"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.193040" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.193114" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:06.113011" elapsed="0.080218"/>
</kw>
<msg time="2026-04-05T00:36:06.193331" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:06.193377" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "I "s "_ "N "o "t "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.108460" elapsed="0.084957"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.193779" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.193516" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.193498" elapsed="0.000359"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:06.108299" elapsed="0.085583"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:06.108103" elapsed="0.085823"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:06.105668" elapsed="0.088330"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:06.100298" elapsed="0.093808"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.099819" elapsed="0.094348"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:06.095391" elapsed="0.098901"/>
</kw>
<kw name="Check_Device_Has_No_Netconf_Connector" owner="NetconfKeywords">
<kw name="Count_Netconf_Connectors_For_Device" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.206805" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:06.204372" elapsed="0.002468"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.207237" elapsed="0.000023"/>
</kw>
<var name="${nv}"/>
<status status="NOT RUN" start="2026-04-05T00:36:06.207073" elapsed="0.000226"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.206917" elapsed="0.000420"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.207696" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.207412" elapsed="0.000344"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.208558" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:06.208027" elapsed="0.000559"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.207786" elapsed="0.000836"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.208814" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.208647" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.207392" elapsed="0.001501"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:06.208934" elapsed="0.000042"/>
</return>
<msg time="2026-04-05T00:36:06.209107" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:06.203865" elapsed="0.005268"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:06.209187" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:06.209333" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:06.203257" elapsed="0.006102"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.216774" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.216491" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.217219" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.216973" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:06.236928" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:06.239117" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 04-Apr-2026 00:36:06 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1181'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-05T00:36:06.241646" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:06.219636" elapsed="0.022090"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.217336" elapsed="0.024534"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.242642" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.241960" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.217316" elapsed="0.025430"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.247213" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.244316" elapsed="0.002953"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.244040" elapsed="0.003266"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.243932" elapsed="0.003399"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.249983" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.247635" elapsed="0.002394"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.247387" elapsed="0.002678"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.247370" elapsed="0.002719"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.250813" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:06.250351" elapsed="0.000489"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.251147" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.250912" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.251715" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:06.251386" elapsed="0.000356"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.251229" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.250893" elapsed="0.000905"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.252310" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:06.251950" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.252648" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.252404" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.253175" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:06.252881" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.252728" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.252387" elapsed="0.000871"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:06.253416" elapsed="0.000370"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:06.254288" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:06.253946" elapsed="0.000368"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.254482" elapsed="0.002774"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:06.243296" elapsed="0.014031"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.257552" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.257399" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.257381" elapsed="0.000246"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:06.260848" level="INFO">${text_normalized} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:06.257770" elapsed="0.003107"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:06.260958" elapsed="0.000050"/>
</return>
<msg time="2026-04-05T00:36:06.261149" level="INFO">${response_text} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:06.212127" elapsed="0.049048"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:06.261394" elapsed="0.000051"/>
</return>
<msg time="2026-04-05T00:36:06.261576" level="INFO">${mounts} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${mounts}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:06.209608" elapsed="0.051995"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.262016" level="INFO">{
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topology-parameters": {
       "encryption": {
        "encryption-alg": [
         "AEAD_AES_128_GCM",
         "AEAD_AES_256_GCM",
         "aes128-cbc",
         "aes128-ctr",
         "aes192-cbc",
         "aes192-ctr",
         "aes256-cbc",
         "aes256-ctr",
         "chacha20-poly1305"
        ]
       },
       "host-key": {
        "host-key-alg": [
         "ecdsa-sha2-nistp256",
         "ecdsa-sha2-nistp384",
         "ecdsa-sha2-nistp521",
         "rsa-sha2-256",
         "rsa-sha2-512",
         "ssh-ed25519",
         "ssh-rsa"
        ]
       },
       "key-exchange": {
        "key-exchange-alg": [
         "curve25519-sha256",
         "curve448-sha512",
         "diffie-hellman-group-exchange-sha256",
         "diffie-hellman-group14-sha256",
         "diffie-hellman-group15-sha512",
         "diffie-hellman-group16-sha512",
         "diffie-hellman-group17-sha512",
         "diffie-hellman-group18-sha512",
         "ecdh-sha2-nistp256",
         "ecdh-sha2-nistp384",
         "ecdh-sha2-nistp521",
         "mlkem1024nistp384-sha384",
         "mlkem768nistp256-sha256",
         "mlkem768x25519-sha256",
         "sntrup761x25519-sha512"
        ]
       },
       "mac": {
        "mac-alg": [
         "hmac-sha1",
         "hmac-sha2-256",
         "hmac-sha2-512"
        ]
       }
      }
     }
    }
   },
   {
    "topology-id": "flow:1"
   },
   {
    "topology-id": "hwvtep:1"
   },
   {
    "topology-id": "ovsdb:1"
   }
  ]
 }
}
</msg>
<arg>${mounts}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.261760" elapsed="0.000312"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.262658" level="INFO">${actual_count} = 0</msg>
<var>${actual_count}</var>
<arg>len('''${mounts}'''.split('"node-id": "${device_name}"'))-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:06.262221" elapsed="0.000470"/>
</kw>
<return>
<value>${actual_count}</value>
<status status="PASS" start="2026-04-05T00:36:06.262744" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:06.262904" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Count all instances of the specified device in the Netconf topology (usually 0 or 1).</doc>
<status status="PASS" start="2026-04-05T00:36:06.195051" elapsed="0.067879"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.263377" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${count}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:06.263100" elapsed="0.000350"/>
</kw>
<arg>${device_name}</arg>
<doc>Check that there are no instances of the specified device in the Netconf topology.</doc>
<status status="PASS" start="2026-04-05T00:36:06.194610" elapsed="0.068906"/>
</kw>
<doc>Sanity check making sure our device is not there. Fail if found.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:06.094004" elapsed="0.169672"/>
</test>
<test id="s1-s4-s1-t3" name="Configure_Device_On_Netconf" line="61">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:06.267297" elapsed="0.000249"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:06.267024" elapsed="0.000578"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.268655" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.268542" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.268522" elapsed="0.000214"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.273655" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.273549" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.273531" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.274756" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:06.274352" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.275233" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:06.274937" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:06.275302" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:06.275475" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:06.273952" elapsed="0.001549"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.283737" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.283603" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.283469" elapsed="0.000347"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.285178" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.285071" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.285052" elapsed="0.000255"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:06.285888" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.285489" elapsed="0.000426"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:06.286346" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:06.286074" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:06.321076" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:06.286928" elapsed="0.034433"/>
</kw>
<msg time="2026-04-05T00:36:06.321738" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:06.321785" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.286543" elapsed="0.035279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:06.342276" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "O "n "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:06.322837" elapsed="0.019828"/>
</kw>
<msg time="2026-04-05T00:36:06.342950" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:06.342996" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "O "n "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.322140" elapsed="0.020895"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.343984" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.343196" elapsed="0.000893"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.343139" elapsed="0.000985"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.344864" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "O "n "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.344280" elapsed="0.000657"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.345228" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.345007" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.344988" elapsed="0.000341"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:06.345378" elapsed="0.000077"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:06.349021" elapsed="0.000164"/>
</kw>
<msg time="2026-04-05T00:36:06.349264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:06.348123" elapsed="0.001257"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.350363" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.351367" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:06.346513" elapsed="0.005011"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:06.345784" elapsed="0.005873"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:06.284767" elapsed="0.066995"/>
</kw>
<msg time="2026-04-05T00:36:06.351873" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:06.351917" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "O "n "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.283996" elapsed="0.067960"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:06.352158" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:06.352041" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.352019" elapsed="0.000237"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.352759" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.353174" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.353246" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:06.283073" elapsed="0.070284"/>
</kw>
<msg time="2026-04-05T00:36:06.353532" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:06.353579" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "O "n "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.275903" elapsed="0.077713"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.353950" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.353699" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.353680" elapsed="0.000347"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:06.275760" elapsed="0.078292"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:06.275569" elapsed="0.078523"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:06.273178" elapsed="0.080984"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:06.268231" elapsed="0.085990"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.267765" elapsed="0.086505"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:06.264766" elapsed="0.089560"/>
</kw>
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:06.375114" elapsed="0.000458"/>
</kw>
<msg time="2026-04-05T00:36:06.375659" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:06.374752" elapsed="0.000979"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:06.374311" elapsed="0.001503"/>
</kw>
<msg time="2026-04-05T00:36:06.375858" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:06.365247" elapsed="0.010664"/>
</kw>
<msg time="2026-04-05T00:36:06.376021" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:06.364847" elapsed="0.011198"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.376977" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.376209" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.410051" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:06.409619" elapsed="0.000470"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:06.411130" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:06.410777" elapsed="0.000446">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:06.411328" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:06.410266" elapsed="0.001087"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.412031" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:06.411636" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:06.412370" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:06.412577" level="INFO">${template} = $RESTCONF_ROOT/operations/netconf-node-topology:create-device
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:06.412220" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.413011" level="INFO">$RESTCONF_ROOT/operations/netconf-node-topology:create-device
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.412758" elapsed="0.000298"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.414377" level="INFO">mapping: {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.413862" elapsed="0.000581"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.414925" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.414635" elapsed="0.000316"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.415937" level="INFO">${value} = 10.30.170.167</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:06.415357" elapsed="0.000606"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:06.417113" level="INFO">${encoded} = 10.30.170.167</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.416611" elapsed="0.000543"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:06.417275" elapsed="0.000041"/>
</return>
<msg time="2026-04-05T00:36:06.417544" level="INFO">${encoded_value} = 10.30.170.167</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:06.416150" elapsed="0.001420"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.417724" elapsed="0.000521"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.167</var>
<status status="PASS" start="2026-04-05T00:36:06.415219" elapsed="0.003068"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.419127" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:06.418553" elapsed="0.000600"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:06.420299" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.419812" elapsed="0.000527"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:06.420473" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:06.420700" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:06.419337" elapsed="0.001389"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.420873" elapsed="0.000486"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:06.418407" elapsed="0.002993"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.422170" level="INFO">${value} = 17830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:06.421660" elapsed="0.000536"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:06.423341" level="INFO">${encoded} = 17830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.422854" elapsed="0.000527"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:06.423530" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:06.423755" level="INFO">${encoded_value} = 17830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:06.422376" elapsed="0.001403"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.423926" elapsed="0.000481"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">17830</var>
<status status="PASS" start="2026-04-05T00:36:06.421532" elapsed="0.003024"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.425290" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:06.424798" elapsed="0.000519"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:06.426441" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.425951" elapsed="0.000533"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:06.426683" elapsed="0.000038"/>
</return>
<msg time="2026-04-05T00:36:06.426924" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:06.425520" elapsed="0.001430"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.427096" elapsed="0.000510"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:36:06.424671" elapsed="0.002978"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.428386" level="INFO">${value} = topsecret</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:06.427890" elapsed="0.000522"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:06.429639" level="INFO">${encoded} = topsecret</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.429148" elapsed="0.000532"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:06.429797" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:06.430024" level="INFO">${encoded_value} = topsecret</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:06.428716" elapsed="0.001333"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.430194" elapsed="0.000516"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">topsecret</var>
<status status="PASS" start="2026-04-05T00:36:06.427762" elapsed="0.002992"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.431530" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:06.430998" elapsed="0.000559"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:06.432974" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.432378" elapsed="0.000635"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:06.433128" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:06.433350" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:06.431938" elapsed="0.001437"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.433536" elapsed="0.000470"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:36:06.430870" elapsed="0.003178"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.434861" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:06.434284" elapsed="0.000604"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:06.436014" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.435532" elapsed="0.000521"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:06.436170" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:06.436397" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:06.435071" elapsed="0.001457"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.436679" elapsed="0.000473"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:36:06.434158" elapsed="0.003037"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.437949" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:06.437452" elapsed="0.000524"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:06.439121" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.438607" elapsed="0.000555"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:06.439278" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:06.439540" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:06.438158" elapsed="0.001408"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.439711" elapsed="0.000476"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:06.437307" elapsed="0.002924"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:06.415015" elapsed="0.025250"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:06.440312" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:06.440582" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:06.413534" elapsed="0.027076"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.413149" elapsed="0.027495"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.440885" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.440726" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.413119" elapsed="0.027845"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.441892" level="INFO">${final_text} = /rests/operations/netconf-node-topology:create-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:06.441107" elapsed="0.000813"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:06.441968" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:06.408908" elapsed="0.033185"/>
</kw>
<msg time="2026-04-05T00:36:06.442150" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:06.395995" elapsed="0.046213"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.455599" elapsed="0.000098"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.472774" elapsed="0.000051"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.489794" elapsed="0.000061"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.490189" elapsed="0.000038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.490462" elapsed="0.000029"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.491097" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.490931" elapsed="0.000239"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:06.490902" elapsed="0.000316"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.491449" elapsed="0.000039"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.491734" elapsed="0.000031"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.491969" elapsed="0.000032"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:06.490791" elapsed="0.001255"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.490578" elapsed="0.001504"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.492240" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.492325" elapsed="0.000019"/>
</return>
<msg time="2026-04-05T00:36:06.492575" level="INFO">${uri} = /rests/operations/netconf-node-topology:create-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:06.391540" elapsed="0.101079"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.525868" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:06.525391" elapsed="0.000518"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:06.526771" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:06.526470" elapsed="0.000391">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:06.526986" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:06.526094" elapsed="0.000918"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.527589" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:06.527178" elapsed="0.000439"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:06.527926" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:06.528126" level="INFO">${template} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
   &lt;host&gt;$DEVICE_IP&lt;/host&gt;
   &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;$DEVICE_USER&lt;/usern...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:06.527776" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.528592" level="INFO">&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
   &lt;host&gt;$DEVICE_IP&lt;/host&gt;
   &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;$DEVICE_USER&lt;/username&gt;
     &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
   &lt;/login-password&gt;
   &lt;tcp-only&gt;false&lt;/tcp-only&gt;
   &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
 &lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.528312" elapsed="0.000332"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:06.529121" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.528740" elapsed="0.000442"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.529697" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:06.529361" elapsed="0.000364"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.529218" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.528706" elapsed="0.001076"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.530691" level="INFO">${final_text} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
   &lt;host&gt;10.30.170.167&lt;/host&gt;
   &lt;port&gt;17830&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;admin&lt;/username&gt;...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:06.529927" elapsed="0.000795"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:06.530777" elapsed="0.000038"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:06.524609" elapsed="0.006390"/>
</kw>
<msg time="2026-04-05T00:36:06.531061" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:06.507596" elapsed="0.023518"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.543629" elapsed="0.000059"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.556235" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.568552" elapsed="0.000036"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.568813" elapsed="0.000026"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.569003" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.569491" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.569318" elapsed="0.000233"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:06.569298" elapsed="0.000287"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.569729" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.569890" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.570049" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:06.569245" elapsed="0.000856"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.569102" elapsed="0.001031"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.570305" elapsed="0.000026"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.570398" elapsed="0.000020"/>
</return>
<msg time="2026-04-05T00:36:06.570625" level="INFO">${data} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
   &lt;host&gt;10.30.170.167&lt;/host&gt;
   &lt;port&gt;17830&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;admin&lt;/username&gt;...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:06.506284" elapsed="0.064380"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:06.572615" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:06.572210" elapsed="0.000500">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:06.572808" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:06.571488" elapsed="0.001346"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.573178" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.572907" elapsed="0.000329"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.573782" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:06.573470" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.573268" elapsed="0.000578"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.572887" elapsed="0.000980"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.576296" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:06.574026" elapsed="0.002301"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:06.576459" elapsed="0.000040"/>
</return>
<msg time="2026-04-05T00:36:06.576635" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:06.571065" elapsed="0.005596"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.578259" level="INFO">/rests/operations/netconf-node-topology:create-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.577994" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.578742" level="INFO">&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
   &lt;host&gt;10.30.170.167&lt;/host&gt;
   &lt;port&gt;17830&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;admin&lt;/username&gt;
     &lt;password&gt;topsecret&lt;/password&gt;
   &lt;/login-password&gt;
   &lt;tcp-only&gt;false&lt;/tcp-only&gt;
   &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
 &lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.578486" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.579237" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.578947" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.579719" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.579456" elapsed="0.000318"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:06.580647" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:06.580405" elapsed="0.000268"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:06.581001" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:06.580825" elapsed="0.000202"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.581174" elapsed="0.000218"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.581814" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.581562" elapsed="0.000303"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:06.581906" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:06.582062" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:06.579979" elapsed="0.002108"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.584561" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.582166" elapsed="0.002466"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:06.708655" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/operations/netconf-node-topology:create-device 
 path_url=/rests/operations/netconf-node-topology:create-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Content-Length': '337', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
   &lt;host&gt;10.30.170.167&lt;/host&gt;
   &lt;port&gt;17830&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;admin&lt;/username&gt;
     &lt;password&gt;topsecret&lt;/password&gt;
   &lt;/login-password&gt;
   &lt;tcp-only&gt;false&lt;/tcp-only&gt;
   &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
 &lt;/input&gt; 
 </msg>
<msg time="2026-04-05T00:36:06.708876" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/operations/netconf-node-topology:create-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:06.709266" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:06.584798" elapsed="0.124535"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.584658" elapsed="0.124867"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.582143" elapsed="0.127456"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.717665" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.712919" elapsed="0.004794"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.712248" elapsed="0.005503"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.712197" elapsed="0.005579"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.720558" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.718060" elapsed="0.002556"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.717833" elapsed="0.002819"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.717816" elapsed="0.002861"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.721394" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:06.720905" elapsed="0.000536"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.721792" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.721529" elapsed="0.000477"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.722583" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:06.722225" elapsed="0.000388"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.722042" elapsed="0.000617"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.721507" elapsed="0.001176"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.723262" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:06.722856" elapsed="0.000437"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.723701" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.723450" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.724243" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:06.723937" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.723785" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.723410" elapsed="0.000916"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:06.724503" elapsed="0.000360"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:06.725385" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:06.725029" elapsed="0.000382"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.725584" elapsed="0.002345"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:06.710749" elapsed="0.017248"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:06.728195" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-05T00:36:06.728073" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.728055" elapsed="0.000260"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.728489" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.728559" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:06.734716" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:06.576998" elapsed="0.157842"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:06.735093" elapsed="0.000122"/>
</return>
<msg time="2026-04-05T00:36:06.735665" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:06.380281" elapsed="0.355445"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.736856" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.736056" elapsed="0.000933"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.735999" elapsed="0.001032"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:06.737087" elapsed="0.000042"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:06.377477" elapsed="0.359815"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.377115" elapsed="0.360246"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.737897" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.737404" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.377091" elapsed="0.361113"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.738496" elapsed="0.000593"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=${device_type_rpc_create}</arg>
<arg>http_timeout=2</arg>
<arg>http_method=post</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:36:06.354681" elapsed="0.384522"/>
</kw>
<doc>Make request to configure a testtool device on Netconf connector.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:06.264090" elapsed="0.475384"/>
</test>
<test id="s1-s4-s1-t4" name="Check_ODL_Has_Netconf_Connector_For_Device" line="70">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:06.745304" elapsed="0.000389"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:06.745015" elapsed="0.000743"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.746968" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.746828" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.746800" elapsed="0.000249"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.752638" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.752487" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.752456" elapsed="0.000276"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.754120" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:06.753498" elapsed="0.000666"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.754906" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:06.754401" elapsed="0.000543"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:06.755010" elapsed="0.000058"/>
</return>
<msg time="2026-04-05T00:36:06.755257" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:06.753056" elapsed="0.002238"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.761490" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.761354" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.761333" elapsed="0.000227"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.762886" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.762768" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.762750" elapsed="0.000207"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:06.763568" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.763108" elapsed="0.000488"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:06.764045" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:06.763764" elapsed="0.000308"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:06.795370" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:06.764649" elapsed="0.031143"/>
</kw>
<msg time="2026-04-05T00:36:06.796109" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:06.796158" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.764230" elapsed="0.031970"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:06.820587" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "O "D "L "_ "H "a "s "_ "N "e "t "c "o "n "f "_ "C "o "n "n "e "c "t "o "r "_ "F "o "r "_ "D "e "v "i "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:06.797342" elapsed="0.023690"/>
</kw>
<msg time="2026-04-05T00:36:06.821383" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:06.821461" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "O "D "L "_ "H "a "s "_ "N "e "t "c "o "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.796627" elapsed="0.024874"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.822146" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.821678" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.821621" elapsed="0.000789"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.823184" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "O "D "L "_ "H "a "s "_ "N "e "t "c "o "n "f "_ "C "o "n "n "e "c "t "o "r "_ "F "o "r "_ "D "e "v "i "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.822585" elapsed="0.000674"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.823612" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.823330" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.823310" elapsed="0.000407"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:06.823763" elapsed="0.000062"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:06.827502" elapsed="0.000211"/>
</kw>
<msg time="2026-04-05T00:36:06.827791" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:06.826623" elapsed="0.001288"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.829043" elapsed="0.000041"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.830073" elapsed="0.000041"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:06.824964" elapsed="0.005238"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:06.824196" elapsed="0.006125"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:06.762459" elapsed="0.068002"/>
</kw>
<msg time="2026-04-05T00:36:06.830577" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:06.830623" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "O "D "L "_ "H "a "s "_ "N "e "t "c "o "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.761712" elapsed="0.068951"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:06.830858" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:06.830744" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.830725" elapsed="0.000219"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.831388" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.831797" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.831872" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:06.760996" elapsed="0.070991"/>
</kw>
<msg time="2026-04-05T00:36:06.832091" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:06.832138" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "O "D "L "_ "H "a "s "_ "N "e "t "c "o "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.756008" elapsed="0.076174"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.832538" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.832265" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.832247" elapsed="0.000371"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:06.755792" elapsed="0.076851"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:06.755388" elapsed="0.077296"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:06.751963" elapsed="0.080790"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:06.746469" elapsed="0.086348"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.745927" elapsed="0.086943"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:06.741099" elapsed="0.091834"/>
</kw>
<kw name="Count_Netconf_Connectors_For_Device" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.844685" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:06.842272" elapsed="0.002442"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.845069" elapsed="0.000023"/>
</kw>
<var name="${nv}"/>
<status status="NOT RUN" start="2026-04-05T00:36:06.844917" elapsed="0.000211"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.844779" elapsed="0.000375"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.845480" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.845216" elapsed="0.000325"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.846301" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:06.845815" elapsed="0.000513"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.845565" elapsed="0.000800"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.846567" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.846390" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.845199" elapsed="0.001446"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:06.846679" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:06.846826" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:06.841788" elapsed="0.005063"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:06.846897" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:06.847054" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:06.841255" elapsed="0.005826"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.854514" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.854238" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.854979" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.854731" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:06.869105" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:06.870640" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1440'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167"}}],"topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-05T00:36:06.870808" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:06.857195" elapsed="0.013649"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.855089" elapsed="0.015820"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.871181" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.870950" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.855070" elapsed="0.016230"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.876653" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167"}}],"topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.873062" elapsed="0.003783"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.872713" elapsed="0.004184"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.872613" elapsed="0.004318"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.880927" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.877326" elapsed="0.003649"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.877011" elapsed="0.003999"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.876987" elapsed="0.004048"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.881668" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:06.881213" elapsed="0.000481"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.882000" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.881764" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.882559" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:06.882239" elapsed="0.000346"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.882082" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.881747" elapsed="0.000896"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.883161" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:06.882797" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.883502" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.883257" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.884050" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:06.883754" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:06.883583" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.883239" elapsed="0.000892"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:06.884282" elapsed="0.000364"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:06.885144" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:06.884810" elapsed="0.000361"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.885325" elapsed="0.002543"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:06.871949" elapsed="0.015987"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.888117" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.888007" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.887988" elapsed="0.000203"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:06.891515" level="INFO">${text_normalized} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "node": [
     {
      "netconf-node-topology:netconf-node": {
       "connection-status": "connecting",
       "host": "10.30.170.16...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:06.888333" elapsed="0.003211"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:06.891597" elapsed="0.000038"/>
</return>
<msg time="2026-04-05T00:36:06.891780" level="INFO">${response_text} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "node": [
     {
      "netconf-node-topology:netconf-node": {
       "connection-status": "connecting",
       "host": "10.30.170.16...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:06.849864" elapsed="0.041943"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:06.891865" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:06.892014" level="INFO">${mounts} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "node": [
     {
      "netconf-node-topology:netconf-node": {
       "connection-status": "connecting",
       "host": "10.30.170.16...</msg>
<var>${mounts}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:06.847328" elapsed="0.044713"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.892467" level="INFO">{
 "network-topology:network-topology": {
  "topology": [
   {
    "node": [
     {
      "netconf-node-topology:netconf-node": {
       "connection-status": "connecting",
       "host": "10.30.170.167",
       "login-password": {
        "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
        "username": "admin"
       },
       "port": 17830
      },
      "node-id": "netconf-test-device"
     }
    ],
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topology-parameters": {
       "encryption": {
        "encryption-alg": [
         "AEAD_AES_128_GCM",
         "AEAD_AES_256_GCM",
         "aes128-cbc",
         "aes128-ctr",
         "aes192-cbc",
         "aes192-ctr",
         "aes256-cbc",
         "aes256-ctr",
         "chacha20-poly1305"
        ]
       },
       "host-key": {
        "host-key-alg": [
         "ecdsa-sha2-nistp256",
         "ecdsa-sha2-nistp384",
         "ecdsa-sha2-nistp521",
         "rsa-sha2-256",
         "rsa-sha2-512",
         "ssh-ed25519",
         "ssh-rsa"
        ]
       },
       "key-exchange": {
        "key-exchange-alg": [
         "curve25519-sha256",
         "curve448-sha512",
         "diffie-hellman-group-exchange-sha256",
         "diffie-hellman-group14-sha256",
         "diffie-hellman-group15-sha512",
         "diffie-hellman-group16-sha512",
         "diffie-hellman-group17-sha512",
         "diffie-hellman-group18-sha512",
         "ecdh-sha2-nistp256",
         "ecdh-sha2-nistp384",
         "ecdh-sha2-nistp521",
         "mlkem1024nistp384-sha384",
         "mlkem768nistp256-sha256",
         "mlkem768x25519-sha256",
         "sntrup761x25519-sha512"
        ]
       },
       "mac": {
        "mac-alg": [
         "hmac-sha1",
         "hmac-sha2-256",
         "hmac-sha2-512"
        ]
       }
      }
     }
    }
   },
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology-id": "flow:1"
   },
   {
    "topology-id": "hwvtep:1"
   },
   {
    "topology-id": "ovsdb:1"
   }
  ]
 }
}
</msg>
<arg>${mounts}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.892200" elapsed="0.000376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.893133" level="INFO">${actual_count} = 1</msg>
<var>${actual_count}</var>
<arg>len('''${mounts}'''.split('"node-id": "${device_name}"'))-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:06.892730" elapsed="0.000430"/>
</kw>
<return>
<value>${actual_count}</value>
<status status="PASS" start="2026-04-05T00:36:06.893206" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:06.893369" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>${device_name}</arg>
<doc>Count all instances of the specified device in the Netconf topology (usually 0 or 1).</doc>
<status status="PASS" start="2026-04-05T00:36:06.833267" elapsed="0.060127"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.893842" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:06.893574" elapsed="0.000326"/>
</kw>
<doc>Get the list of configured devices and search for our device there. Fail if not found.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:06.740004" elapsed="0.154046"/>
</test>
<test id="s1-s4-s1-t5" name="Wait_For_Device_To_Become_Connected" line="76">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:06.898211" elapsed="0.000227"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:06.897945" elapsed="0.000552"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.899528" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.899393" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.899372" elapsed="0.000227"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.904562" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.904455" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.904435" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.905755" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:06.905343" elapsed="0.000439"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.906234" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:06.905937" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:06.906303" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:06.906476" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:06.904965" elapsed="0.001536"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.912262" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.912152" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.912131" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.914656" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:06.914549" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.914531" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:06.915241" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:06.914868" elapsed="0.000400"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:06.915705" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:06.915443" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:06.952121" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:06.916292" elapsed="0.036034"/>
</kw>
<msg time="2026-04-05T00:36:06.952556" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:06.952603" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.915901" elapsed="0.036738"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:06.974507" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "c "o "m "e "_ "C "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:06.953457" elapsed="0.021329"/>
</kw>
<msg time="2026-04-05T00:36:06.975043" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:06.975110" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.952861" elapsed="0.022427"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.975859" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.975458" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.975389" elapsed="0.000653"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:06.976954" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "c "o "m "e "_ "C "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:06.976264" elapsed="0.000812"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.977503" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.977177" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.977151" elapsed="0.000495"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:06.977708" elapsed="0.000081"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:06.983160" elapsed="0.000169"/>
</kw>
<msg time="2026-04-05T00:36:06.983408" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:06.981410" elapsed="0.002140"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.985300" elapsed="0.000042"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.986310" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:06.979299" elapsed="0.007340"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:06.978241" elapsed="0.008536"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:06.914214" elapsed="0.072673"/>
</kw>
<msg time="2026-04-05T00:36:06.986996" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:06.987042" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.913484" elapsed="0.073602"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:06.987315" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-05T00:36:06.987183" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.987157" elapsed="0.000253"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.987963" elapsed="0.000029"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.988324" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:06.988398" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:06.911684" elapsed="0.076985"/>
</kw>
<msg time="2026-04-05T00:36:06.988774" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:06.988819" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.906890" elapsed="0.081967"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:06.989195" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:06.988939" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:06.988921" elapsed="0.000351"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:06.906750" elapsed="0.082546"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:06.906563" elapsed="0.082776"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:06.904081" elapsed="0.085327"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:06.899100" elapsed="0.090390"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:06.898649" elapsed="0.090967"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:06.895366" elapsed="0.094312"/>
</kw>
<kw name="Wait_Device_Connected" owner="NetconfKeywords">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Connected" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:07.004995" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:07.002846" elapsed="0.002177"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:07.005759" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:07.005402" elapsed="0.000384"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:07.005247" elapsed="0.000575"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:07.006366" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:07.006047" elapsed="0.000345"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:07.005901" elapsed="0.000542"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:07.005091" elapsed="0.001382"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:07.006787" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:07.006542" elapsed="0.000303"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:07.007579" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:07.007093" elapsed="0.000516"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:07.006869" elapsed="0.000777"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:07.007829" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:07.007671" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:07.006523" elapsed="0.001382"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:07.007940" elapsed="0.000050"/>
</return>
<msg time="2026-04-05T00:36:07.008115" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:07.002348" elapsed="0.005793"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:07.008188" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:07.008330" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:07.001747" elapsed="0.006608"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:07.015783" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:07.015515" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:07.016275" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:07.016015" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:07.029155" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:07.029970" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '277'} 
 body={"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167"}}]} 
 </msg>
<msg time="2026-04-05T00:36:07.030244" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:07.018417" elapsed="0.011896"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:07.016386" elapsed="0.014026"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:07.030941" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:07.030502" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:07.016367" elapsed="0.014901"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:07.037829" level="INFO">{"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:07.033724" elapsed="0.004154"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:07.033203" elapsed="0.004710"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:07.033160" elapsed="0.004778"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:07.040524" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:07.038211" elapsed="0.002360"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:07.037994" elapsed="0.002612"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:07.037977" elapsed="0.002653"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:07.041254" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:07.040795" elapsed="0.000489"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:07.041608" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:07.041357" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:07.042145" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:07.041846" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:07.041691" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:07.041339" elapsed="0.000891"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:07.042761" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:07.042381" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:07.043081" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:07.042858" elapsed="0.000280"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:07.043628" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:07.043315" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:07.043163" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:07.042840" elapsed="0.000870"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:07.043860" elapsed="0.000375"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:07.044741" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:07.044394" elapsed="0.000372"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:07.044918" elapsed="0.002302"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:07.032208" elapsed="0.015075"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:07.047476" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:07.047353" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:07.047335" elapsed="0.000209"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:07.050475" level="INFO">${text_normalized} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:07.047685" elapsed="0.002820"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:07.050557" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:07.050715" level="INFO">${response_text} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:07.011156" elapsed="0.039586"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:07.050799" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:07.050945" level="INFO">${device_status} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${device_status}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:07.008597" elapsed="0.042411"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-05T00:36:07.051581" level="FAIL">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</msg>
<arg>${device_status}</arg>
<arg>connection-status": "connected"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-05T00:36:07.051171" elapsed="0.000510">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device is accessible from Netconf.</doc>
<status status="FAIL" start="2026-04-05T00:36:06.991059" elapsed="0.060761">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<kw name="Check_Device_Connected" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:08.070916" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:08.068303" elapsed="0.002655"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:08.071745" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:08.071395" elapsed="0.000377"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:08.071236" elapsed="0.000573"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:08.072365" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:08.072042" elapsed="0.000349"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:08.071896" elapsed="0.000546"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:08.071061" elapsed="0.001411"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:08.072860" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:08.072567" elapsed="0.000351"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:08.073651" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:08.073172" elapsed="0.000506"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:08.072946" elapsed="0.000767"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:08.073898" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:08.073738" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:08.072540" elapsed="0.001434"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:08.074016" elapsed="0.000047"/>
</return>
<msg time="2026-04-05T00:36:08.074196" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:08.067783" elapsed="0.006453"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:08.074285" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:08.074443" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:08.067096" elapsed="0.007373"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:08.082073" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:08.081760" elapsed="0.000367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:08.082582" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:08.082313" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:08.092817" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:08.093136" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '277'} 
 body={"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167"}}]} 
 </msg>
<msg time="2026-04-05T00:36:08.093243" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:08.084790" elapsed="0.008479"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:08.082707" elapsed="0.010611"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:08.093519" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:08.093350" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:08.082684" elapsed="0.010924"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:08.098205" level="INFO">{"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:08.094753" elapsed="0.003535"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:08.094528" elapsed="0.003810"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:08.094508" elapsed="0.003864"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:08.101974" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:08.098779" elapsed="0.003259"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:08.098472" elapsed="0.003615"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:08.098446" elapsed="0.003676"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:08.103060" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:08.102449" elapsed="0.000649"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:08.103541" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:08.103197" elapsed="0.000403"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:08.104086" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:08.103783" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:08.103624" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:08.103173" elapsed="0.000995"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:08.104703" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:08.104321" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:08.105023" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:08.104798" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:08.105570" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:08.105260" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:08.105104" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:08.104781" elapsed="0.000871"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:08.105810" elapsed="0.000356"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:08.106698" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:08.106347" elapsed="0.000377"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:08.106878" elapsed="0.002326"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:08.094025" elapsed="0.015245"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:08.109468" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:08.109342" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:08.109324" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:08.112462" level="INFO">${text_normalized} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:08.109688" elapsed="0.002804"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:08.112583" elapsed="0.000043"/>
</return>
<msg time="2026-04-05T00:36:08.112760" level="INFO">${response_text} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:08.077205" elapsed="0.035582"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:08.112845" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:08.112997" level="INFO">${device_status} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${device_status}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:08.074699" elapsed="0.038324"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-05T00:36:08.113590" level="FAIL">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</msg>
<arg>${device_status}</arg>
<arg>connection-status": "connected"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-05T00:36:08.113181" elapsed="0.000505">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device is accessible from Netconf.</doc>
<status status="FAIL" start="2026-04-05T00:36:08.052921" elapsed="0.060906">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<kw name="Check_Device_Connected" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.131854" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.129411" elapsed="0.002479"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.132660" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.132291" elapsed="0.000397"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:09.132112" elapsed="0.000613"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.133270" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.132953" elapsed="0.000343"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:09.132807" elapsed="0.000524"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:09.131963" elapsed="0.001397"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.133715" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.133451" elapsed="0.000322"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.134509" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.134024" elapsed="0.000514"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.133799" elapsed="0.000775"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.134758" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.134599" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.133414" elapsed="0.001421"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:09.134871" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:36:09.135033" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:09.128926" elapsed="0.006132"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:09.135105" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:09.135244" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:09.128103" elapsed="0.007166"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.142524" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.142246" elapsed="0.000414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.143061" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.142811" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:09.154950" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:09.159193" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3541'} 
 body={"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"negotiated-ssh-transport-parameters":{"encryption-alg":"chacha20-poly1305@openssh.com","host-key-alg":"rsa-sha2-512","mac-alg":"aead","key-exchange-alg":"sntrup761x25519-sha512"},"session-id":1,"connection-status":"connected","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167","available-capabilities":{"available-capability":[{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:notification:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:exi:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:candidate:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.0"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?revision=2014-08-18)people"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car?revision=2014-08-18)car"},{"capability-origin":"device-advertised","capability":"(ns:main?revision=2014-01-21)main"},{"capability-origin":"device-advertised","capability":"(ns:augment:main:a?revision=2014-01-21)augment-main-a"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:netconf:monitoring?revision=2022-07-18)odl-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension"},{"capability-origin":"device-advertised","capability":"(org:opendaylight:coretutorials:ncmount:example:l2fib?revision=2016-03-07)ncmount-l2fib"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people?revision=2014-08-18)car-people"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)car-purchase"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:test:netconf:crud?revision=2014-10-18)test"},{"capability-origin":"device-advertised","capability":"(https://example.com/ns/example-action?revision=2016-07-07)example-action"},{"capability":"(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:yang:extension:yang-ext?revision=2013-07-09)yang-ext"}]}}}]} 
 </msg>
<msg time="2026-04-05T00:36:09.159535" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:09.145221" elapsed="0.014380"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.143172" elapsed="0.016534"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.160138" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.159771" elapsed="0.000591"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.143153" elapsed="0.017267"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.165764" level="INFO">{"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"negotiated-ssh-transport-parameters":{"encryption-alg":"chacha20-poly1305@openssh.com","host-key-alg":"rsa-sha2-512","mac-alg":"aead","key-exchange-alg":"sntrup761x25519-sha512"},"session-id":1,"connection-status":"connected","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167","available-capabilities":{"available-capability":[{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:notification:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:exi:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:candidate:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.0"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?revision=2014-08-18)people"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car?revision=2014-08-18)car"},{"capability-origin":"device-advertised","capability":"(ns:main?revision=2014-01-21)main"},{"capability-origin":"device-advertised","capability":"(ns:augment:main:a?revision=2014-01-21)augment-main-a"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:netconf:monitoring?revision=2022-07-18)odl-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension"},{"capability-origin":"device-advertised","capability":"(org:opendaylight:coretutorials:ncmount:example:l2fib?revision=2016-03-07)ncmount-l2fib"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people?revision=2014-08-18)car-people"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)car-purchase"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:test:netconf:crud?revision=2014-10-18)test"},{"capability-origin":"device-advertised","capability":"(https://example.com/ns/example-action?revision=2016-07-07)example-action"},{"capability":"(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:yang:extension:yang-ext?revision=2013-07-09)yang-ext"}]}}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.162000" elapsed="0.003913"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.161692" elapsed="0.004273"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.161666" elapsed="0.004335"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.169362" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.166415" elapsed="0.002994"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.166080" elapsed="0.003379"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.166056" elapsed="0.003428"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.170051" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.169647" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.170382" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.170149" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.170938" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.170640" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.170480" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.170131" elapsed="0.000890"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.171570" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.171174" elapsed="0.000428"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.171907" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.171676" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.172473" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.172138" elapsed="0.000362"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.171987" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.171656" elapsed="0.000900"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:09.172717" elapsed="0.000352"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:09.173553" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.173228" elapsed="0.000351"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.173742" elapsed="0.002376"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:09.161059" elapsed="0.015125"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.176410" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.176254" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.176235" elapsed="0.000264"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:09.180094" level="INFO">${text_normalized} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:09.176678" elapsed="0.003446"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:09.180177" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:36:09.180375" level="INFO">${response_text} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:09.137958" elapsed="0.042445"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:09.180477" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:09.180629" level="INFO">${device_status} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${device_status}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:09.135506" elapsed="0.045149"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${device_status}</arg>
<arg>connection-status": "connected"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:09.180809" elapsed="0.000307"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device is accessible from Netconf.</doc>
<status status="PASS" start="2026-04-05T00:36:09.114766" elapsed="0.066411"/>
</kw>
<arg>${timeout}</arg>
<arg>${period}</arg>
<arg>Check_Device_Connected</arg>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:06.990374" elapsed="2.190895"/>
</kw>
<arg>${device_name}</arg>
<doc>Wait for the device to become connected.
It is more readable to use this keyword in a test case than to put the whole WUKS below into it.</doc>
<status status="PASS" start="2026-04-05T00:36:06.989918" elapsed="2.191432"/>
</kw>
<doc>Wait until the device becomes available through Netconf.</doc>
<status status="PASS" start="2026-04-05T00:36:06.894683" elapsed="2.286815"/>
</test>
<test id="s1-s4-s1-t6" name="Check_Device_Data_Is_Empty" line="80">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:09.184761" elapsed="0.000213"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:09.184439" elapsed="0.000591"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.186036" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.185929" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.185910" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.191384" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.191276" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.191256" elapsed="0.000214"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.192531" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:09.192065" elapsed="0.000494"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.193012" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:09.192716" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:09.193088" elapsed="0.000042"/>
</return>
<msg time="2026-04-05T00:36:09.193306" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:09.191693" elapsed="0.001644"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.199111" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.199002" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.198981" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.200502" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.200331" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.200313" elapsed="0.000257"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:09.201107" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.200723" elapsed="0.000411"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:09.201574" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:09.201291" elapsed="0.000309"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:09.239217" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:09.202166" elapsed="0.037276"/>
</kw>
<msg time="2026-04-05T00:36:09.239635" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:09.239682" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.201758" elapsed="0.037961"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:09.273380" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "E "m "p "t "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:09.240307" elapsed="0.033303"/>
</kw>
<msg time="2026-04-05T00:36:09.273870" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:09.273933" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.239903" elapsed="0.034081"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.274407" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.274099" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.274067" elapsed="0.000606"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.275475" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "E "m "p "t "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.274898" elapsed="0.000676"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.275998" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.275672" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.275645" elapsed="0.000497"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:09.276189" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:09.280045" elapsed="0.000151"/>
</kw>
<msg time="2026-04-05T00:36:09.280268" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:09.279019" elapsed="0.001352"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.281345" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.282300" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:09.277517" elapsed="0.004901"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:09.276661" elapsed="0.005904"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:09.200027" elapsed="0.082638"/>
</kw>
<msg time="2026-04-05T00:36:09.282758" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:09.282801" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.199328" elapsed="0.083511"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:09.283205" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-05T00:36:09.282916" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.282897" elapsed="0.000398"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.283777" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.284114" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.284186" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:09.198648" elapsed="0.085653"/>
</kw>
<msg time="2026-04-05T00:36:09.284394" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:09.284454" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.193720" elapsed="0.090804"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.284859" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.284610" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.284592" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:09.193582" elapsed="0.091377"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:09.193392" elapsed="0.091595"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:09.190898" elapsed="0.094145"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:09.185636" elapsed="0.099462"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.185178" elapsed="0.099966"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:09.182226" elapsed="0.102970"/>
</kw>
<kw name="Regexp Escape" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.285710" level="INFO">${escaped} = urn:ietf:params:xml:ns:netconf:base:1\.0</msg>
<var>${escaped}</var>
<arg>${ODL_NETCONF_NAMESPACE}</arg>
<doc>Returns each argument escaped for use as a regular expression.</doc>
<status status="PASS" start="2026-04-05T00:36:09.285361" elapsed="0.000375"/>
</kw>
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.287129" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.286745" elapsed="0.000411"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.294543" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.294278" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.294979" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.294737" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:09.320131" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:09.320533" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '55'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt; 
 </msg>
<msg time="2026-04-05T00:36:09.320803" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:09.297138" elapsed="0.023720"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.295088" elapsed="0.025866"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.321345" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.321013" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.295070" elapsed="0.026499"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.328244" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.323852" elapsed="0.004460"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.323333" elapsed="0.005029"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.323293" elapsed="0.005105"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.332096" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.328857" elapsed="0.003303"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.328511" elapsed="0.003698"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.328486" elapsed="0.003757"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.333072" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.332481" elapsed="0.000629"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.333561" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.333208" elapsed="0.000452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.334177" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.333876" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.333708" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.333183" elapsed="0.001075"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.334796" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.334409" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.335132" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.334900" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.335683" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.335368" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.335212" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.334881" elapsed="0.000885"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:09.335922" elapsed="0.000348"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:09.336761" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.336447" elapsed="0.000340"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.336999" elapsed="0.002332"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:09.322367" elapsed="0.017026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:09.339588" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-05T00:36:09.339480" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.339461" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.339817" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.339886" elapsed="0.000014"/>
</return>
<msg time="2026-04-05T00:36:09.342249" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:09.289945" elapsed="0.052333"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:09.342341" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:36:09.342520" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:09.287366" elapsed="0.055180"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:09.342589" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:09.342732" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:09.286475" elapsed="0.056282"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-04-05T00:36:09.343001" elapsed="0.000552"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.342820" elapsed="0.000774"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.343766" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.343619" elapsed="0.000202"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.344009" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.343845" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.342803" elapsed="0.001292"/>
</if>
<arg>&lt;data xmlns\="${escaped}"(\/&gt;|&gt;&lt;\/data&gt;)</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-05T00:36:09.285997" elapsed="0.058147"/>
</kw>
<doc>Get the device data and make sure it is empty.</doc>
<status status="PASS" start="2026-04-05T00:36:09.181711" elapsed="0.162546"/>
</test>
<test id="s1-s4-s1-t7" name="Create_Device_Data_Label_Via_Xml" line="85">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:09.347602" elapsed="0.000212"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:09.347323" elapsed="0.000545"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.348903" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.348784" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.348764" elapsed="0.000208"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.354120" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.354011" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.353991" elapsed="0.000199"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.355205" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:09.354825" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.355708" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:09.355389" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:09.355777" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:09.355930" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:09.354443" elapsed="0.001512"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.361419" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.361311" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.361292" elapsed="0.000247"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.362773" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.362667" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.362649" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:09.363347" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.362982" elapsed="0.000391"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:09.363787" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:09.363545" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:09.400157" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:09.364355" elapsed="0.035997"/>
</kw>
<msg time="2026-04-05T00:36:09.400561" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:09.400608" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.363967" elapsed="0.036677"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:09.423984" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "r "e "a "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "V "i "a "_ "X "m "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:09.401254" elapsed="0.022912"/>
</kw>
<msg time="2026-04-05T00:36:09.424338" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:09.424382" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "r "e "a "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.400844" elapsed="0.023575"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.424794" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.424524" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.424503" elapsed="0.000400"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.425473" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "r "e "a "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "V "i "a "_ "X "m "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.425067" elapsed="0.000478"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.425824" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.425612" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.425593" elapsed="0.000360"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:09.425988" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:09.429126" elapsed="0.000159"/>
</kw>
<msg time="2026-04-05T00:36:09.429357" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:09.428362" elapsed="0.001129"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.430398" elapsed="0.000058"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.431353" elapsed="0.000212"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:09.426859" elapsed="0.004792"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:09.426248" elapsed="0.005516"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:09.362336" elapsed="0.069529"/>
</kw>
<msg time="2026-04-05T00:36:09.431957" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:09.432000" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "r "e "a "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.361694" elapsed="0.070343"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:09.432222" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:09.432115" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.432097" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.432814" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.433145" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.433216" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:09.360973" elapsed="0.072350"/>
</kw>
<msg time="2026-04-05T00:36:09.433416" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:09.433477" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "r "e "a "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.356317" elapsed="0.077197"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.433845" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.433597" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.433578" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:09.356178" elapsed="0.077766"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:09.356008" elapsed="0.077965"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:09.353643" elapsed="0.080383"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:09.348448" elapsed="0.085632"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.348012" elapsed="0.086113"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:09.345202" elapsed="0.088974"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.434791" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.434339" elapsed="0.000479"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.468543" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.468139" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:09.469351" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:09.469090" elapsed="0.000357">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:09.469545" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:09.468734" elapsed="0.000837"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.470125" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:09.469740" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:09.470458" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:09.470622" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:09.470307" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.471060" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.470814" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.472074" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.471814" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.472744" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.472273" elapsed="0.000498"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.473594" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:09.473258" elapsed="0.000362"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:09.474399" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.474155" elapsed="0.000293"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:09.474501" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:09.474654" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:09.473808" elapsed="0.000871"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.474828" elapsed="0.000247"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:09.473111" elapsed="0.002008"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.475686" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:09.475363" elapsed="0.000349"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:09.476479" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.476220" elapsed="0.000284"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:09.476556" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:09.476705" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:09.475892" elapsed="0.000838"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.476922" elapsed="0.000230"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:09.475232" elapsed="0.001962"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:09.472819" elapsed="0.004420"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:09.477284" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:09.477459" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:09.471480" elapsed="0.006005"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.471171" elapsed="0.006347"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.477693" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.477545" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.471152" elapsed="0.006616"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.478521" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.477905" elapsed="0.000644"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:09.478598" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:09.467533" elapsed="0.011188"/>
</kw>
<msg time="2026-04-05T00:36:09.478774" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:09.454883" elapsed="0.023938"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.491160" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.503489" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.515965" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.516153" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.516322" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.516695" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.516555" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:09.516540" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.516910" elapsed="0.000038"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.517091" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.517250" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:09.516510" elapsed="0.000792"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.516396" elapsed="0.000932"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.517483" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.517563" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:09.517681" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:09.450700" elapsed="0.067007"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.545061" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.544653" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:09.545835" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:09.545595" elapsed="0.000310">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:09.545999" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:09.545250" elapsed="0.000773"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.546590" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:09.546185" elapsed="0.000432"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:09.546910" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:09.547074" level="INFO">${template} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Content&lt;/l&gt;
&lt;/cont&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:09.546772" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.547510" level="INFO">&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Content&lt;/l&gt;
&lt;/cont&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.547252" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:09.547903" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.547623" elapsed="0.000394"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.548498" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.548190" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.548046" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.547605" elapsed="0.000976"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.549167" level="INFO">${final_text} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.548725" elapsed="0.000470"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:09.549243" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:09.544027" elapsed="0.005338"/>
</kw>
<msg time="2026-04-05T00:36:09.549418" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:09.531408" elapsed="0.018072"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.561590" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.573684" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.585959" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.586148" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.586316" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.586689" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.586546" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:09.586532" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.586902" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.587062" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.587219" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:09.586503" elapsed="0.000768"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.586388" elapsed="0.000908"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.587450" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.587526" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:09.587641" level="INFO">${data} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:09.530472" elapsed="0.057228"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:09.588969" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:09.588705" elapsed="0.000329">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:09.589159" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:09.588350" elapsed="0.000833"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.589511" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.589254" elapsed="0.000315"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.590040" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.589750" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.589592" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.589236" elapsed="0.000886"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.592399" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:09.590267" elapsed="0.002171"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:09.592490" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:09.592644" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:09.588033" elapsed="0.004635"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.594203" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.593956" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.594646" level="INFO">&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.594394" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.595078" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.594839" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.595519" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.595266" elapsed="0.000296"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:09.596347" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:09.596156" elapsed="0.000216"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:09.596708" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:09.596535" elapsed="0.000198"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.596874" elapsed="0.000214"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.597497" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.597239" elapsed="0.000302"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:09.597582" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:09.597733" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:09.595758" elapsed="0.002000"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:09.677328" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Content-Length': '72', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Content&lt;/l&gt;
&lt;/cont&gt; 
 </msg>
<msg time="2026-04-05T00:36:09.677491" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.184:8181/rests/data/test:cont', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:09.677799" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:09.600010" elapsed="0.077846"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.597827" elapsed="0.080130"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.678341" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.678014" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.597810" elapsed="0.080760"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.685929" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.680851" elapsed="0.005122"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.680337" elapsed="0.005671"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.680296" elapsed="0.005737"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.688594" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.686301" elapsed="0.002338"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.686087" elapsed="0.002586"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.686071" elapsed="0.002626"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.689231" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.688850" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.689569" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.689328" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.690098" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.689802" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.689650" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.689310" elapsed="0.000870"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.690716" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.690330" elapsed="0.000412"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.691034" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.690811" elapsed="0.000278"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.691577" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.691265" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.691113" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.690794" elapsed="0.000864"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:09.691801" elapsed="0.000341"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:09.692594" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.692299" elapsed="0.000321"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.692771" elapsed="0.002303"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:09.679337" elapsed="0.015798"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:09.695311" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:09.695206" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.695188" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.695554" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.695622" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:09.697866" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:09.592992" elapsed="0.104900"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:09.697997" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:09.698149" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:09.439702" elapsed="0.258471"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.698521" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.698276" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.698259" elapsed="0.000355"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:09.698646" elapsed="0.000025"/>
</return>
<arg>${directory_with_template_folders}${/}dataorig</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:09.435071" elapsed="0.263695"/>
</kw>
<doc>Send a sample test data label into the device and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:09.344595" elapsed="0.354284"/>
</test>
<test id="s1-s4-s1-t8" name="Check_Device_Data_Label_Is_Created" line="90">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:09.702170" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:09.701913" elapsed="0.000536"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.703401" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.703294" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.703276" elapsed="0.000210"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.708538" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.708416" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.708397" elapsed="0.000209"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.709614" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:09.709196" elapsed="0.000444"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.710265" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:09.709795" elapsed="0.000500"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:09.710342" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:09.710524" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:09.708825" elapsed="0.001724"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.715880" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.715774" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.715756" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.717148" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.717044" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.717026" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:09.717790" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.717402" elapsed="0.000415"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:09.718215" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:09.717972" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:09.753367" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:09.718796" elapsed="0.034751"/>
</kw>
<msg time="2026-04-05T00:36:09.753721" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:09.753767" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.718394" elapsed="0.035410"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:09.778496" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "I "s "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:09.754417" elapsed="0.024292"/>
</kw>
<msg time="2026-04-05T00:36:09.778890" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:09.778936" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.754017" elapsed="0.024956"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.779310" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.779064" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.779038" elapsed="0.000374"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.779973" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "I "s "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.779577" elapsed="0.000468"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.780319" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.780111" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.780094" elapsed="0.000324"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:09.780475" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:09.783741" elapsed="0.000171"/>
</kw>
<msg time="2026-04-05T00:36:09.783998" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:09.782990" elapsed="0.001112"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.785100" elapsed="0.000047"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.786175" elapsed="0.000040"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:09.781401" elapsed="0.004900"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:09.780760" elapsed="0.005704"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:09.716745" elapsed="0.069846"/>
</kw>
<msg time="2026-04-05T00:36:09.786713" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:09.786766" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.716094" elapsed="0.070723"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:09.787349" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-05T00:36:09.786915" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.786891" elapsed="0.000580"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.787918" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.788300" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.788379" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:09.715441" elapsed="0.073070"/>
</kw>
<msg time="2026-04-05T00:36:09.788624" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:09.788669" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.710907" elapsed="0.077803"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.789067" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.788803" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.788783" elapsed="0.000365"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:09.710769" elapsed="0.078463"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:09.710602" elapsed="0.078668"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:09.708059" elapsed="0.081271"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:09.703014" elapsed="0.086507"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.702599" elapsed="0.086975"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:09.699729" elapsed="0.089901"/>
</kw>
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.790923" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.790529" elapsed="0.000421"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.798488" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.798219" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.798935" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.798690" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:09.824992" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:09.825617" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '131'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:09.825857" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:09.801093" elapsed="0.024821"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.799047" elapsed="0.026976"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.826480" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.826083" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.799029" elapsed="0.027649"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.833641" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.829299" elapsed="0.004427"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.828800" elapsed="0.004977"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.828755" elapsed="0.005057"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.837822" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.834207" elapsed="0.003716"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.833892" elapsed="0.004106"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.833868" elapsed="0.004179"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.838999" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.838392" elapsed="0.000635"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.839379" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.839116" elapsed="0.000345"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.840308" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.839652" elapsed="0.000682"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.839488" elapsed="0.000884"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.839092" elapsed="0.001301"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.840969" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.840581" elapsed="0.000414"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.841299" elapsed="0.000138"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.841069" elapsed="0.000438"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.841997" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.841693" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.841533" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.841049" elapsed="0.001032"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:09.842251" elapsed="0.000392"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:09.843137" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.842809" elapsed="0.000355"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.843321" elapsed="0.002731"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:09.827731" elapsed="0.018403"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:09.846363" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-05T00:36:09.846235" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.846205" elapsed="0.000288"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.846660" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.846731" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:09.849162" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:09.793856" elapsed="0.055337"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:09.849257" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:09.849410" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:09.791160" elapsed="0.058295"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:09.849518" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:09.849668" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:09.790250" elapsed="0.059446"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.849971" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.849763" elapsed="0.000264"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.850255" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.850055" elapsed="0.000254"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:09.850484" elapsed="0.000383"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.850332" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.849746" elapsed="0.001181"/>
</if>
<arg>&lt;data xmlns="${ODL_NETCONF_NAMESPACE}"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</arg>
<status status="PASS" start="2026-04-05T00:36:09.789848" elapsed="0.061129"/>
</kw>
<doc>Get the device data label and make sure it contains the created content.</doc>
<status status="PASS" start="2026-04-05T00:36:09.699196" elapsed="0.151908"/>
</test>
<test id="s1-s4-s1-t9" name="Modify_Device_Data_Label_Via_Xml" line="95">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:09.854617" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:09.854324" elapsed="0.000558"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.855917" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.855806" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.855787" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.861184" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.861077" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.861057" elapsed="0.000196"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.862365" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:09.861980" elapsed="0.000411"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.862861" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:09.862565" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:09.862931" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:09.863085" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:09.861525" elapsed="0.001592"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.868655" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.868537" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.868514" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.870009" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:09.869902" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.869884" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:09.870605" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.870218" elapsed="0.000413"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:09.871053" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:09.870795" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:09.902416" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:09.871645" elapsed="0.031071"/>
</kw>
<msg time="2026-04-05T00:36:09.902964" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:09.903024" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.871236" elapsed="0.031839"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:09.922722" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "V "i "a "_ "X "m "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:09.903999" elapsed="0.018974"/>
</kw>
<msg time="2026-04-05T00:36:09.923209" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:09.923274" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.903343" elapsed="0.019984"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.923853" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.923498" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.923454" elapsed="0.000549"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.924792" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "V "i "a "_ "X "m "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.924216" elapsed="0.000678"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.925293" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.924991" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.924964" elapsed="0.000494"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:09.925515" elapsed="0.000059"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:09.928835" elapsed="0.000158"/>
</kw>
<msg time="2026-04-05T00:36:09.929066" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:09.928067" elapsed="0.001106"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.930398" elapsed="0.000055"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.931486" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:09.926545" elapsed="0.005063"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:09.925897" elapsed="0.005828"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:09.869587" elapsed="0.062239"/>
</kw>
<msg time="2026-04-05T00:36:09.931920" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:09.931964" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.868867" elapsed="0.063135"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:09.932197" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:09.932084" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.932063" elapsed="0.000220"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.932726" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.933068" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:09.933139" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:09.868171" elapsed="0.065077"/>
</kw>
<msg time="2026-04-05T00:36:09.933343" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:09.933386" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.863524" elapsed="0.069930"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.933800" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.933535" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.933517" elapsed="0.000360"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:09.863368" elapsed="0.070533"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:09.863183" elapsed="0.070752"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:09.860698" elapsed="0.073296"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:09.855510" elapsed="0.078544"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:09.855033" elapsed="0.079068"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:09.852137" elapsed="0.082019"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.934807" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.934331" elapsed="0.000503"/>
</kw>
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.970121" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:09.969714" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:09.970974" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:09.970694" elapsed="0.000360">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:09.971148" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:09.970324" elapsed="0.000851"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.971790" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:09.971335" elapsed="0.000562"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:09.972211" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:09.972411" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:09.972062" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.972921" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.972631" elapsed="0.000337"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.974007" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:09.973727" elapsed="0.000325"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.974727" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.974210" elapsed="0.000544"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.975469" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:09.975145" elapsed="0.000352"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:09.976300" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.976016" elapsed="0.000310"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:09.976378" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:36:09.976571" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:09.975692" elapsed="0.000904"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.976748" elapsed="0.000266"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:09.975006" elapsed="0.002059"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.977673" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:09.977345" elapsed="0.000388"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:09.978549" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.978285" elapsed="0.000290"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:09.978625" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:09.978774" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:09.977920" elapsed="0.000878"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:09.978942" elapsed="0.000253"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:09.977210" elapsed="0.002028"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:09.974810" elapsed="0.004485"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:09.979347" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:09.979526" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:09.973365" elapsed="0.006187"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:09.973049" elapsed="0.006535"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.979761" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:09.979612" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:09.973024" elapsed="0.006812"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:09.980642" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:09.979976" elapsed="0.000694"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:09.980719" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:09.969003" elapsed="0.011841"/>
</kw>
<msg time="2026-04-05T00:36:09.980898" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:09.956016" elapsed="0.024966"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:09.993408" elapsed="0.000047"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.005776" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.018303" elapsed="0.000034"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.018545" elapsed="0.000031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.018738" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.019114" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.018971" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:10.018955" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.019329" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.019507" elapsed="0.000026"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.019685" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:10.018922" elapsed="0.000816"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.018817" elapsed="0.000947"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.019907" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.019982" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:10.020111" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:09.951684" elapsed="0.068454"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.046967" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.046472" elapsed="0.000523"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:10.047742" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:10.047496" elapsed="0.000320">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:10.047963" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:10.047152" elapsed="0.000837"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.048551" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:10.048147" elapsed="0.000431"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:10.048870" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:10.049034" level="INFO">${template} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Modified Content&lt;/l&gt;
&lt;/cont&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:10.048734" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.049474" level="INFO">&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Modified Content&lt;/l&gt;
&lt;/cont&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.049212" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:10.049907" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.049588" elapsed="0.000379"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.050440" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.050133" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.049993" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.049570" elapsed="0.000953"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.051100" level="INFO">${final_text} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Modified Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.050663" elapsed="0.000465"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:10.051175" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:10.045847" elapsed="0.005450"/>
</kw>
<msg time="2026-04-05T00:36:10.051351" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:10.033116" elapsed="0.018281"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.063612" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.075770" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.088168" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.088369" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.088559" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.088995" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.088854" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:10.088836" elapsed="0.000241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.089213" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.089374" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.089553" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:10.088801" elapsed="0.000804"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.088686" elapsed="0.000946"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.089773" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.089847" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:10.090042" level="INFO">${data} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Modified Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:10.030481" elapsed="0.059590"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:10.091722" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:10.091332" elapsed="0.000488">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:10.091947" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:10.090840" elapsed="0.001140"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.092416" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.092075" elapsed="0.000442"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.093189" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.092784" elapsed="0.000441"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.092551" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.092050" elapsed="0.001252"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.096536" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:10.093524" elapsed="0.003049"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:10.096641" elapsed="0.000040"/>
</return>
<msg time="2026-04-05T00:36:10.096853" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:10.090403" elapsed="0.006484"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.098787" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.098507" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.099216" level="INFO">&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Modified Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.098979" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.099659" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.099403" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.100080" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.099843" elapsed="0.000279"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:10.100938" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:10.100735" elapsed="0.000228"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:10.101280" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:10.101109" elapsed="0.000196"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.101504" elapsed="0.000216"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.102148" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.101871" elapsed="0.000322"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:10.102234" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:10.102388" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:10.100318" elapsed="0.002095"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:10.148978" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Content-Length': '81', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Modified Content&lt;/l&gt;
&lt;/cont&gt; 
 </msg>
<msg time="2026-04-05T00:36:10.149093" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:10.149303" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:10.104682" elapsed="0.044677"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.102500" elapsed="0.046990"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.149881" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.149550" elapsed="0.000632"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.102482" elapsed="0.047763"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.156609" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.152370" elapsed="0.004301"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.151896" elapsed="0.004824"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.151855" elapsed="0.004899"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.160484" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.157129" elapsed="0.003421"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.156830" elapsed="0.003767"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.156807" elapsed="0.003824"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.161394" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.160854" elapsed="0.000597"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.161867" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.161549" elapsed="0.000397"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.162664" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.162253" elapsed="0.000437"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.161980" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.161524" elapsed="0.001222"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.163255" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.162895" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.163589" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.163348" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.164113" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.163821" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.163670" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.163331" elapsed="0.000863"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:10.164336" elapsed="0.000362"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:10.165145" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.164857" elapsed="0.000314"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.165362" elapsed="0.002320"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:10.151074" elapsed="0.016670"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:10.167914" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-05T00:36:10.167810" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.167792" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.168145" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.168211" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:10.170538" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:10.097333" elapsed="0.073232"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:10.170631" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:10.170786" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:09.940011" elapsed="0.230799"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.171143" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.170908" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.170891" elapsed="0.000343"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:10.171267" elapsed="0.000026"/>
</return>
<arg>${directory_with_template_folders}${/}datamod1</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:09.935090" elapsed="0.236300"/>
</kw>
<doc>Send a request to change the sample test data label and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:09.851510" elapsed="0.320029"/>
</test>
<test id="s1-s4-s1-t10" name="Check_Device_Data_Label_Is_Modified" line="100">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:10.176687" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:10.176413" elapsed="0.000534"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.177926" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.177818" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.177799" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.183026" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.182919" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.182901" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.184096" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:10.183714" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.184592" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:10.184275" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:10.184667" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:10.184821" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:10.183315" elapsed="0.001529"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.190315" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.190206" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.190186" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.191676" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.191569" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.191550" elapsed="0.000234"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:10.192305" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.191929" elapsed="0.000403"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:10.192762" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:10.192506" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:10.226040" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:10.193334" elapsed="0.032907"/>
</kw>
<msg time="2026-04-05T00:36:10.226420" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:10.226510" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.192943" elapsed="0.033604"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:10.249010" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "I "s "_ "M "o "d "i "f "i "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:10.227131" elapsed="0.022283"/>
</kw>
<msg time="2026-04-05T00:36:10.249775" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:10.249846" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.226726" elapsed="0.023176"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.250564" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.250068" elapsed="0.000615"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.250019" elapsed="0.000704"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.251617" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "I "s "_ "M "o "d "i "f "i "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.250934" elapsed="0.000795"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.252142" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.251829" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.251802" elapsed="0.000484"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:10.252341" elapsed="0.000058"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:10.256360" elapsed="0.000182"/>
</kw>
<msg time="2026-04-05T00:36:10.256615" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:10.255585" elapsed="0.001141"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.257877" elapsed="0.000040"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.258881" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:10.253746" elapsed="0.005254"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:10.252818" elapsed="0.006303"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:10.191234" elapsed="0.067988"/>
</kw>
<msg time="2026-04-05T00:36:10.259324" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:10.259369" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.190550" elapsed="0.068858"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:10.259630" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:10.259505" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.259485" elapsed="0.000230"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.260136" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.260597" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.260670" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:10.189834" elapsed="0.070949"/>
</kw>
<msg time="2026-04-05T00:36:10.260882" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:10.260926" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.185210" elapsed="0.075754"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.261292" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.261043" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.261026" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:10.185072" elapsed="0.076319"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:10.184898" elapsed="0.076559"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:10.182550" elapsed="0.078974"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:10.177529" elapsed="0.084056"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.177092" elapsed="0.084540"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:10.172464" elapsed="0.089224"/>
</kw>
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.263035" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.262647" elapsed="0.000415"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.271117" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.270680" elapsed="0.000482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.271575" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.271312" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:10.293938" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:10.294468" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '140'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:10.294718" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:10.273718" elapsed="0.021041"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.271686" elapsed="0.023161"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.295266" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.294905" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.271668" elapsed="0.023780"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.304011" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.297607" elapsed="0.006554"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.297221" elapsed="0.007044"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.297186" elapsed="0.007146"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.310570" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.305108" elapsed="0.005528"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.304524" elapsed="0.006148"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.304473" elapsed="0.006323"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.311470" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.311014" elapsed="0.000484"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.311810" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.311571" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.312355" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.312052" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.311892" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.311552" elapsed="0.000905"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.312983" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.312619" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.313307" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.313080" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.313856" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.313560" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.313389" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.313062" elapsed="0.000876"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:10.314091" elapsed="0.000404"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:10.315001" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.314691" elapsed="0.000336"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.315179" elapsed="0.002324"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:10.296287" elapsed="0.021290"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:10.317768" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-05T00:36:10.317653" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.317634" elapsed="0.000236"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.318016" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.318086" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:10.323052" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:10.266150" elapsed="0.056933"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:10.323146" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:10.323299" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:10.263268" elapsed="0.060058"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:10.323371" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:10.323532" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:10.262337" elapsed="0.061225"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.323836" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.323631" elapsed="0.000261"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.324111" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.323916" elapsed="0.000249"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:10.324326" elapsed="0.000351"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.324190" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.323614" elapsed="0.001123"/>
</if>
<arg>&lt;data xmlns="${ODL_NETCONF_NAMESPACE}"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</arg>
<status status="PASS" start="2026-04-05T00:36:10.261910" elapsed="0.062920"/>
</kw>
<doc>Get the device data label and make sure it contains the modified content.</doc>
<status status="PASS" start="2026-04-05T00:36:10.171872" elapsed="0.153090"/>
</test>
<test id="s1-s4-s1-t11" name="Deconfigure_Device_From_Netconf_Temporarily" line="105">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:10.329395" elapsed="0.000230"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:10.329132" elapsed="0.000548"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.330840" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.330686" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.330660" elapsed="0.000275"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.338080" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.337919" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.337894" elapsed="0.000288"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.339610" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:10.339062" elapsed="0.000585"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.340307" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:10.339863" elapsed="0.000480"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:10.340403" elapsed="0.000065"/>
</return>
<msg time="2026-04-05T00:36:10.340643" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:10.338536" elapsed="0.002141"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.346786" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.346680" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.346661" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.348143" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.348038" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.348021" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:10.348745" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.348351" elapsed="0.000421"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:10.349182" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:10.348927" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:10.384109" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:10.349774" elapsed="0.034506"/>
</kw>
<msg time="2026-04-05T00:36:10.384510" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:10.384557" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.349363" elapsed="0.035231"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:10.408063" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ "N "e "t "c "o "n "f "_ "T "e "m "p "o "r "a "r "i "l "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:10.385156" elapsed="0.023087"/>
</kw>
<msg time="2026-04-05T00:36:10.408411" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:10.408476" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.384763" elapsed="0.023750"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.408810" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.408590" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.408570" elapsed="0.000341"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.410391" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ "N "e "t "c "o "n "f "_ "T "e "m "p "o "r "a "r "i "l "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.409054" elapsed="0.001505"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.410850" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.410632" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.410613" elapsed="0.000338"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:10.410985" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:10.413924" elapsed="0.000142"/>
</kw>
<msg time="2026-04-05T00:36:10.414136" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:10.413292" elapsed="0.000943"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.415355" elapsed="0.000041"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.416449" elapsed="0.000040"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:10.411840" elapsed="0.004734"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:10.411242" elapsed="0.005450"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:10.347739" elapsed="0.069053"/>
</kw>
<msg time="2026-04-05T00:36:10.416885" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:10.416929" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.346999" elapsed="0.069968"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:10.417151" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:10.417043" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.417025" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.417674" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.418009" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.418081" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:10.346326" elapsed="0.071861"/>
</kw>
<msg time="2026-04-05T00:36:10.418280" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:10.418323" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.341194" elapsed="0.077166"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.418818" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.418567" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.418546" elapsed="0.000349"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:10.341001" elapsed="0.077917"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:10.340757" elapsed="0.078193"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:10.337387" elapsed="0.081618"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:10.330315" elapsed="0.088745"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.329829" elapsed="0.089276"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:10.326893" elapsed="0.092264"/>
</kw>
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:10.438686" elapsed="0.000525"/>
</kw>
<msg time="2026-04-05T00:36:10.439264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:10.438292" elapsed="0.001055"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:10.437905" elapsed="0.001542"/>
</kw>
<msg time="2026-04-05T00:36:10.439494" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:10.429358" elapsed="0.010180"/>
</kw>
<msg time="2026-04-05T00:36:10.439641" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:10.429037" elapsed="0.010629"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.440567" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.439828" elapsed="0.000767"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.472503" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.472113" elapsed="0.000418"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:10.473336" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:10.473019" elapsed="0.000399">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:10.473528" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:10.472691" elapsed="0.000862"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.474091" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:10.473712" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:10.474410" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:10.474620" level="INFO">${template} = $RESTCONF_ROOT/operations/netconf-node-topology:delete-device
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:10.474275" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.475043" level="INFO">$RESTCONF_ROOT/operations/netconf-node-topology:delete-device
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.474802" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.476197" level="INFO">mapping: {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.475777" elapsed="0.000466"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.476682" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.476400" elapsed="0.000308"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.477597" level="INFO">${value} = 10.30.170.167</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:10.477068" elapsed="0.000556"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:10.478774" level="INFO">${encoded} = 10.30.170.167</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.478242" elapsed="0.000572"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:10.478927" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:10.479152" level="INFO">${encoded_value} = 10.30.170.167</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:10.477811" elapsed="0.001367"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.479327" elapsed="0.000534"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.167</var>
<status status="PASS" start="2026-04-05T00:36:10.476935" elapsed="0.002969"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.480701" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:10.480183" elapsed="0.000544"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:10.481852" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.481343" elapsed="0.000551"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:10.482008" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:10.482234" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:10.480913" elapsed="0.001346"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.482408" elapsed="0.000539"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:10.480053" elapsed="0.002937"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.483747" level="INFO">${value} = 17830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:10.483232" elapsed="0.000541"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:10.484874" level="INFO">${encoded} = 17830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.484382" elapsed="0.000531"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:10.485027" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:10.485249" level="INFO">${encoded_value} = 17830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:10.483952" elapsed="0.001323"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.485449" elapsed="0.000476"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">17830</var>
<status status="PASS" start="2026-04-05T00:36:10.483103" elapsed="0.002864"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.486828" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:10.486205" elapsed="0.000649"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:10.487955" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.487480" elapsed="0.000515"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:10.488108" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:10.488332" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:10.487035" elapsed="0.001323"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.488519" elapsed="0.000470"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:36:10.486077" elapsed="0.002955"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.489803" level="INFO">${value} = topsecret</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:10.489273" elapsed="0.000556"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:10.491058" level="INFO">${encoded} = topsecret</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.490565" elapsed="0.000534"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:10.491213" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:10.491450" level="INFO">${encoded_value} = topsecret</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:10.490010" elapsed="0.001467"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.491624" elapsed="0.000473"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">topsecret</var>
<status status="PASS" start="2026-04-05T00:36:10.489144" elapsed="0.002995"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.493110" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:10.492378" elapsed="0.000758"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:10.494260" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.493787" elapsed="0.000515"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:10.494416" elapsed="0.000159"/>
</return>
<msg time="2026-04-05T00:36:10.494777" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:10.493320" elapsed="0.001482"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.494950" elapsed="0.000485"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:36:10.492251" elapsed="0.003263"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.496258" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:10.495760" elapsed="0.000523"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:10.497388" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.496917" elapsed="0.000538"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:10.497572" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:10.497796" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:10.496484" elapsed="0.001337"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.497968" elapsed="0.000570"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:36:10.495631" elapsed="0.002978"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.499360" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:10.498862" elapsed="0.000523"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:10.500513" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.500025" elapsed="0.000528"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:10.500666" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:10.500888" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:10.499594" elapsed="0.001319"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.501058" elapsed="0.000499"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:10.498732" elapsed="0.002869"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:10.476756" elapsed="0.024879"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:10.501678" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:10.501837" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:10.475459" elapsed="0.026403"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.475152" elapsed="0.026741"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.502061" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.501918" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.475134" elapsed="0.027002"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.503069" level="INFO">${final_text} = /rests/operations/netconf-node-topology:delete-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.502272" elapsed="0.000824"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:10.503145" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:10.471505" elapsed="0.031762"/>
</kw>
<msg time="2026-04-05T00:36:10.503318" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:10.458963" elapsed="0.044401"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.515795" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.527927" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.540638" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.540829" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.540999" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.541359" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.541219" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:10.541205" elapsed="0.000247"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.541587" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.541747" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.541907" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:10.541176" elapsed="0.000783"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.541074" elapsed="0.000911"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.542126" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.542201" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:10.542312" level="INFO">${uri} = /rests/operations/netconf-node-topology:delete-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:10.454780" elapsed="0.087557"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.566749" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.566323" elapsed="0.000454"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:10.567474" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:10.567255" elapsed="0.000282">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:10.567628" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:10.566932" elapsed="0.000720"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.568183" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:10.567808" elapsed="0.000401"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:10.568513" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:10.568655" level="INFO">${template} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
 &lt;/input&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:10.568363" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.569073" level="INFO">&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
 &lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.568833" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:10.569481" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.569183" elapsed="0.000402"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.570051" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.569753" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.569610" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.569165" elapsed="0.000969"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.570953" level="INFO">${final_text} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
 &lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.570273" elapsed="0.000710"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:10.571031" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:10.565716" elapsed="0.005438"/>
</kw>
<msg time="2026-04-05T00:36:10.571207" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:10.553274" elapsed="0.017979"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.583708" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.595977" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.608108" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.608295" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.608478" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.608833" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.608696" elapsed="0.000190"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:10.608682" elapsed="0.000227"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.609040" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.609199" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.609354" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:10.608654" elapsed="0.000752"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.608555" elapsed="0.000901"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.609598" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.609707" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:36:10.609826" level="INFO">${data} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
 &lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:10.552438" elapsed="0.057415"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:10.611133" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:10.610889" elapsed="0.000308">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:10.611288" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:10.610515" elapsed="0.000798"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.611638" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.611382" elapsed="0.000313"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.612164" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.611876" elapsed="0.000313"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.611719" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.611364" elapsed="0.000880"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.614556" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:10.612390" elapsed="0.002192"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:10.614633" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:10.614809" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:10.610182" elapsed="0.004652"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.616334" level="INFO">/rests/operations/netconf-node-topology:delete-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.616089" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.616777" level="INFO">&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
 &lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.616540" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.617205" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.616966" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.617699" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.617390" elapsed="0.000352"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:10.618548" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:10.618331" elapsed="0.000242"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:10.618906" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:10.618718" elapsed="0.000213"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.619073" elapsed="0.000194"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.619678" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.619417" elapsed="0.000303"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:10.619761" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:10.619912" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:10.617940" elapsed="0.001997"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.622213" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.620005" elapsed="0.002274"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:10.653846" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/operations/netconf-node-topology:delete-device 
 path_url=/rests/operations/netconf-node-topology:delete-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Content-Length': '106', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
 &lt;/input&gt; 
 </msg>
<msg time="2026-04-05T00:36:10.653897" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/operations/netconf-node-topology:delete-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:10.653986" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:10.622496" elapsed="0.031515"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.622337" elapsed="0.031722"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.619987" elapsed="0.034095"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.661066" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.655835" elapsed="0.005324"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.655320" elapsed="0.005917"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.655280" elapsed="0.006011"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.665124" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.661920" elapsed="0.003249"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.661410" elapsed="0.003793"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.661375" elapsed="0.003851"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.665768" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.665380" elapsed="0.000414"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.666089" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.665863" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.666633" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.666321" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.666169" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.665845" elapsed="0.000869"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.667234" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.666877" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.667566" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.667327" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.668094" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.667803" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.667651" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.667310" elapsed="0.000863"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:10.668314" elapsed="0.000360"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:10.669103" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.668831" elapsed="0.000298"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.669275" elapsed="0.002330"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:10.654459" elapsed="0.017222"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:10.671863" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-05T00:36:10.671759" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.671741" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.672090" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.672157" elapsed="0.000014"/>
</return>
<msg time="2026-04-05T00:36:10.674388" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:10.615159" elapsed="0.059255"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:10.674532" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:10.674685" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:10.443793" elapsed="0.230916"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.675074" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.674813" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.674795" elapsed="0.000373"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:10.675201" elapsed="0.000025"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:10.441033" elapsed="0.234289"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.440685" elapsed="0.234679"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.675650" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.675388" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.440666" elapsed="0.235072"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.675873" elapsed="0.000234"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=${device_type_rpc_delete}</arg>
<arg>http_timeout=2</arg>
<arg>http_method=post</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:36:10.419445" elapsed="0.256725"/>
</kw>
<doc>Make request to deconfigure the testtool device on Netconf connector.
This is the first part of the "configure/deconfigure" cycle of the device
The purpose of cycling the device like this is to see that the configuration
data was really stored in the device.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:10.325557" elapsed="0.350730"/>
</test>
<test id="s1-s4-s1-t12" name="Wait_For_Device_To_Be_Gone" line="118">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:10.680327" elapsed="0.000225"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:10.680070" elapsed="0.000542"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.681578" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.681468" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.681449" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.686543" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.686433" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.686403" elapsed="0.000207"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.687659" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:10.687266" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.688128" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:10.687838" elapsed="0.000316"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:10.688197" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:10.688348" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:10.686827" elapsed="0.001545"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.693797" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.693689" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.693670" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.695088" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.694983" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.694965" elapsed="0.000222"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:10.695703" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.695331" elapsed="0.000398"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:10.696123" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:10.695882" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:10.721550" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:10.696703" elapsed="0.025008"/>
</kw>
<msg time="2026-04-05T00:36:10.721881" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:10.721927" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.696301" elapsed="0.025663"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:10.737084" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "_ "G "o "n "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:10.722542" elapsed="0.014718"/>
</kw>
<msg time="2026-04-05T00:36:10.737448" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:10.737496" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.722132" elapsed="0.015401"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.737826" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.737611" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.737591" elapsed="0.000334"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.738447" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "_ "G "o "n "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.738060" elapsed="0.000457"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.738796" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.738585" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.738567" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:10.738957" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:10.742005" elapsed="0.000147"/>
</kw>
<msg time="2026-04-05T00:36:10.742225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:10.741255" elapsed="0.001067"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.743481" elapsed="0.000064"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.744470" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:10.739806" elapsed="0.004778"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:10.739217" elapsed="0.005483"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:10.694656" elapsed="0.050142"/>
</kw>
<msg time="2026-04-05T00:36:10.744888" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:10.744931" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.694010" elapsed="0.050958"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:10.745147" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:10.745042" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.745024" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.745627" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.745995" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.746067" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:10.693317" elapsed="0.052857"/>
</kw>
<msg time="2026-04-05T00:36:10.746266" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:10.746309" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.688744" elapsed="0.057601"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.746691" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.746445" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.746402" elapsed="0.000366"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:10.688609" elapsed="0.058181"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:10.688439" elapsed="0.058380"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:10.686066" elapsed="0.060805"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:10.681172" elapsed="0.065751"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.680758" elapsed="0.066223"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:10.677325" elapsed="0.069706"/>
</kw>
<kw name="Wait_Device_Fully_Removed" owner="NetconfKeywords">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Completely_Gone" owner="NetconfKeywords">
<kw name="Check_Device_Has_No_Netconf_Connector" owner="NetconfKeywords">
<kw name="Count_Netconf_Connectors_For_Device" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.799170" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.796950" elapsed="0.002257"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.799592" elapsed="0.000022"/>
</kw>
<var name="${nv}"/>
<status status="NOT RUN" start="2026-04-05T00:36:10.799439" elapsed="0.000212"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.799280" elapsed="0.000398"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.800012" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.799753" elapsed="0.000315"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.800815" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.800315" elapsed="0.000527"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.800093" elapsed="0.000786"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.801059" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.800902" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.799730" elapsed="0.001402"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:10.801168" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:36:10.801326" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:10.796490" elapsed="0.004860"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:10.801396" elapsed="0.000039"/>
</return>
<msg time="2026-04-05T00:36:10.801556" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:10.795815" elapsed="0.005766"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.808690" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.808412" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.809171" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.808885" elapsed="0.000336"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:10.819589" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:10.819828" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1181'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-05T00:36:10.819940" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:10.811312" elapsed="0.008653"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.809289" elapsed="0.010718"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.820177" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.820032" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.809271" elapsed="0.010989"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.839086" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.821250" elapsed="0.017895"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.821036" elapsed="0.018147"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.821018" elapsed="0.018190"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.854682" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.839498" elapsed="0.015231"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.839263" elapsed="0.015500"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.839246" elapsed="0.015541"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.855362" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.854943" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.855705" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.855474" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.856258" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.855938" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.855786" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.855456" elapsed="0.000885"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.856863" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.856505" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.857183" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.856958" elapsed="0.000281"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.857982" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.857415" elapsed="0.000593"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.857263" elapsed="0.000780"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.856940" elapsed="0.001123"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:10.858210" elapsed="0.000361"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:10.859033" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.858731" elapsed="0.000327"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.859252" elapsed="0.002597"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:10.820621" elapsed="0.041290"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.862082" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.861978" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.861960" elapsed="0.000188"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:10.865299" level="INFO">${text_normalized} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:10.862287" elapsed="0.003040"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:10.865379" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:10.865627" level="INFO">${response_text} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:10.804175" elapsed="0.061479"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:10.865711" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:10.865857" level="INFO">${mounts} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${mounts}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:10.801796" elapsed="0.064087"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.866291" level="INFO">{
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topology-parameters": {
       "encryption": {
        "encryption-alg": [
         "AEAD_AES_128_GCM",
         "AEAD_AES_256_GCM",
         "aes128-cbc",
         "aes128-ctr",
         "aes192-cbc",
         "aes192-ctr",
         "aes256-cbc",
         "aes256-ctr",
         "chacha20-poly1305"
        ]
       },
       "host-key": {
        "host-key-alg": [
         "ecdsa-sha2-nistp256",
         "ecdsa-sha2-nistp384",
         "ecdsa-sha2-nistp521",
         "rsa-sha2-256",
         "rsa-sha2-512",
         "ssh-ed25519",
         "ssh-rsa"
        ]
       },
       "key-exchange": {
        "key-exchange-alg": [
         "curve25519-sha256",
         "curve448-sha512",
         "diffie-hellman-group-exchange-sha256",
         "diffie-hellman-group14-sha256",
         "diffie-hellman-group15-sha512",
         "diffie-hellman-group16-sha512",
         "diffie-hellman-group17-sha512",
         "diffie-hellman-group18-sha512",
         "ecdh-sha2-nistp256",
         "ecdh-sha2-nistp384",
         "ecdh-sha2-nistp521",
         "mlkem1024nistp384-sha384",
         "mlkem768nistp256-sha256",
         "mlkem768x25519-sha256",
         "sntrup761x25519-sha512"
        ]
       },
       "mac": {
        "mac-alg": [
         "hmac-sha1",
         "hmac-sha2-256",
         "hmac-sha2-512"
        ]
       }
      }
     }
    }
   },
   {
    "topology-id": "flow:1"
   },
   {
    "topology-id": "hwvtep:1"
   },
   {
    "topology-id": "ovsdb:1"
   }
  ]
 }
}
</msg>
<arg>${mounts}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.866043" elapsed="0.000305"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.866896" level="INFO">${actual_count} = 0</msg>
<var>${actual_count}</var>
<arg>len('''${mounts}'''.split('"node-id": "${device_name}"'))-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:10.866512" elapsed="0.000410"/>
</kw>
<return>
<value>${actual_count}</value>
<status status="PASS" start="2026-04-05T00:36:10.866967" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:10.867139" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Count all instances of the specified device in the Netconf topology (usually 0 or 1).</doc>
<status status="PASS" start="2026-04-05T00:36:10.749135" elapsed="0.118035"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.867618" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${count}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:10.867326" elapsed="0.000359"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Check that there are no instances of the specified device in the Netconf topology.</doc>
<status status="PASS" start="2026-04-05T00:36:10.748695" elapsed="0.119059"/>
</kw>
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.877971" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.875813" elapsed="0.002185"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.878662" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.878326" elapsed="0.000363"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:10.878180" elapsed="0.000543"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.879298" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.878945" elapsed="0.000380"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:10.878800" elapsed="0.000559"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:10.878051" elapsed="0.001383"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.880214" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:10.879744" elapsed="0.000497"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:10.879503" elapsed="0.000773"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.880481" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.880301" elapsed="0.000235"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.880712" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.880560" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.879485" elapsed="0.001300"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:10.880817" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:10.880961" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:10.875355" elapsed="0.005631"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:10.881031" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:10.881167" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>config</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:10.874799" elapsed="0.006392"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:10.888610" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:10.888971" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-05T00:36:10.889101" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:10.881956" elapsed="0.007180"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-05T00:36:10.895552" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-05T00:36:10.889244" elapsed="0.006391"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.889219" elapsed="0.006451"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.895876" elapsed="0.000030"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.896100" elapsed="0.000028"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config in default using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-05T00:36:10.881560" elapsed="0.014647"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device has no Netconf connectors nor associated data.</doc>
<status status="PASS" start="2026-04-05T00:36:10.748189" elapsed="0.148095"/>
</kw>
<arg>${timeout}</arg>
<arg>${period}</arg>
<arg>Check_Device_Completely_Gone</arg>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:10.747635" elapsed="0.148717"/>
</kw>
<arg>${device_name}</arg>
<doc>Wait until all netconf connectors for the device with the given name disappear.
Call of Remove_Device_From_Netconf returns before netconf gets
around deleting the device's connector. To ensure the device is
really gone from netconf, use this keyword to make sure all
connectors disappear. If a call to Remove_Device_From_Netconf
is not made before using this keyword, the wait will fail.
Using this keyword is more readable than putting the WUKS below
into a test case.</doc>
<status status="PASS" start="2026-04-05T00:36:10.747227" elapsed="0.149231"/>
</kw>
<doc>Wait for the device to completely disappear.</doc>
<status status="PASS" start="2026-04-05T00:36:10.676744" elapsed="0.219879"/>
</test>
<test id="s1-s4-s1-t13" name="Configure_The_Device_Back" line="122">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:10.901093" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:10.900834" elapsed="0.000518"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.902323" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.902216" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.902198" elapsed="0.000242"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.907473" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.907353" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.907335" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.908521" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:10.908128" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.908999" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:10.908705" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:10.909069" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:10.909219" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:10.907762" elapsed="0.001481"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.914634" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.914528" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.914509" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.916229" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:10.916122" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.916104" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:10.916820" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:10.916466" elapsed="0.000380"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:10.917238" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:10.916998" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:10.952104" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:10.917825" elapsed="0.034457"/>
</kw>
<msg time="2026-04-05T00:36:10.952527" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:10.952575" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.917415" elapsed="0.035197"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:10.974904" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "o "n "f "i "g "u "r "e "_ "T "h "e "_ "D "e "v "i "c "e "_ "B "a "c "k "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:10.953162" elapsed="0.022160"/>
</kw>
<msg time="2026-04-05T00:36:10.975691" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:10.975740" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "o "n "f "i "g "u "r "e "_ "T "h "e "_ "D "e "v "i "c "e ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.952777" elapsed="0.023000"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.976245" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.975902" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.975862" elapsed="0.000496"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:10.977027" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "o "n "f "i "g "u "r "e "_ "T "h "e "_ "D "e "v "i "c "e "_ "B "a "c "k "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:10.976531" elapsed="0.000568"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.977383" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.977168" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.977148" elapsed="0.000370"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:10.977559" elapsed="0.000054"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:10.981365" elapsed="0.000476"/>
</kw>
<msg time="2026-04-05T00:36:10.981925" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:10.980613" elapsed="0.001426"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.983032" elapsed="0.000040"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.984122" elapsed="0.000040"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:10.978876" elapsed="0.005388"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:10.978009" elapsed="0.006377"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:10.915771" elapsed="0.068895"/>
</kw>
<msg time="2026-04-05T00:36:10.984768" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:10.984812" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "o "n "f "i "g "u "r "e "_ "T "h "e "_ "D "e "v "i "c "e ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.914847" elapsed="0.070003"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:10.985041" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:10.984930" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.984910" elapsed="0.000217"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.985567" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.985914" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:10.985988" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:10.914181" elapsed="0.071918"/>
</kw>
<msg time="2026-04-05T00:36:10.986196" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:10.986242" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "o "n "f "i "g "u "r "e "_ "T "h "e "_ "D "e "v "i "c "e ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.909612" elapsed="0.076677"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:10.986637" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:10.986368" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:10.986350" elapsed="0.000364"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:10.909475" elapsed="0.077263"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:10.909294" elapsed="0.077479"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:10.906972" elapsed="0.079862"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:10.901935" elapsed="0.084962"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:10.901512" elapsed="0.085434"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:10.898167" elapsed="0.088836"/>
</kw>
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:11.006939" elapsed="0.000471"/>
</kw>
<msg time="2026-04-05T00:36:11.007478" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:11.006561" elapsed="0.000969"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:11.006157" elapsed="0.001450"/>
</kw>
<msg time="2026-04-05T00:36:11.007651" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:10.997463" elapsed="0.010231"/>
</kw>
<msg time="2026-04-05T00:36:11.007799" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:10.997117" elapsed="0.010744"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.008779" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.008034" elapsed="0.000774"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.041909" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:11.041470" elapsed="0.000475"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:11.043008" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:11.042554" elapsed="0.000557">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:11.043222" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:11.042141" elapsed="0.001108"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.044186" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:11.043651" elapsed="0.000573"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:11.044600" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:11.044798" level="INFO">${template} = $RESTCONF_ROOT/operations/netconf-node-topology:create-device
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:11.044416" elapsed="0.000412"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.045302" level="INFO">$RESTCONF_ROOT/operations/netconf-node-topology:create-device
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.045014" elapsed="0.000340"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.046540" level="INFO">mapping: {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.046215" elapsed="0.000383"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.047088" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.046786" elapsed="0.000332"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.048216" level="INFO">${value} = 10.30.170.167</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:11.047610" elapsed="0.000637"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:11.049672" level="INFO">${encoded} = 10.30.170.167</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.049041" elapsed="0.000678"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:11.049857" elapsed="0.000043"/>
</return>
<msg time="2026-04-05T00:36:11.050133" level="INFO">${encoded_value} = 10.30.170.167</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:11.048508" elapsed="0.001654"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.050352" elapsed="0.000607"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.167</var>
<status status="PASS" start="2026-04-05T00:36:11.047444" elapsed="0.003564"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.052160" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:11.051302" elapsed="0.000892"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:11.053555" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.052960" elapsed="0.000642"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:11.053734" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:36:11.053995" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:11.052421" elapsed="0.001665"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.054270" elapsed="0.000582"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:11.051145" elapsed="0.003759"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.055847" level="INFO">${value} = 17830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:11.055198" elapsed="0.000676"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:11.057015" level="INFO">${encoded} = 17830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.056530" elapsed="0.000525"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:11.057175" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:11.057402" level="INFO">${encoded_value} = 17830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:11.056064" elapsed="0.001443"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.057662" elapsed="0.000479"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">17830</var>
<status status="PASS" start="2026-04-05T00:36:11.055036" elapsed="0.003148"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.058950" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:11.058442" elapsed="0.000535"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:11.060156" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.059671" elapsed="0.000525"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:11.060313" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:36:11.060562" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:11.059163" elapsed="0.001425"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.060737" elapsed="0.000483"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:36:11.058298" elapsed="0.002965"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.062127" level="INFO">${value} = topsecret</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:11.061624" elapsed="0.000529"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:11.063337" level="INFO">${encoded} = topsecret</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.062861" elapsed="0.000518"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:11.063547" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:36:11.063776" level="INFO">${encoded_value} = topsecret</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:11.062404" elapsed="0.001398"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.063950" elapsed="0.000491"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">topsecret</var>
<status status="PASS" start="2026-04-05T00:36:11.061375" elapsed="0.003112"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.065233" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:11.064731" elapsed="0.000529"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:11.066489" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.065993" elapsed="0.000538"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:11.066649" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:11.066872" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:11.065558" elapsed="0.001339"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.067044" elapsed="0.000547"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:36:11.064601" elapsed="0.003037"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.068387" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:11.067883" elapsed="0.000530"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:11.069901" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.069280" elapsed="0.000662"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:11.070055" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:11.070280" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:11.068616" elapsed="0.001754"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.070537" elapsed="0.000488"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:36:11.067753" elapsed="0.003316"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.071862" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:11.071307" elapsed="0.000580"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:11.072998" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.072518" elapsed="0.000521"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:11.073157" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:36:11.073386" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:11.072072" elapsed="0.001340"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.073794" elapsed="0.000479"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:11.071179" elapsed="0.003137"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:11.047179" elapsed="0.027172"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:11.074398" elapsed="0.000042"/>
</return>
<msg time="2026-04-05T00:36:11.074578" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:11.045815" elapsed="0.028791"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.045450" elapsed="0.029190"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.074825" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.074671" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.045410" elapsed="0.029504"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.075882" level="INFO">${final_text} = /rests/operations/netconf-node-topology:create-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:11.075063" elapsed="0.000851"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:11.075973" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:11.040729" elapsed="0.035396"/>
</kw>
<msg time="2026-04-05T00:36:11.076203" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:11.027627" elapsed="0.048651"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.089268" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.101854" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.116688" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.116976" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.117157" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.117594" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.117442" elapsed="0.000208"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:11.117407" elapsed="0.000269"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.117812" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.117974" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.118132" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:11.117363" elapsed="0.000821"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:11.117245" elapsed="0.000967"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.118355" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:11.118446" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:36:11.118581" level="INFO">${uri} = /rests/operations/netconf-node-topology:create-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:11.023291" elapsed="0.095320"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.145379" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:11.144973" elapsed="0.000435"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:11.146218" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:11.145933" elapsed="0.000369">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:11.146398" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:11.145591" elapsed="0.000845"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.146985" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:11.146601" elapsed="0.000411"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:11.147311" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:11.147713" level="INFO">${template} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
   &lt;host&gt;$DEVICE_IP&lt;/host&gt;
   &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;$DEVICE_USER&lt;/usern...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:11.147169" elapsed="0.000575"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.148148" level="INFO">&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
   &lt;host&gt;$DEVICE_IP&lt;/host&gt;
   &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;$DEVICE_USER&lt;/username&gt;
     &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
   &lt;/login-password&gt;
   &lt;tcp-only&gt;false&lt;/tcp-only&gt;
   &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
 &lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.147900" elapsed="0.000299"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:11.148605" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.148272" elapsed="0.000397"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.149133" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:11.148836" elapsed="0.000376"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.148696" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.148250" elapsed="0.001043"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.150183" level="INFO">${final_text} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
   &lt;host&gt;10.30.170.167&lt;/host&gt;
   &lt;port&gt;17830&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;admin&lt;/username&gt;...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:11.149455" elapsed="0.000758"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:11.150263" elapsed="0.000033"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:11.144309" elapsed="0.006083"/>
</kw>
<msg time="2026-04-05T00:36:11.150464" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:11.129552" elapsed="0.020960"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.162901" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.175296" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.187730" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.187918" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.188086" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.188482" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.188313" elapsed="0.000226"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:11.188298" elapsed="0.000264"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.188701" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.188861" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.189022" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:11.188268" elapsed="0.000805"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:11.188165" elapsed="0.000941"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.189247" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:11.189320" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:11.189456" level="INFO">${data} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
   &lt;host&gt;10.30.170.167&lt;/host&gt;
   &lt;port&gt;17830&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;admin&lt;/username&gt;...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:11.128655" elapsed="0.060880"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:11.190785" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:11.190542" elapsed="0.000307">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:11.190940" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:11.190192" elapsed="0.000772"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.191272" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.191033" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.191868" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:11.191543" elapsed="0.000352"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.191353" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.191015" elapsed="0.000936"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.194439" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:11.192096" elapsed="0.002370"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:11.194517" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:11.194676" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:11.189875" elapsed="0.004826"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.196258" level="INFO">/rests/operations/netconf-node-topology:create-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.196008" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.196712" level="INFO">&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
   &lt;host&gt;10.30.170.167&lt;/host&gt;
   &lt;port&gt;17830&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;admin&lt;/username&gt;
     &lt;password&gt;topsecret&lt;/password&gt;
   &lt;/login-password&gt;
   &lt;tcp-only&gt;false&lt;/tcp-only&gt;
   &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
 &lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.196469" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.197156" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.196910" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.197606" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.197345" elapsed="0.000306"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:11.198470" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:11.198250" elapsed="0.000247"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:11.198817" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:11.198646" elapsed="0.000196"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.198987" elapsed="0.000214"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.199638" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.199352" elapsed="0.000332"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:11.199727" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:11.199880" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:11.197853" elapsed="0.002051"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.202050" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.199975" elapsed="0.002140"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:11.217363" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/operations/netconf-node-topology:create-device 
 path_url=/rests/operations/netconf-node-topology:create-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Content-Length': '337', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
   &lt;host&gt;10.30.170.167&lt;/host&gt;
   &lt;port&gt;17830&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;admin&lt;/username&gt;
     &lt;password&gt;topsecret&lt;/password&gt;
   &lt;/login-password&gt;
   &lt;tcp-only&gt;false&lt;/tcp-only&gt;
   &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
 &lt;/input&gt; 
 </msg>
<msg time="2026-04-05T00:36:11.217508" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/operations/netconf-node-topology:create-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:11.217659" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:11.202276" elapsed="0.015419"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.202140" elapsed="0.015621"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.199957" elapsed="0.017835"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.222601" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.219227" elapsed="0.003434"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.218922" elapsed="0.003790"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.218897" elapsed="0.003849"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.226520" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.223124" elapsed="0.003462"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.222824" elapsed="0.003812"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.222801" elapsed="0.003870"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.227416" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:11.226890" elapsed="0.000585"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.227952" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.227574" elapsed="0.000460"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.228706" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:11.228281" elapsed="0.000451"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.228068" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.227550" elapsed="0.001238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.229295" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:11.228938" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.229631" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.229389" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.230153" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:11.229863" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.229712" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.229372" elapsed="0.000861"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:11.230377" elapsed="0.000358"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:11.231176" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:11.230895" elapsed="0.000307"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.231352" elapsed="0.002347"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:11.218289" elapsed="0.015472"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:11.233937" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:11.233833" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.233816" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.234164" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:11.234230" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:11.236526" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:11.195030" elapsed="0.041523"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:11.236657" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:11.236814" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:11.012214" elapsed="0.224626"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.237177" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.236944" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.236927" elapsed="0.000343"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:11.237302" elapsed="0.000026"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:11.009220" elapsed="0.228221"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.008897" elapsed="0.228590"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.237754" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.237513" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.008878" elapsed="0.228963"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.237979" elapsed="0.000237"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=${device_type_rpc_create}</arg>
<arg>http_timeout=2</arg>
<arg>http_method=post</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:36:10.987332" elapsed="0.250947"/>
</kw>
<doc>Configure the device again.
This is the second step of the device configuration.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:10.897302" elapsed="0.341114"/>
</test>
<test id="s1-s4-s1-t14" name="Wait_For_Device_To_Reconnect" line="132">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:11.241533" elapsed="0.000214"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:11.241254" elapsed="0.000547"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:11.242778" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:11.242671" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.242652" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:11.247943" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:11.247837" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.247818" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.248992" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:11.248618" elapsed="0.000400"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.249481" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:11.249171" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:11.249552" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:11.249704" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:11.248231" elapsed="0.001496"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:11.255145" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:11.255037" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.255018" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:11.256478" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:11.256345" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.256327" elapsed="0.000265"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:11.257100" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.256737" elapsed="0.000389"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:11.257552" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:11.257282" elapsed="0.000296"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:11.291109" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:11.258125" elapsed="0.033149"/>
</kw>
<msg time="2026-04-05T00:36:11.291523" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:11.291571" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:11.257739" elapsed="0.033870"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:11.317719" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:11.292461" elapsed="0.025434"/>
</kw>
<msg time="2026-04-05T00:36:11.318071" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:11.318117" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "R ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:11.291976" elapsed="0.026177"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.318481" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.318238" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.318217" elapsed="0.000365"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.319090" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.318721" elapsed="0.000437"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.319447" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.319224" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.319206" elapsed="0.000340"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:11.319579" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:11.322689" elapsed="0.001449"/>
</kw>
<msg time="2026-04-05T00:36:11.324218" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:11.321953" elapsed="0.002370"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.325268" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.326210" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:11.320475" elapsed="0.005851"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:11.319868" elapsed="0.006586"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:11.256044" elapsed="0.070510"/>
</kw>
<msg time="2026-04-05T00:36:11.326646" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:11.326689" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "R ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:11.255357" elapsed="0.071368"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:11.326908" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:11.326801" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.326782" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.327392" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.327818" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:11.327891" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:11.254704" elapsed="0.073296"/>
</kw>
<msg time="2026-04-05T00:36:11.328092" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:11.328135" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "R ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:11.250086" elapsed="0.078085"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.328507" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.328245" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.328228" elapsed="0.000357"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:11.249951" elapsed="0.078657"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:11.249778" elapsed="0.078860"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:11.247461" elapsed="0.081230"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:11.242370" elapsed="0.086376"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:11.241950" elapsed="0.086840"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:11.239144" elapsed="0.089696"/>
</kw>
<kw name="Wait_Device_Connected" owner="NetconfKeywords">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Connected" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.340768" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:11.338675" elapsed="0.002121"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.341457" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:11.341123" elapsed="0.000362"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:11.340976" elapsed="0.000545"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.342056" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:11.341744" elapsed="0.000338"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:11.341599" elapsed="0.000517"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:11.340848" elapsed="0.001296"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.342457" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.342207" elapsed="0.000308"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.343229" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:11.342766" elapsed="0.000489"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.342540" elapsed="0.000750"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.343488" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.343315" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.342190" elapsed="0.001374"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:11.343598" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:11.343742" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:11.338208" elapsed="0.005559"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:11.343813" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:36:11.343966" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:11.337664" elapsed="0.006327"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.351409" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.351161" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.351895" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.351628" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:11.361703" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:11.361853" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '277'} 
 body={"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167"}}]} 
 </msg>
<msg time="2026-04-05T00:36:11.361957" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:11.354123" elapsed="0.007860"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.352005" elapsed="0.010020"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.362198" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.362052" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.351987" elapsed="0.010294"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.367038" level="INFO">{"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.363270" elapsed="0.003875"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.363056" elapsed="0.004166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.363038" elapsed="0.004240"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.372875" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:11.367963" elapsed="0.004958"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.367401" elapsed="0.005555"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.367364" elapsed="0.005616"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.373525" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:11.373135" elapsed="0.000417"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.373850" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.373621" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.374386" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:11.374087" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.373932" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.373603" elapsed="0.000881"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.375003" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:11.374643" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:11.375323" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:11.375099" elapsed="0.000280"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.375863" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:11.375572" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:11.375403" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.375081" elapsed="0.000879"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:11.376115" elapsed="0.000362"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:11.376918" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:11.376639" elapsed="0.000304"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:11.377093" elapsed="0.002300"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:11.362642" elapsed="0.016862"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:11.379681" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:11.379576" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:11.379558" elapsed="0.000190"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:11.382616" level="INFO">${text_normalized} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:11.379910" elapsed="0.002735"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:11.382698" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:11.382856" level="INFO">${response_text} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:11.346826" elapsed="0.036056"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:11.382940" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:11.383087" level="INFO">${device_status} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${device_status}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:11.344208" elapsed="0.038904"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-05T00:36:11.383636" level="FAIL">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</msg>
<arg>${device_status}</arg>
<arg>connection-status": "connected"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-05T00:36:11.383268" elapsed="0.000437">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device is accessible from Netconf.</doc>
<status status="FAIL" start="2026-04-05T00:36:11.330014" elapsed="0.053820">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<kw name="Check_Device_Connected" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.400976" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.398824" elapsed="0.002185"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.401760" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.401414" elapsed="0.000372"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:12.401236" elapsed="0.000588"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.402372" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.402054" elapsed="0.000344"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:12.401908" elapsed="0.000541"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:12.401087" elapsed="0.001393"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.402822" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.402559" elapsed="0.000321"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.403612" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.403132" elapsed="0.000507"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.402905" elapsed="0.000771"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.403860" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.403701" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.402536" elapsed="0.001399"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:12.403971" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:36:12.404188" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:12.398323" elapsed="0.005891"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:12.404261" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:12.404402" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:12.397726" elapsed="0.006716"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.411680" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.411400" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.412116" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.411874" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:12.423283" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:12.423889" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3541'} 
 body={"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"negotiated-ssh-transport-parameters":{"encryption-alg":"chacha20-poly1305@openssh.com","host-key-alg":"rsa-sha2-512","mac-alg":"aead","key-exchange-alg":"sntrup761x25519-sha512"},"session-id":2,"connection-status":"connected","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167","available-capabilities":{"available-capability":[{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:notification:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:exi:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:candidate:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.0"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?revision=2014-08-18)people"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car?revision=2014-08-18)car"},{"capability-origin":"device-advertised","capability":"(ns:main?revision=2014-01-21)main"},{"capability-origin":"device-advertised","capability":"(ns:augment:main:a?revision=2014-01-21)augment-main-a"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:netconf:monitoring?revision=2022-07-18)odl-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension"},{"capability-origin":"device-advertised","capability":"(org:opendaylight:coretutorials:ncmount:example:l2fib?revision=2016-03-07)ncmount-l2fib"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people?revision=2014-08-18)car-people"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)car-purchase"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:test:netconf:crud?revision=2014-10-18)test"},{"capability-origin":"device-advertised","capability":"(https://example.com/ns/example-action?revision=2016-07-07)example-action"},{"capability":"(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:yang:extension:yang-ext?revision=2013-07-09)yang-ext"}]}}}]} 
 </msg>
<msg time="2026-04-05T00:36:12.424022" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:12.414271" elapsed="0.009777"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.412225" elapsed="0.011867"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.424266" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.424118" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.412207" elapsed="0.012143"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.428038" level="INFO">{"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"negotiated-ssh-transport-parameters":{"encryption-alg":"chacha20-poly1305@openssh.com","host-key-alg":"rsa-sha2-512","mac-alg":"aead","key-exchange-alg":"sntrup761x25519-sha512"},"session-id":2,"connection-status":"connected","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167","available-capabilities":{"available-capability":[{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:notification:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:exi:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:candidate:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.0"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?revision=2014-08-18)people"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car?revision=2014-08-18)car"},{"capability-origin":"device-advertised","capability":"(ns:main?revision=2014-01-21)main"},{"capability-origin":"device-advertised","capability":"(ns:augment:main:a?revision=2014-01-21)augment-main-a"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:netconf:monitoring?revision=2022-07-18)odl-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension"},{"capability-origin":"device-advertised","capability":"(org:opendaylight:coretutorials:ncmount:example:l2fib?revision=2016-03-07)ncmount-l2fib"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people?revision=2014-08-18)car-people"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)car-purchase"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:test:netconf:crud?revision=2014-10-18)test"},{"capability-origin":"device-advertised","capability":"(https://example.com/ns/example-action?revision=2016-07-07)example-action"},{"capability":"(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:yang:extension:yang-ext?revision=2013-07-09)yang-ext"}]}}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.425352" elapsed="0.002805"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.425136" elapsed="0.003063"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.425118" elapsed="0.003107"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.431374" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.428516" elapsed="0.002943"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.428281" elapsed="0.003229"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.428265" elapsed="0.003279"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.432300" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:12.431762" elapsed="0.000575"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.432780" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.432455" elapsed="0.000405"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.433570" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.433108" elapsed="0.000498"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.432894" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.432410" elapsed="0.001277"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.434461" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:12.433902" elapsed="0.000598"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.434913" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.434598" elapsed="0.000396"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.435668" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.435238" elapsed="0.000467"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.435027" elapsed="0.000727"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.434573" elapsed="0.001210"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:12.435989" elapsed="0.000504"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:12.437124" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:12.436718" elapsed="0.000442"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:12.437368" elapsed="0.002447"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:12.424716" elapsed="0.015162"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.440052" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:12.439947" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.439929" elapsed="0.000190"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:12.443662" level="INFO">${text_normalized} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:12.440260" elapsed="0.003432"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:12.443743" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:12.443899" level="INFO">${response_text} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:12.407096" elapsed="0.036830"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:12.443982" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:12.444128" level="INFO">${device_status} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${device_status}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:12.404665" elapsed="0.039488"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${device_status}</arg>
<arg>connection-status": "connected"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:12.444306" elapsed="0.000320"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device is accessible from Netconf.</doc>
<status status="PASS" start="2026-04-05T00:36:12.384703" elapsed="0.059983"/>
</kw>
<arg>${timeout}</arg>
<arg>${period}</arg>
<arg>Check_Device_Connected</arg>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:11.329446" elapsed="1.115329"/>
</kw>
<arg>${device_name}</arg>
<doc>Wait for the device to become connected.
It is more readable to use this keyword in a test case than to put the whole WUKS below into it.</doc>
<status status="PASS" start="2026-04-05T00:36:11.329037" elapsed="1.115804"/>
</kw>
<doc>Wait until the device becomes available through Netconf.</doc>
<status status="PASS" start="2026-04-05T00:36:11.238649" elapsed="1.206313"/>
</test>
<test id="s1-s4-s1-t15" name="Check_Modified_Device_Data_Is_Still_There" line="136">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:12.448107" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:12.447852" elapsed="0.000514"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.449339" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:12.449231" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.449213" elapsed="0.000233"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.454497" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:12.454375" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.454357" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.455551" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:12.455158" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.456024" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:12.455733" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:12.456094" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:12.456250" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:12.454785" elapsed="0.001490"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.461694" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:12.461582" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.461562" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.462997" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:12.462893" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.462875" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:12.463578" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:12.463202" elapsed="0.000402"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:12.464002" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:12.463757" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:12.499119" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:12.464580" elapsed="0.034712"/>
</kw>
<msg time="2026-04-05T00:36:12.499488" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:12.499536" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.464182" elapsed="0.035391"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:12.523539" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "M "o "d "i "f "i "e "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "S "t "i "l "l "_ "T "h "e "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:12.500135" elapsed="0.023584"/>
</kw>
<msg time="2026-04-05T00:36:12.523884" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:12.523928" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "M "o "d "i "f "i "e "d "_ "D "e "v "i "c ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.499741" elapsed="0.024224"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.524258" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.524041" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.524021" elapsed="0.000374"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.524941" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "M "o "d "i "f "i "e "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "S "t "i "l "l "_ "T "h "e "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.524563" elapsed="0.000451"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.525293" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.525081" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.525063" elapsed="0.000329"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:12.525441" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:12.528548" elapsed="0.000146"/>
</kw>
<msg time="2026-04-05T00:36:12.528766" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:12.527913" elapsed="0.000957"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.529848" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.530838" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:12.526436" elapsed="0.004516"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:12.525805" elapsed="0.005262"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:12.462595" elapsed="0.068572"/>
</kw>
<msg time="2026-04-05T00:36:12.531259" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:12.531302" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "M "o "d "i "f "i "e "d "_ "D "e "v "i "c ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.461908" elapsed="0.069431"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:12.531711" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:12.531592" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.531397" elapsed="0.000400"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.532189" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.532532" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.532604" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:12.461209" elapsed="0.071502"/>
</kw>
<msg time="2026-04-05T00:36:12.532802" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:12.532844" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "M "o "d "i "f "i "e "d "_ "D "e "v "i "c ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.456645" elapsed="0.076236"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.533198" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.532955" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.532938" elapsed="0.000337"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:12.456508" elapsed="0.076790"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:12.456327" elapsed="0.077000"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:12.454017" elapsed="0.079363"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:12.448948" elapsed="0.084515"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.448527" elapsed="0.085007"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:12.445754" elapsed="0.087835"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.535351" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.534972" elapsed="0.000407"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.542705" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.542255" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.543144" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.542899" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:12.562512" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:12.562678" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '140'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:12.562893" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:12.545281" elapsed="0.017669"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.543255" elapsed="0.019788"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.563461" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.563102" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.543237" elapsed="0.020416"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.571894" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.565970" elapsed="0.006037"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.565406" elapsed="0.006681"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.565365" elapsed="0.006777"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.576176" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.572814" elapsed="0.003408"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.572264" elapsed="0.003993"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.572227" elapsed="0.004054"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.576823" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:12.576450" elapsed="0.000399"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.577147" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.576920" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.577784" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.577383" elapsed="0.000429"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.577228" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.576902" elapsed="0.000967"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.578390" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:12.578025" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.578743" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.578507" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.579276" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.578980" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.578823" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.578489" elapsed="0.000871"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:12.579521" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:12.580309" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:12.580029" elapsed="0.000341"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:12.580542" elapsed="0.002342"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:12.564410" elapsed="0.018539"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:12.583128" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-05T00:36:12.583020" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.583001" elapsed="0.000214"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.583357" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.583443" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:12.585782" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:12.537949" elapsed="0.047863"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:12.585872" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:12.586020" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:12.535604" elapsed="0.050443"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:12.586090" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:12.586229" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:12.534666" elapsed="0.051590"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.586536" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.586319" elapsed="0.000275"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.586812" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.586618" elapsed="0.000249"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:12.587026" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.586890" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.586303" elapsed="0.001101"/>
</if>
<arg>&lt;data xmlns="${ODL_NETCONF_NAMESPACE}"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</arg>
<status status="PASS" start="2026-04-05T00:36:12.534264" elapsed="0.053213"/>
</kw>
<arg>60s</arg>
<arg>1s</arg>
<arg>Check_Config_Data</arg>
<arg>&lt;data xmlns="${ODL_NETCONF_NAMESPACE}"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:12.533751" elapsed="0.053773"/>
</kw>
<doc>Get the device data and make sure it contains the created content.</doc>
<status status="PASS" start="2026-04-05T00:36:12.445163" elapsed="0.142473"/>
</test>
<test id="s1-s4-s1-t16" name="Modify_Device_Data_Again" line="144">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:12.590837" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:12.590578" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.592069" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:12.591962" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.591944" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.597184" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:12.597077" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.597058" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.598307" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:12.597928" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.598803" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:12.598507" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:12.598874" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:12.599028" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:12.597489" elapsed="0.001563"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.604480" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:12.604356" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.604337" elapsed="0.000211"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.605769" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:12.605661" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.605640" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:12.606338" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:12.605981" elapsed="0.000383"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:12.606776" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:12.606535" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:12.639308" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:12.607334" elapsed="0.032365"/>
</kw>
<msg time="2026-04-05T00:36:12.640078" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:12.640180" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.606955" elapsed="0.033304"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:12.656401" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:12.641573" elapsed="0.015015"/>
</kw>
<msg time="2026-04-05T00:36:12.656755" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:12.656800" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "A ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.640669" elapsed="0.016167"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.657133" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.656913" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.656893" elapsed="0.000339"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.657983" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.657372" elapsed="0.000679"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.658336" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.658124" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.658106" elapsed="0.000346"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:12.658485" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:12.661372" elapsed="0.000162"/>
</kw>
<msg time="2026-04-05T00:36:12.661606" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:12.660780" elapsed="0.000938"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.662776" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.663737" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:12.659311" elapsed="0.004542"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:12.658738" elapsed="0.005231"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:12.605306" elapsed="0.058762"/>
</kw>
<msg time="2026-04-05T00:36:12.664161" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:12.664240" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "A ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.604694" elapsed="0.059584"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:12.664481" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:12.664356" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.664337" elapsed="0.000226"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.664949" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.665275" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.665346" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:12.604021" elapsed="0.061450"/>
</kw>
<msg time="2026-04-05T00:36:12.665564" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:12.665607" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "A ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.599472" elapsed="0.066171"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.665995" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.665748" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.665729" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:12.599317" elapsed="0.066779"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:12.599142" elapsed="0.066982"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:12.596715" elapsed="0.069463"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:12.591680" elapsed="0.074554"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.591242" elapsed="0.075037"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:12.588331" elapsed="0.078000"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.666944" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:12.666507" elapsed="0.000464"/>
</kw>
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.700229" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.699860" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:12.701031" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:12.700758" elapsed="0.000352">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:12.701204" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:12.700416" elapsed="0.000812"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.701806" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:12.701387" elapsed="0.000446"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:12.702126" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:12.702277" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:12.701990" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.702761" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.702507" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.703765" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.703506" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.704381" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:12.703966" elapsed="0.000441"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.705070" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:12.704772" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:12.705883" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:12.705611" elapsed="0.000298"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:12.705959" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:12.706110" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:12.705282" elapsed="0.000852"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:12.706284" elapsed="0.000257"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:12.704641" elapsed="0.001943"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.707118" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:12.706823" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:12.707883" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:12.707653" elapsed="0.000255"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:12.707959" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:12.708106" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:12.707324" elapsed="0.000806"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:12.708275" elapsed="0.000239"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:12.706695" elapsed="0.001860"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:12.704472" elapsed="0.004117"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:12.708632" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:12.708787" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:12.703167" elapsed="0.005645"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.702875" elapsed="0.005969"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.709014" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.708870" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.702856" elapsed="0.006234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.709829" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:12.709228" elapsed="0.000629"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:12.709906" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:12.699243" elapsed="0.010786"/>
</kw>
<msg time="2026-04-05T00:36:12.710083" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:12.686796" elapsed="0.023334"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.722515" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.734813" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.747099" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.747296" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.747481" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.747849" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.747708" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:12.747694" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.748064" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.748225" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.748385" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:12.747664" elapsed="0.000788"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.747562" elapsed="0.000917"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.748622" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.748701" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:12.748822" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:12.682568" elapsed="0.066280"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.775370" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.774991" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:12.776159" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:12.775916" elapsed="0.000316">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:12.776325" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:12.775573" elapsed="0.000776"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.776913" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:12.776526" elapsed="0.000414"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:12.777231" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:12.777543" level="INFO">${template} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Another Modified Content&lt;/l&gt;
&lt;/cont&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:12.777095" elapsed="0.000489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.778027" level="INFO">&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Another Modified Content&lt;/l&gt;
&lt;/cont&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.777761" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:12.778456" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.778144" elapsed="0.000372"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.778972" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.778682" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.778541" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.778124" elapsed="0.000930"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.779650" level="INFO">${final_text} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Another Modified Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:12.779193" elapsed="0.000486"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:12.779728" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:12.774367" elapsed="0.005486"/>
</kw>
<msg time="2026-04-05T00:36:12.779906" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:12.761675" elapsed="0.018277"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.792318" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.805247" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.817603" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.817796" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.817981" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.818352" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.818211" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:12.818196" elapsed="0.000251"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.818585" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.818747" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.818905" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:12.818164" elapsed="0.000843"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.818060" elapsed="0.000976"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.819183" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.819258" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:12.819384" level="INFO">${data} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Another Modified Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:12.758982" elapsed="0.060430"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:12.820736" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:12.820463" elapsed="0.000344">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:12.820899" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:12.820087" elapsed="0.000836"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.821235" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.820992" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.821799" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.821501" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.821315" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.820974" elapsed="0.000931"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.824240" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:12.822054" elapsed="0.002213"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:12.824317" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:12.824485" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:12.819761" elapsed="0.004749"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.826004" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.825632" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.826457" level="INFO">&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Another Modified Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.826200" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.826891" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.826649" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.827316" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.827078" elapsed="0.000281"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:12.828171" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:12.827974" elapsed="0.000223"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:12.828532" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:12.828343" elapsed="0.000214"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:12.828701" elapsed="0.000206"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.829300" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.829057" elapsed="0.000286"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:12.829384" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:12.829554" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:12.827573" elapsed="0.002006"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:12.890867" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Content-Length': '89', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Another Modified Content&lt;/l&gt;
&lt;/cont&gt; 
 </msg>
<msg time="2026-04-05T00:36:12.890980" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:12.891198" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:12.833565" elapsed="0.057691"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.829692" elapsed="0.061664"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.891786" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.891415" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.829673" elapsed="0.062310"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.897634" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.894143" elapsed="0.003552"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.893607" elapsed="0.004139"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.893565" elapsed="0.004215"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.901371" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.898178" elapsed="0.003275"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.897857" elapsed="0.003646"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.897833" elapsed="0.003705"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.902341" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:12.901760" elapsed="0.000619"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.902796" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.902498" elapsed="0.000354"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.903330" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.903029" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.902876" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.902473" elapsed="0.000940"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.903943" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:12.903583" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.904261" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.904037" elapsed="0.000280"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.904800" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.904508" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:12.904341" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.904020" elapsed="0.000862"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:12.905025" elapsed="0.000341"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:12.905828" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:12.905541" elapsed="0.000312"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:12.906018" elapsed="0.002302"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:12.892789" elapsed="0.015593"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:12.908571" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-05T00:36:12.908465" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.908445" elapsed="0.000214"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.908802" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.908904" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:36:12.911178" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:12.824839" elapsed="0.086365"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:12.911269" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:12.911445" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:12.671707" elapsed="0.239764"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.911801" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.911569" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.911552" elapsed="0.000342"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:12.911926" elapsed="0.000026"/>
</return>
<arg>${DIRECTORY_WITH_TEMPLATE_FOLDERS}${/}datamod2</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:12.667226" elapsed="0.244821"/>
</kw>
<doc>Send a request to change the sample test data and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:12.587824" elapsed="0.324348"/>
</test>
<test id="s1-s4-s1-t17" name="Check_Device_Data_Is_Modified_Again" line="149">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:12.915297" elapsed="0.000228"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:12.915042" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.916560" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:12.916450" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.916412" elapsed="0.000215"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.921703" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:12.921592" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.921573" elapsed="0.000197"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.922766" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:12.922373" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.923237" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:12.922945" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:12.923306" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:12.923476" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:12.921989" elapsed="0.001512"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.928903" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:12.928798" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.928779" elapsed="0.000190"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.930199" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:12.930094" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.930076" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:12.930790" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:12.930402" elapsed="0.000415"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:12.931292" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:12.930972" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:12.964164" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:12.931891" elapsed="0.032439"/>
</kw>
<msg time="2026-04-05T00:36:12.964655" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:12.964702" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.931499" elapsed="0.033241"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:12.985805" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "M "o "d "i "f "i "e "d "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:12.965299" elapsed="0.020691"/>
</kw>
<msg time="2026-04-05T00:36:12.986204" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:12.986252" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.964908" elapsed="0.021382"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.986632" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.986372" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.986352" elapsed="0.000416"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.987305" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "M "o "d "i "f "i "e "d "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:12.986920" elapsed="0.000457"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.987680" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.987465" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.987445" elapsed="0.000340"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:12.987819" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:12.990890" elapsed="0.000149"/>
</kw>
<msg time="2026-04-05T00:36:12.991111" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:12.990235" elapsed="0.000978"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.992152" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.993105" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:12.988720" elapsed="0.004501"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:12.988081" elapsed="0.005275"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:12.929780" elapsed="0.063703"/>
</kw>
<msg time="2026-04-05T00:36:12.993579" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:12.993622" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.929113" elapsed="0.064548"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:12.994026" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-05T00:36:12.993742" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.993721" elapsed="0.000461"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.994789" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.995155" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:12.995231" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:12.928458" elapsed="0.066883"/>
</kw>
<msg time="2026-04-05T00:36:12.995466" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:12.995511" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.923863" elapsed="0.071685"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:12.995913" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:12.995661" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:12.995642" elapsed="0.000349"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:12.923726" elapsed="0.072288"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:12.923556" elapsed="0.072489"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:12.921218" elapsed="0.074881"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:12.916145" elapsed="0.080010"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:12.915728" elapsed="0.080471"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:12.912928" elapsed="0.083322"/>
</kw>
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:12.997507" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:12.997109" elapsed="0.000425"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.004902" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.004646" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.005344" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.005099" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:13.025486" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:13.025993" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '148'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Another Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:13.026236" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:13.007545" elapsed="0.018748"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.005470" elapsed="0.020917"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.026810" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.026475" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.005451" elapsed="0.021544"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.033547" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Another Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.029215" elapsed="0.004403"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.028741" elapsed="0.004934"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.028702" elapsed="0.005010"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.037699" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.034114" elapsed="0.003653"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.033793" elapsed="0.004027"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.033769" elapsed="0.004087"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.038682" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.038086" elapsed="0.000623"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.039008" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.038779" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.039558" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.039244" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.039090" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.038761" elapsed="0.000959"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.040256" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.039887" elapsed="0.000396"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.040606" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.040353" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.041136" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.040841" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.040687" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.040335" elapsed="0.000884"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:13.041362" elapsed="0.000364"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:13.042180" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.041886" elapsed="0.000321"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.042358" elapsed="0.002322"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:13.027789" elapsed="0.016954"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:13.044917" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:13.044811" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.044793" elapsed="0.000209"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.045144" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.045214" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:13.047564" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Another Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:13.000337" elapsed="0.047258"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:13.047654" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:13.047804" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Another Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:12.997748" elapsed="0.050084"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:13.047874" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:13.048015" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Another Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:12.996853" elapsed="0.051189"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.048303" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.048105" elapsed="0.000253"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.048597" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.048383" elapsed="0.000269"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:13.048810" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.048675" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.048088" elapsed="0.001097"/>
</if>
<arg>&lt;data xmlns="${ODL_NETCONF_NAMESPACE}"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Another Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</arg>
<status status="PASS" start="2026-04-05T00:36:12.996469" elapsed="0.052763"/>
</kw>
<doc>Get the device data and make sure it contains the created content.</doc>
<status status="PASS" start="2026-04-05T00:36:12.912382" elapsed="0.136952"/>
</test>
<test id="s1-s4-s1-t18" name="Modify_Device_Data_Label_Via_Json" line="154">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:13.052498" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:13.052230" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.053725" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.053618" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.053599" elapsed="0.000233"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.058901" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.058795" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.058776" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.059975" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:13.059590" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.060468" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:13.060157" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:13.060540" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:13.060694" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:13.059189" elapsed="0.001530"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.066106" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.065999" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.065980" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.067369" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.067265" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.067247" elapsed="0.000212"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:13.067953" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.067599" elapsed="0.000380"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:13.068370" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:13.068130" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:13.103029" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:13.068952" elapsed="0.034245"/>
</kw>
<msg time="2026-04-05T00:36:13.103376" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:13.103442" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.068569" elapsed="0.034912"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:13.125625" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "V "i "a "_ "J "s "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:13.104044" elapsed="0.021757"/>
</kw>
<msg time="2026-04-05T00:36:13.125967" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:13.126011" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.103650" elapsed="0.022398"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.126377" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.126136" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.126115" elapsed="0.000392"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.127022" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "V "i "a "_ "J "s "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.126650" elapsed="0.000441"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.127364" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.127157" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.127138" elapsed="0.000340"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:13.127511" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:13.130453" elapsed="0.000148"/>
</kw>
<msg time="2026-04-05T00:36:13.130733" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:13.129806" elapsed="0.001044"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.131771" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.132714" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:13.128338" elapsed="0.004489"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:13.127771" elapsed="0.005171"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:13.066965" elapsed="0.066076"/>
</kw>
<msg time="2026-04-05T00:36:13.133132" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:13.133176" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.066332" elapsed="0.066881"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:13.133582" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:13.133288" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.133270" elapsed="0.000400"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.134058" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.134436" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.134511" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:13.065661" elapsed="0.068960"/>
</kw>
<msg time="2026-04-05T00:36:13.134713" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:13.134756" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.061076" elapsed="0.073717"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.135113" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.134868" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.134850" elapsed="0.000339"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:13.060940" elapsed="0.074272"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:13.060771" elapsed="0.074469"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:13.058418" elapsed="0.076876"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:13.053315" elapsed="0.082033"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.052904" elapsed="0.082488"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:13.050108" elapsed="0.085366"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.136060" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.135638" elapsed="0.000449"/>
</kw>
<kw name="Put_As_Json_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.173236" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.172865" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:13.174039" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:13.173763" elapsed="0.000351">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:13.174268" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:13.173435" elapsed="0.000858"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.174889" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:13.174499" elapsed="0.000417"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:13.175208" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:13.175375" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:13.175073" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.175815" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.175570" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.176815" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.176555" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.177275" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.177015" elapsed="0.000286"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.177963" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:13.177666" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:13.178976" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.178730" elapsed="0.000273"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:13.179054" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:13.179208" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:13.178383" elapsed="0.000851"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.179383" elapsed="0.000258"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:13.177536" elapsed="0.002146"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.180224" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:13.179927" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:13.180996" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.180763" elapsed="0.000259"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:13.181072" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:13.181220" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:13.180449" elapsed="0.000796"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.181391" elapsed="0.000238"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:13.179798" elapsed="0.001872"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:13.177349" elapsed="0.004354"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:13.181746" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:13.181899" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:13.176220" elapsed="0.005705"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.175930" elapsed="0.006026"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.182125" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.181981" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.175911" elapsed="0.006288"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.182948" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.182363" elapsed="0.000612"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:13.183024" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:13.172245" elapsed="0.010900"/>
</kw>
<msg time="2026-04-05T00:36:13.183243" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:13.159811" elapsed="0.023481"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.196098" elapsed="0.000037"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.209694" elapsed="0.000035"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.222123" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.222320" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.222529" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.222906" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.222764" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:13.222748" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.223123" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.223284" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.223458" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:13.222715" elapsed="0.000796"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.222610" elapsed="0.000927"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.223680" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.223756" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:13.223882" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:13.155571" elapsed="0.068338"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.250568" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/data.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.250151" elapsed="0.000445"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:13.251335" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson.titanium/data.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:13.251080" elapsed="0.000326">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson.titanium/data.json' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:13.251564" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:13.250754" elapsed="0.000835"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.252171" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/data.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:13.251778" elapsed="0.000420"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:13.252506" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson/data.json"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson/data.json&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:13.252650" level="INFO">${template} = {
  "test:cont": {
    "l":"Content Modified via JSON"
  }
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:13.252354" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.253076" level="INFO">{
  "test:cont": {
    "l":"Content Modified via JSON"
  }
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.252835" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:13.253490" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.253186" elapsed="0.000364"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.254012" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.253721" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.253575" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.253169" elapsed="0.000924"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.254728" level="INFO">${final_text} = {
  "test:cont": {
    "l":"Content Modified via JSON"
  }
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.254233" elapsed="0.000528"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:13.254817" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:13.249507" elapsed="0.005432"/>
</kw>
<msg time="2026-04-05T00:36:13.254992" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:13.236777" elapsed="0.018261"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.267393" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.279786" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.292157" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.292354" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.292540" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.292965" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.292824" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:13.292809" elapsed="0.000237"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.293185" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.293346" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.293523" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:13.292779" elapsed="0.000799"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.292662" elapsed="0.000941"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.293875" elapsed="0.000023"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.293955" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:36:13.294073" level="INFO">${data} = {
  "test:cont": {
    "l":"Content Modified via JSON"
  }
}</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:13.233957" elapsed="0.060142"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:13.295508" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:13.295237" elapsed="0.000336">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:13.295680" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:13.294888" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.296172" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.295794" elapsed="0.000434"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.296908" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.296415" elapsed="0.000520"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.296252" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.295772" elapsed="0.001221"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.299337" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:13.297142" elapsed="0.002221"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:13.299416" elapsed="0.000045"/>
</return>
<msg time="2026-04-05T00:36:13.299588" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:13.294556" elapsed="0.005057"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.301048" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.300801" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.301492" level="INFO">{
  "test:cont": {
    "l":"Content Modified via JSON"
  }
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.301241" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.301921" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.301680" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.302342" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.302108" elapsed="0.000276"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:13.303215" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:13.303020" elapsed="0.000220"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:13.303574" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:13.303389" elapsed="0.000210"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.303792" elapsed="0.000195"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.304384" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.304138" elapsed="0.000305"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:13.304487" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:13.304641" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:13.302621" elapsed="0.002044"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:13.360650" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Content-Length': '60', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "test:cont": {
    "l":"Content Modified via JSON"
  }
} 
 </msg>
<msg time="2026-04-05T00:36:13.360754" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:13.360948" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:13.306884" elapsed="0.054120"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.304736" elapsed="0.056367"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.361516" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.361161" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.304718" elapsed="0.056998"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.367243" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.363803" elapsed="0.003500"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.363386" elapsed="0.003967"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.363346" elapsed="0.004042"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.370999" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.367786" elapsed="0.003276"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.367486" elapsed="0.003623"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.367461" elapsed="0.003683"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.371844" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.371357" elapsed="0.000514"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.372166" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.371940" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.372710" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.372399" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.372247" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.371922" elapsed="0.000870"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.373300" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.372942" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.373634" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.373392" elapsed="0.000304"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.374164" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.373872" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.373720" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.373375" elapsed="0.000869"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:13.374386" elapsed="0.000373"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:13.375194" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.374917" elapsed="0.000302"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.375368" elapsed="0.002308"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:13.362529" elapsed="0.015244"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.377944" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.377839" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.377821" elapsed="0.000191"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:13.380575" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:13.378152" elapsed="0.002450"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:13.380650" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:13.380803" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:13.299941" elapsed="0.080886"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:13.380889" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:13.381036" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:13.144290" elapsed="0.236770"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.381388" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.381157" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.381140" elapsed="0.000356"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:13.381529" elapsed="0.000025"/>
</return>
<arg>${directory_with_template_folders}${/}datamodjson</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for JSON data, return Put_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-05T00:36:13.139982" elapsed="0.241669"/>
</kw>
<doc>Send a JSON request to change the sample test data label and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:13.049534" elapsed="0.332241"/>
</test>
<test id="s1-s4-s1-t19" name="Check_Device_Data_Label_Is_Modified_Via_Json" line="161">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:13.384961" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:13.384704" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.386196" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.386088" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.386070" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.391320" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.391213" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.391195" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.392372" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:13.391995" elapsed="0.000403"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.392873" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:13.392570" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:13.392943" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:13.393096" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:13.391624" elapsed="0.001497"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.398530" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.398409" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.398391" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.399945" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.399839" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.399821" elapsed="0.000232"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:13.400596" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.400196" elapsed="0.000427"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:13.401029" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:13.400780" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:13.433992" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:13.401610" elapsed="0.032560"/>
</kw>
<msg time="2026-04-05T00:36:13.434337" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:13.434383" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.401210" elapsed="0.033228"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:13.478074" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "I "s "_ "M "o "d "i "f "i "e "d "_ "V "i "a "_ "J "s "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:13.435020" elapsed="0.043230"/>
</kw>
<msg time="2026-04-05T00:36:13.478414" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:13.478481" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.434607" elapsed="0.043912"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.478846" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.478597" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.478577" elapsed="0.000374"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.479475" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "I "s "_ "M "o "d "i "f "i "e "d "_ "V "i "a "_ "J "s "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.479089" elapsed="0.000460"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.479823" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.479616" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.479598" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:13.479954" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:13.482875" elapsed="0.000269"/>
</kw>
<msg time="2026-04-05T00:36:13.483216" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:13.482232" elapsed="0.001082"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.484247" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.485195" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:13.480793" elapsed="0.004516"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:13.480205" elapsed="0.005244"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:13.399538" elapsed="0.086010"/>
</kw>
<msg time="2026-04-05T00:36:13.485638" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:13.485680" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.398761" elapsed="0.086956"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:13.485897" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:13.485792" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.485774" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.486366" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.486775" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.486849" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:13.398077" elapsed="0.088880"/>
</kw>
<msg time="2026-04-05T00:36:13.487048" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:13.487092" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.393496" elapsed="0.093633"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.487462" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.487204" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.487186" elapsed="0.000354"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:13.393338" elapsed="0.094225"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:13.393171" elapsed="0.094420"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:13.390854" elapsed="0.096790"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:13.385806" elapsed="0.101893"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.385371" elapsed="0.102372"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:13.382591" elapsed="0.105203"/>
</kw>
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.489027" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.488647" elapsed="0.000406"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.496310" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.496062" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.496762" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.496518" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:13.521396" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:13.521929" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '149'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:13.522144" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:13.498921" elapsed="0.023280"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.496873" elapsed="0.025420"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.522711" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.522351" elapsed="0.000578"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.496855" elapsed="0.026125"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.531673" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.525208" elapsed="0.006535"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.524732" elapsed="0.007060"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.524692" elapsed="0.007134"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.535446" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.532203" elapsed="0.003310"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.531902" elapsed="0.003659"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.531880" elapsed="0.003759"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.536194" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.535822" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.536534" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.536289" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.537071" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.536773" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.536617" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.536271" elapsed="0.000883"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.537685" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.537306" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.538006" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.537781" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.538546" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.538239" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.538087" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.537763" elapsed="0.000866"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:13.538772" elapsed="0.000395"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:13.539624" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.539326" elapsed="0.000324"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.539798" elapsed="0.002279"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:13.523770" elapsed="0.018368"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:13.542310" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:13.542206" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.542188" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.542552" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.542622" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:13.544937" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:13.491776" elapsed="0.053190"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:13.545024" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:13.545171" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:13.489259" elapsed="0.055939"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:13.545240" elapsed="0.000024"/>
</return>
<msg time="2026-04-05T00:36:13.545377" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:13.488372" elapsed="0.057032"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.545679" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.545483" elapsed="0.000252"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.545949" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.545758" elapsed="0.000245"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:13.546159" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.546026" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.545466" elapsed="0.001116"/>
</if>
<arg>&lt;data xmlns="${ODL_NETCONF_NAMESPACE}"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</arg>
<status status="PASS" start="2026-04-05T00:36:13.487996" elapsed="0.058635"/>
</kw>
<doc>Get the device data label as XML and make sure it matches the content posted as JSON in the previous case.</doc>
<status status="PASS" start="2026-04-05T00:36:13.381979" elapsed="0.164756"/>
</test>
<test id="s1-s4-s1-t20" name="Create_Car_List" line="166">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:13.549813" elapsed="0.000202"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:13.549558" elapsed="0.000510"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.551118" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.551009" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.550991" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.556402" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.556296" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.556278" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.557459" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:13.557066" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.557935" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:13.557642" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:13.558005" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:13.558157" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:13.556701" elapsed="0.001481"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.563560" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.563452" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.563432" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.564820" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.564716" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.564698" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:13.565380" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.565025" elapsed="0.000382"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:13.565824" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:13.565580" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:13.598583" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:13.566388" elapsed="0.032394"/>
</kw>
<msg time="2026-04-05T00:36:13.598984" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:13.599030" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.566005" elapsed="0.033062"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:13.614478" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "r "e "a "t "e "_ "C "a "r "_ "L "i "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:13.599638" elapsed="0.015007"/>
</kw>
<msg time="2026-04-05T00:36:13.614810" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:13.614855" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "r "e "a "t "e "_ "C "a "r "_ "L "i "s "t "[K"
[?1l&gt;[?2004l...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.599233" elapsed="0.015694"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.615229" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.615012" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.614993" elapsed="0.000336"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.615871" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "r "e "a "t "e "_ "C "a "r "_ "L "i "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.615501" elapsed="0.000468"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.616250" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.616038" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.616020" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:13.616383" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:13.619293" elapsed="0.000162"/>
</kw>
<msg time="2026-04-05T00:36:13.619525" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:13.618663" elapsed="0.000960"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.620542" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.621477" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:13.617223" elapsed="0.004373"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:13.616654" elapsed="0.005063"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:13.564395" elapsed="0.057421"/>
</kw>
<msg time="2026-04-05T00:36:13.621907" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:13.621951" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "r "e "a "t "e "_ "C "a "r "_ "L "i "s "t "[K"
[?1l&gt;[?2004l...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.563774" elapsed="0.058216"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:13.622328" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:13.622066" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.622048" elapsed="0.000366"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.622818" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.623176" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.623249" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:13.563106" elapsed="0.060250"/>
</kw>
<msg time="2026-04-05T00:36:13.623464" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:13.623509" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "r "e "a "t "e "_ "C "a "r "_ "L "i "s "t "[K"
[?1l&gt;[?2004l...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.558551" elapsed="0.064996"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.623867" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.623622" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.623604" elapsed="0.000339"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:13.558400" elapsed="0.065567"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:13.558234" elapsed="0.065761"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:13.555932" elapsed="0.068116"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:13.550691" elapsed="0.073411"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.550210" elapsed="0.073936"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:13.547466" elapsed="0.076731"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.624811" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.624354" elapsed="0.000483"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.658569" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.658059" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:13.659339" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:13.659103" elapsed="0.000307">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:13.659522" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:13.658756" elapsed="0.000790"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.660091" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:13.659708" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:13.660406" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:13.660569" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:13.660273" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.660988" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.660747" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.661976" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.661721" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.662447" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.662173" elapsed="0.000301"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.663140" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:13.662814" elapsed="0.000352"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:13.664097" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.663857" elapsed="0.000266"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:13.664174" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:13.664325" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:13.663536" elapsed="0.000813"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.664519" elapsed="0.000230"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:13.662685" elapsed="0.002106"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.665330" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:13.665030" elapsed="0.000325"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:13.666100" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.665868" elapsed="0.000258"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:13.666177" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:13.666325" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:13.665558" elapsed="0.000791"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.666511" elapsed="0.000223"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:13.664903" elapsed="0.001872"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:13.662521" elapsed="0.004289"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:13.666851" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:13.667035" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:13.661387" elapsed="0.005675"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.661098" elapsed="0.005996"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.667263" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.667119" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.661080" elapsed="0.006291"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.668087" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.667530" elapsed="0.000584"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:13.668163" elapsed="0.000027"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:13.657394" elapsed="0.010891"/>
</kw>
<msg time="2026-04-05T00:36:13.668337" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:13.644798" elapsed="0.023586"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.680618" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.692845" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.705072" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.705262" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.705443" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.705802" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.705664" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:13.705650" elapsed="0.000228"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.706012" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.706314" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.706501" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:13.705620" elapsed="0.000934"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.705520" elapsed="0.001060"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.706719" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.706793" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:13.706909" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:13.640592" elapsed="0.066344"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.732235" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.731857" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:13.732974" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:13.732765" elapsed="0.000273">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:13.733131" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:13.732433" elapsed="0.000722"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.733707" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:13.733312" elapsed="0.000422"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:13.734020" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:13.734147" level="INFO">${template} = &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;KEEP&lt;/id&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:13.733887" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.734583" level="INFO">&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;KEEP&lt;/id&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.734323" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:13.734980" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.734696" elapsed="0.000371"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.735542" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.735236" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.735095" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.734678" elapsed="0.000945"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.736187" level="INFO">${final_text} = &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;KEEP&lt;/id&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.735761" elapsed="0.000455"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:13.736263" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:13.731223" elapsed="0.005162"/>
</kw>
<msg time="2026-04-05T00:36:13.736456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:13.718002" elapsed="0.018502"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.748693" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.760893" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.773220" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.773408" elapsed="0.000035"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.773592" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.773951" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.773813" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:13.773797" elapsed="0.000232"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.774164" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.774325" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.774499" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:13.773769" elapsed="0.000784"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.773667" elapsed="0.000912"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.774719" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.774793" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:13.774910" level="INFO">${data} = &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;KEEP&lt;/id&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:13.717153" elapsed="0.057785"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:13.776197" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:13.775959" elapsed="0.000301">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:13.776351" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:13.775626" elapsed="0.000749"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.776705" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.776461" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.777230" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.776941" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.776787" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.776442" elapsed="0.000870"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.779849" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:13.777473" elapsed="0.002403"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:13.779928" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:13.780079" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:13.775292" elapsed="0.004811"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.781626" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.781363" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.782100" level="INFO">&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;KEEP&lt;/id&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.781860" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.782555" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.782295" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.782989" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.782749" elapsed="0.000284"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:13.783862" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:13.783671" elapsed="0.000217"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:13.784207" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:13.784037" elapsed="0.000196"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.784377" elapsed="0.000216"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.784987" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.784743" elapsed="0.000288"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:13.785073" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:13.785225" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:13.783255" elapsed="0.001994"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:13.830791" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Content-Length': '145', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;KEEP&lt;/id&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt; 
 </msg>
<msg time="2026-04-05T00:36:13.830907" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.184:8181/rests/data/car:cars', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:13.831100" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:13.787383" elapsed="0.043798"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.785318" elapsed="0.045962"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.831697" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.831337" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.785301" elapsed="0.046589"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.839712" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.834164" elapsed="0.005591"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.833691" elapsed="0.006099"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.833651" elapsed="0.006163"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.842359" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.840083" elapsed="0.002322"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.839869" elapsed="0.002583"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.839853" elapsed="0.002625"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.843005" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.842633" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.843357" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.843100" elapsed="0.000314"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.843910" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.843612" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.843455" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.843082" elapsed="0.000910"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.844520" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.844145" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.844875" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.844614" elapsed="0.000318"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.845407" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.845111" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.844957" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.844597" elapsed="0.000908"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:13.845651" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:13.846450" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.846158" elapsed="0.000319"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.846628" elapsed="0.002314"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:13.832699" elapsed="0.016305"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:13.849180" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:13.849076" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.849057" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.849407" elapsed="0.000037"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.849490" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:13.851769" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:13.780440" elapsed="0.071356"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:13.851865" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:13.852014" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:13.629606" elapsed="0.222432"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.852368" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.852139" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.852122" elapsed="0.000356"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:13.852511" elapsed="0.000026"/>
</return>
<arg>${directory_with_template_folders}${/}cars</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:13.625087" elapsed="0.227544"/>
</kw>
<doc>Send a request to create a list of cars in the sample test data label and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:13.546930" elapsed="0.305810"/>
</test>
<test id="s1-s4-s1-t21" name="Check_Car_List_Created" line="171">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:13.855945" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:13.855689" elapsed="0.000514"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.857171" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.857064" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.857046" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.862309" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.862203" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.862185" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.863404" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:13.862982" elapsed="0.000472"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.863950" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:13.863653" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:13.864021" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:13.864172" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:13.862611" elapsed="0.001586"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.869766" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.869656" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.869637" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.871042" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.870935" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.870917" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:13.871665" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.871283" elapsed="0.000412"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:13.872094" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:13.871850" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:13.907628" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:13.872677" elapsed="0.035147"/>
</kw>
<msg time="2026-04-05T00:36:13.907993" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:13.908038" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.872275" elapsed="0.035799"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:13.925891" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "C "a "r "_ "L "i "s "t "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:13.908649" elapsed="0.017409"/>
</kw>
<msg time="2026-04-05T00:36:13.926222" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:13.926267" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "C "a "r "_ "L "i "s "t "_ "C "r "e "a "t ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.908240" elapsed="0.018063"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.926621" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.926380" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.926361" elapsed="0.000360"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.927225" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "C "a "r "_ "L "i "s "t "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.926859" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.927617" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.927386" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.927367" elapsed="0.000350"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:13.927751" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:13.930670" elapsed="0.000146"/>
</kw>
<msg time="2026-04-05T00:36:13.930886" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:13.930012" elapsed="0.000969"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.931919" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.932854" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:13.928586" elapsed="0.004380"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:13.928002" elapsed="0.005117"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:13.870634" elapsed="0.062585"/>
</kw>
<msg time="2026-04-05T00:36:13.933309" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:13.933352" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "C "a "r "_ "L "i "s "t "_ "C "r "e "a "t ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.869980" elapsed="0.063410"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:13.933752" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:13.933485" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.933466" elapsed="0.000373"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.934231" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.934580" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.934654" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:13.869293" elapsed="0.065469"/>
</kw>
<msg time="2026-04-05T00:36:13.934855" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:13.934898" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "C "a "r "_ "L "i "s "t "_ "C "r "e "a "t ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.864568" elapsed="0.070367"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.935254" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.935010" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.934993" elapsed="0.000363"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:13.864412" elapsed="0.070967"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:13.864247" elapsed="0.071160"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:13.861842" elapsed="0.073651"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:13.856781" elapsed="0.078766"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.856347" elapsed="0.079245"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:13.853480" elapsed="0.082162"/>
</kw>
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.936455" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.936058" elapsed="0.000425"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.943795" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.943544" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.944230" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.943989" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:13.962586" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:13.963227" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '282'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:13.963577" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:13.946364" elapsed="0.017272"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.944340" elapsed="0.019404"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.964152" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.963812" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.944322" elapsed="0.020018"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.970616" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.966603" elapsed="0.004086"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.966097" elapsed="0.004641"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.966055" elapsed="0.004717"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.974624" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:13.971152" elapsed="0.003543"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.970848" elapsed="0.003900"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.970826" elapsed="0.003958"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.975699" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.975002" elapsed="0.000725"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.976849" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.975799" elapsed="0.001111"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.977410" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.977096" elapsed="0.000356"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.976936" elapsed="0.000554"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.975781" elapsed="0.001731"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.978033" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.977667" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.978354" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:13.978129" elapsed="0.000281"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:13.978907" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:13.978607" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:13.978451" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.978111" elapsed="0.000878"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:13.979134" elapsed="0.000370"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:13.979990" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:13.979673" elapsed="0.000343"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:13.980166" elapsed="0.002318"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:13.965136" elapsed="0.017419"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:13.982732" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:13.982625" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.982606" elapsed="0.000211"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:13.982959" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.983029" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:13.985354" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:13.939010" elapsed="0.046374"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:13.985496" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:13.985652" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="...</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:13.936690" elapsed="0.048990"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:13.985723" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:13.985864" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="...</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:13.935793" elapsed="0.050099"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;id&gt;KEEP&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:13.986040" elapsed="0.000299"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;id&gt;SMALL&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:13.986509" elapsed="0.000286"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;model&gt;Isetta&lt;/model&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:13.986948" elapsed="0.000280"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:13.987414" elapsed="0.000326"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;year&gt;1953&lt;/year&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:13.987907" elapsed="0.000277"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;category&gt;microcar&lt;/category&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:13.988335" elapsed="0.000296"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;id&gt;TOYOTA&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:13.988782" elapsed="0.000275"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;model&gt;Camry&lt;/model&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:13.989207" elapsed="0.000293"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:13.989651" elapsed="0.000275"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;year&gt;1982&lt;/year&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:13.990075" elapsed="0.000273"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;category&gt;sedan&lt;/category&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:13.990513" elapsed="0.000276"/>
</kw>
<doc>Get the device data label as XML and make sure it matches the content posted as JSON in the previous case.</doc>
<status status="PASS" start="2026-04-05T00:36:13.852938" elapsed="0.137962"/>
</test>
<test id="s1-s4-s1-t22" name="Add_Device_Data_Item_1_Via_XML_Post" line="186">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:13.994357" elapsed="0.000225"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:13.994104" elapsed="0.000531"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:13.995622" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:13.995514" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:13.995495" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.000586" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.000481" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.000462" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.001640" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:14.001234" elapsed="0.000432"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.002112" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:14.001821" elapsed="0.000316"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:14.002180" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:14.002331" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:14.000869" elapsed="0.001486"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.007767" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.007660" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.007641" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.009039" elapsed="0.000061"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.008935" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.008917" elapsed="0.000242"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:14.009682" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.009301" elapsed="0.000408"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:14.010105" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:14.009864" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:14.048588" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:14.010694" elapsed="0.038052"/>
</kw>
<msg time="2026-04-05T00:36:14.048912" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:14.048958" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.010287" elapsed="0.038708"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:14.073290" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m "_ "1 "_ "V "i "a "_ "X "M "L "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:14.049561" elapsed="0.023922"/>
</kw>
<msg time="2026-04-05T00:36:14.073681" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:14.073726" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.049160" elapsed="0.024602"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.074055" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.073839" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.073819" elapsed="0.000334"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.074684" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m "_ "1 "_ "V "i "a "_ "X "M "L "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.074292" elapsed="0.000464"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.075031" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.074823" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.074805" elapsed="0.000326"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:14.075164" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:14.078217" elapsed="0.000144"/>
</kw>
<msg time="2026-04-05T00:36:14.078456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:14.077562" elapsed="0.000993"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.079512" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.080586" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:14.076094" elapsed="0.004609"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:14.075470" elapsed="0.005353"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:14.008635" elapsed="0.072285"/>
</kw>
<msg time="2026-04-05T00:36:14.081011" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:14.081053" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.007981" elapsed="0.073110"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:14.081274" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:36:14.081167" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.081148" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.081753" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.082119" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.082191" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:14.007276" elapsed="0.075022"/>
</kw>
<msg time="2026-04-05T00:36:14.082389" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:14.082464" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.002727" elapsed="0.079776"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.082823" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.082579" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.082561" elapsed="0.000339"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:14.002590" elapsed="0.080333"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:14.002406" elapsed="0.080545"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:14.000111" elapsed="0.082892"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:13.995194" elapsed="0.087863"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:13.994779" elapsed="0.088322"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:13.991874" elapsed="0.091278"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.083786" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.083309" elapsed="0.000504"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.120092" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.119708" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:14.120939" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:14.120633" elapsed="0.000386">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:14.121113" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:14.120284" elapsed="0.000853"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.121688" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:14.121292" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:14.122008" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:14.122183" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:14.121870" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.122616" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.122357" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.123635" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.123324" elapsed="0.000360"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.124102" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.123841" elapsed="0.000286"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.124820" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:14.124515" elapsed="0.000389"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:14.125666" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.125404" elapsed="0.000288"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:14.125742" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:14.125892" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:14.125094" elapsed="0.000822"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.126062" elapsed="0.000229"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:14.124352" elapsed="0.001980"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.126888" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:14.126593" elapsed="0.000319"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:14.127681" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.127397" elapsed="0.000310"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:14.127757" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:14.127903" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:14.127092" elapsed="0.000835"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.128072" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:14.126464" elapsed="0.001869"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:14.124175" elapsed="0.004193"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:14.128409" elapsed="0.000043"/>
</return>
<msg time="2026-04-05T00:36:14.128580" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:14.123013" elapsed="0.005591"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.122728" elapsed="0.005907"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.128801" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.128660" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.122710" elapsed="0.006166"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.129581" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.129013" elapsed="0.000596"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:14.129657" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:14.118990" elapsed="0.010814"/>
</kw>
<msg time="2026-04-05T00:36:14.129864" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:14.106149" elapsed="0.023761"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.142493" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.154751" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.166978" elapsed="0.000059"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.167201" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.167369" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.167783" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.167642" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:14.167628" elapsed="0.000236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.167999" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.168160" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.168317" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:14.167593" elapsed="0.000776"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.167458" elapsed="0.000936"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.168553" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.168628" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:14.168746" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:14.101854" elapsed="0.066917"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.193401" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.193033" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:14.194126" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:14.193925" elapsed="0.000263">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:14.194279" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:14.193599" elapsed="0.000704"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.194854" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:14.194475" elapsed="0.000405"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:14.195168" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:14.195294" level="INFO">${template} = &lt;car-entry xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;id&gt;SMALL&lt;/id&gt;
  &lt;model&gt;Isetta&lt;/model&gt;
  &lt;manufacturer&gt;BMW&lt;/manufacturer&gt;
  &lt;year&gt;1953&lt;/year&gt;
  &lt;categ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:14.195036" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.195745" level="INFO">&lt;car-entry xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;id&gt;SMALL&lt;/id&gt;
  &lt;model&gt;Isetta&lt;/model&gt;
  &lt;manufacturer&gt;BMW&lt;/manufacturer&gt;
  &lt;year&gt;1953&lt;/year&gt;
  &lt;category&gt;microcar&lt;/category&gt;
&lt;/car-entry&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.195489" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:14.196180" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.195894" elapsed="0.000344"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.196710" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.196404" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.196263" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.195875" elapsed="0.000916"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.197360" level="INFO">${final_text} = &lt;car-entry xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;id&gt;SMALL&lt;/id&gt;
  &lt;model&gt;Isetta&lt;/model&gt;
  &lt;manufacturer&gt;BMW&lt;/manufacturer&gt;
  &lt;year&gt;1953&lt;/year&gt;
  &lt;categ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.196933" elapsed="0.000456"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:14.197454" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:14.192408" elapsed="0.005169"/>
</kw>
<msg time="2026-04-05T00:36:14.197631" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:14.179818" elapsed="0.017859"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.210066" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.222391" elapsed="0.000046"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.234734" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.234922" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.235090" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.235455" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.235303" elapsed="0.000209"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:14.235289" elapsed="0.000246"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.235833" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.235998" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.236159" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:14.235260" elapsed="0.000951"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.235163" elapsed="0.001073"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.236376" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.236505" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:36:14.236626" level="INFO">${data} = &lt;car-entry xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;id&gt;SMALL&lt;/id&gt;
  &lt;model&gt;Isetta&lt;/model&gt;
  &lt;manufacturer&gt;BMW&lt;/manufacturer&gt;
  &lt;year&gt;1953&lt;/year&gt;
  &lt;categ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:14.178824" elapsed="0.057832"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:14.237898" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:14.237653" elapsed="0.000308">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:14.238052" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:14.237298" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.238384" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.238146" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.238930" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.238641" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.238482" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.238128" elapsed="0.000883"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.241318" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:14.239156" elapsed="0.002188"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:14.241395" elapsed="0.000045"/>
</return>
<msg time="2026-04-05T00:36:14.241567" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:14.236982" elapsed="0.004609"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.243128" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.242883" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.243590" level="INFO">&lt;car-entry xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;id&gt;SMALL&lt;/id&gt;
  &lt;model&gt;Isetta&lt;/model&gt;
  &lt;manufacturer&gt;BMW&lt;/manufacturer&gt;
  &lt;year&gt;1953&lt;/year&gt;
  &lt;category&gt;microcar&lt;/category&gt;
&lt;/car-entry&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.243321" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.244057" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.243814" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.244496" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.244243" elapsed="0.000296"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:14.245326" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:14.245136" elapsed="0.000215"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:14.245682" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:14.245512" elapsed="0.000194"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.245850" elapsed="0.000193"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.246449" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.246193" elapsed="0.000300"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:14.246535" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:14.246686" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:14.244734" elapsed="0.001977"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:14.302820" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Content-Length': '236', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;car-entry xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;id&gt;SMALL&lt;/id&gt;
  &lt;model&gt;Isetta&lt;/model&gt;
  &lt;manufacturer&gt;BMW&lt;/manufacturer&gt;
  &lt;year&gt;1953&lt;/year&gt;
  &lt;category&gt;microcar&lt;/category&gt;
&lt;/car-entry&gt; 
 </msg>
<msg time="2026-04-05T00:36:14.303017" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.184:8181/rests/data/car:cars/car-entry=SMALL', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:14.303241" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:14.249031" elapsed="0.054266"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.246780" elapsed="0.056619"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.304167" elapsed="0.000105"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.303493" elapsed="0.000896"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.246762" elapsed="0.057705"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.312180" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.306869" elapsed="0.005427"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.306358" elapsed="0.006020"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.306317" elapsed="0.006147"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.315166" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.312899" elapsed="0.002311"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.312590" elapsed="0.002655"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.312553" elapsed="0.002716"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.315835" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.315444" elapsed="0.000417"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.316158" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.315930" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.316705" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.316391" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.316239" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.315913" elapsed="0.000875"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.317294" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.316939" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.317631" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.317390" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.318153" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.317863" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.317712" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.317372" elapsed="0.000863"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:14.318377" elapsed="0.000359"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:14.319167" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.318895" elapsed="0.000297"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.319342" elapsed="0.002319"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:14.305300" elapsed="0.016423"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:14.321900" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:14.321794" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.321776" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.322142" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.322257" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:36:14.324542" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:14.241942" elapsed="0.082626"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:14.324638" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:14.324786" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:14.088540" elapsed="0.236270"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.325138" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.324910" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.324894" elapsed="0.000335"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:14.325261" elapsed="0.000026"/>
</return>
<arg>${directory_with_template_folders}${/}item1</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:14.084066" elapsed="0.241314"/>
</kw>
<doc>Send a request to create a data item in the test list and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:13.991249" elapsed="0.334254"/>
</test>
<test id="s1-s4-s1-t23" name="Check_Item1_Is_Created" line="191">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:14.328911" elapsed="0.000204"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:14.328657" elapsed="0.000511"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.330131" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.330024" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.330006" elapsed="0.000192"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.335344" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.335238" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.335220" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.336440" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:14.336046" elapsed="0.000422"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.336916" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:14.336623" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:14.336986" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:14.337137" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:14.335646" elapsed="0.001515"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.342655" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.342549" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.342530" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.343958" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.343849" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.343829" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:14.344540" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.344165" elapsed="0.000402"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:14.344958" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:14.344719" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:14.380604" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:14.345577" elapsed="0.035225"/>
</kw>
<msg time="2026-04-05T00:36:14.381011" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:14.381057" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.345178" elapsed="0.035916"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:14.399878" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "I "t "e "m "1 "_ "I "s "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:14.381683" elapsed="0.018373"/>
</kw>
<msg time="2026-04-05T00:36:14.400230" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:14.400278" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "I "t "e "m "1 "_ "I "s "_ "C "r "e "a "t ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.381260" elapsed="0.019055"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.400638" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.400394" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.400374" elapsed="0.000370"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.401258" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "I "t "e "m "1 "_ "I "s "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.400884" elapsed="0.000440"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.401626" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.401391" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.401373" elapsed="0.000353"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:14.401759" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:14.404754" elapsed="0.000146"/>
</kw>
<msg time="2026-04-05T00:36:14.404971" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:14.404075" elapsed="0.000994"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.405981" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.406933" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:14.402603" elapsed="0.004443"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:14.402009" elapsed="0.005150"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:14.343501" elapsed="0.063758"/>
</kw>
<msg time="2026-04-05T00:36:14.407350" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:14.407394" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "I "t "e "m "1 "_ "I "s "_ "C "r "e "a "t ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.342866" elapsed="0.064581"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:14.407800" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-05T00:36:14.407525" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.407507" elapsed="0.000397"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.408294" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.408642" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.408714" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:14.342198" elapsed="0.066625"/>
</kw>
<msg time="2026-04-05T00:36:14.408914" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:14.408957" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "I "t "e "m "1 "_ "I "s "_ "C "r "e "a "t ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.337527" elapsed="0.071501"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.409351" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.409106" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.409088" elapsed="0.000353"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:14.337375" elapsed="0.072091"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:14.337212" elapsed="0.072282"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:14.334881" elapsed="0.074666"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:14.329745" elapsed="0.079855"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.329310" elapsed="0.080334"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:14.326510" elapsed="0.083184"/>
</kw>
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.410534" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.410107" elapsed="0.000455"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.417848" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.417598" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.418286" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.418042" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:14.439607" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:14.440008" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '418'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL&lt;/id&gt;&lt;model&gt;Isetta&lt;/model&gt;&lt;year&gt;1953&lt;/year&gt;&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;&lt;category&gt;microcar&lt;/category&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:14.440111" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:14.420465" elapsed="0.019671"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.418396" elapsed="0.021782"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.440354" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.440204" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.418378" elapsed="0.022077"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.444003" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL&lt;/id&gt;&lt;model&gt;Isetta&lt;/model&gt;&lt;year&gt;1953&lt;/year&gt;&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;&lt;category&gt;microcar&lt;/category&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.441448" elapsed="0.002610"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.441218" elapsed="0.002875"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.441200" elapsed="0.002918"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.446758" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.444391" elapsed="0.002412"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.444173" elapsed="0.002665"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.444156" elapsed="0.002706"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.447386" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.447018" elapsed="0.000441"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.447764" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.447533" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.448338" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.448035" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.447845" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.447515" elapsed="0.000920"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.448955" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.448596" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.449275" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.449050" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.449822" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.449528" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.449356" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.449033" elapsed="0.000872"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:14.450051" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:14.450849" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.450571" elapsed="0.000304"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.451025" elapsed="0.002309"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:14.440802" elapsed="0.012594"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:14.453588" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:14.453482" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.453464" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.453815" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.453885" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:14.456250" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:14.413306" elapsed="0.042974"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:14.456340" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:14.456505" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL...</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:14.410772" elapsed="0.045762"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:14.456578" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:14.456720" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL...</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:14.409844" elapsed="0.046904"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;id&gt;SMALL&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.456896" elapsed="0.000297"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;model&gt;Isetta&lt;/model&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.457346" elapsed="0.000300"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.457798" elapsed="0.000276"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;year&gt;1953&lt;/year&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.458223" elapsed="0.000290"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;category&gt;microcar&lt;/category&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.458664" elapsed="0.000319"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;id&gt;TOYOTA&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.459137" elapsed="0.000297"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;model&gt;Camry&lt;/model&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.459586" elapsed="0.000279"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.460032" elapsed="0.000277"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;year&gt;1982&lt;/year&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.460475" elapsed="0.000278"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;category&gt;sedan&lt;/category&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.460903" elapsed="0.000276"/>
</kw>
<doc>Get the device data as XML and make sure it matches the content posted as JSON in the previous case.</doc>
<status status="PASS" start="2026-04-05T00:36:14.325923" elapsed="0.135365"/>
</test>
<test id="s1-s4-s1-t24" name="Add_Device_Data_Item_2_Via_JSON_Post" line="205">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:14.464795" elapsed="0.000203"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:14.464536" elapsed="0.000516"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.466015" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.465907" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.465888" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.471163" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.471058" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.471039" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.472234" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:14.471832" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.472737" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:14.472414" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:14.472808" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:14.472962" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:14.471462" elapsed="0.001525"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.478384" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.478277" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.478258" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.479666" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.479559" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.479541" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:14.480260" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.479876" elapsed="0.000411"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:14.480698" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:14.480457" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:14.518400" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:14.481258" elapsed="0.037363"/>
</kw>
<msg time="2026-04-05T00:36:14.518790" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:14.518836" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.480879" elapsed="0.037994"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:14.542389" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m "_ "2 "_ "V "i "a "_ "J "S "O "N "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:14.519445" elapsed="0.023133"/>
</kw>
<msg time="2026-04-05T00:36:14.542801" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:14.542847" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.519038" elapsed="0.023847"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.543179" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.542963" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.542942" elapsed="0.000337"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.543812" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m "_ "2 "_ "V "i "a "_ "J "S "O "N "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.543417" elapsed="0.000466"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.544189" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.543951" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.543933" elapsed="0.000356"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:14.544323" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:14.547288" elapsed="0.000175"/>
</kw>
<msg time="2026-04-05T00:36:14.547536" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:14.546642" elapsed="0.000990"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.548575" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.549675" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:14.545160" elapsed="0.004631"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:14.544590" elapsed="0.005315"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:14.479236" elapsed="0.070768"/>
</kw>
<msg time="2026-04-05T00:36:14.550096" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:14.550140" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.478615" elapsed="0.071563"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:14.550362" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:14.550255" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.550237" elapsed="0.000225"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.550851" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.551182" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.551253" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:14.477941" elapsed="0.073418"/>
</kw>
<msg time="2026-04-05T00:36:14.551468" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:14.551514" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.473342" elapsed="0.078209"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.551871" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.551627" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.551609" elapsed="0.000340"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:14.473205" elapsed="0.078767"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:14.473038" elapsed="0.078988"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:14.470703" elapsed="0.081377"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:14.465623" elapsed="0.086551"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.465195" elapsed="0.087026"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:14.462126" elapsed="0.090146"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.552882" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.552460" elapsed="0.000449"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.597487" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.597094" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:14.598240" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:14.597997" elapsed="0.000311">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:14.598400" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:14.597672" elapsed="0.000768"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.598980" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:14.598600" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:14.599295" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:14.599492" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:14.599162" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.599918" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.599672" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.601085" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.600673" elapsed="0.000457"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.601566" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.601285" elapsed="0.000307"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.602229" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:14.601933" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:14.603003" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.602767" elapsed="0.000262"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:14.603079" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:14.603226" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:14.602452" elapsed="0.000798"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.603396" elapsed="0.000251"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:14.601803" elapsed="0.001885"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.604450" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:14.603924" elapsed="0.000554"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:14.605283" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.605049" elapsed="0.000260"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:14.605360" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:14.605524" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:14.604717" elapsed="0.000831"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.605751" elapsed="0.000237"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:14.603797" elapsed="0.002232"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:14.601639" elapsed="0.004424"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:14.606105" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:14.606259" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:14.600341" elapsed="0.005944"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.600028" elapsed="0.006288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.606503" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.606340" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.600010" elapsed="0.006571"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.607272" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.606718" elapsed="0.000582"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:14.607348" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:14.596490" elapsed="0.011008"/>
</kw>
<msg time="2026-04-05T00:36:14.607553" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:14.583878" elapsed="0.023722"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.619788" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.632018" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.644296" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.644497" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.644668" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.645021" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.644883" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:14.644869" elapsed="0.000230"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.645234" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.645392" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.645567" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:14.644840" elapsed="0.000823"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.644741" elapsed="0.000949"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.645833" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.645908" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:14.646027" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:14.579714" elapsed="0.066339"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.670672" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/post_data.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.670287" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:14.671379" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2.titanium/post_data.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:14.671177" elapsed="0.000281">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2.titanium/post_data.json' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:14.671551" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:14.670855" elapsed="0.000720"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.672108" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/post_data.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:14.671730" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:14.672464" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2/post_data.json"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2/post_data.json&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:14.672592" level="INFO">${template} = {
  "car:car-entry": {
    "car:id":"TOYOTA",
    "car:model":"Camry",
    "car:manufacturer":"Toyota",
    "car:year":"1982",
    "car:category":"sedan"
  }
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:14.672315" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.673008" level="INFO">{
  "car:car-entry": {
    "car:id":"TOYOTA",
    "car:model":"Camry",
    "car:manufacturer":"Toyota",
    "car:year":"1982",
    "car:category":"sedan"
  }
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.672768" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:14.673406" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.673117" elapsed="0.000364"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.673941" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.673646" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.673506" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.673098" elapsed="0.000925"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.674608" level="INFO">${final_text} = {
  "car:car-entry": {
    "car:id":"TOYOTA",
    "car:model":"Camry",
    "car:manufacturer":"Toyota",
    "car:year":"1982",
    "car:category":"sedan"
  }
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.674162" elapsed="0.000474"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:14.674683" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:14.669687" elapsed="0.005120"/>
</kw>
<msg time="2026-04-05T00:36:14.674859" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:14.657246" elapsed="0.017659"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.687116" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.699346" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.711843" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.712033" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.712228" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.712603" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.712463" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:14.712447" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.712815" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.712974" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.713132" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:14.712404" elapsed="0.000779"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.712305" elapsed="0.000903"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.713345" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.713418" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:14.713546" level="INFO">${data} = {
  "car:car-entry": {
    "car:id":"TOYOTA",
    "car:model":"Camry",
    "car:manufacturer":"Toyota",
    "car:year":"1982",
    "car:category":"sedan"
  }
}</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:14.656389" elapsed="0.057183"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:14.714793" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:14.714557" elapsed="0.000299">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:14.714947" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:14.714211" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.715276" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.715040" elapsed="0.000331"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.715867" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.715576" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.715400" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.715022" elapsed="0.000928"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.718260" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:14.716096" elapsed="0.002190"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:14.718336" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:14.718504" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:14.713897" elapsed="0.004631"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.720026" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.719783" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.720501" level="INFO">{
  "car:car-entry": {
    "car:id":"TOYOTA",
    "car:model":"Camry",
    "car:manufacturer":"Toyota",
    "car:year":"1982",
    "car:category":"sedan"
  }
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.720244" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.720931" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.720691" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.721349" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.721115" elapsed="0.000276"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:14.722208" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:14.722020" elapsed="0.000214"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:14.722566" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:14.722380" elapsed="0.000211"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.722732" elapsed="0.000189"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.723311" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.723070" elapsed="0.000284"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:14.723394" elapsed="0.000047"/>
</return>
<msg time="2026-04-05T00:36:14.723568" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:14.721602" elapsed="0.001991"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:14.768144" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Content-Length': '159', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "car:car-entry": {
    "car:id":"TOYOTA",
    "car:model":"Camry",
    "car:manufacturer":"Toyota",
    "car:year":"1982",
    "car:category":"sedan"
  }
} 
 </msg>
<msg time="2026-04-05T00:36:14.768194" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.184:8181/rests/data/car:cars/car-entry=TOYOTA', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:14.768313" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:14.726954" elapsed="0.041385"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.723662" elapsed="0.044726"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.768586" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.768414" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.723644" elapsed="0.045029"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.776140" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.770873" elapsed="0.005364"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.770364" elapsed="0.006000"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.770323" elapsed="0.006095"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.779151" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.776869" elapsed="0.002328"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.776573" elapsed="0.002658"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.776536" elapsed="0.002720"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.779836" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.779462" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.780158" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.779932" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.780804" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.780462" elapsed="0.000374"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.780238" elapsed="0.000638"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.779914" elapsed="0.000983"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.781411" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.781050" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.781759" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.781523" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.782285" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.781993" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.781839" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.781505" elapsed="0.000861"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:14.782525" elapsed="0.000345"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:14.783301" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.783028" elapsed="0.000298"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.783490" elapsed="0.002311"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:14.769358" elapsed="0.016505"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.786039" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.785935" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.785917" elapsed="0.000188"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:14.788624" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:14.786244" elapsed="0.002406"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:14.788698" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:14.788854" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:14.718849" elapsed="0.070029"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:14.788943" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:14.789089" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:14.568843" elapsed="0.220270"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.789456" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.789212" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.789195" elapsed="0.000352"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:14.789580" elapsed="0.000025"/>
</return>
<arg>${directory_with_template_folders}${/}item2</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-05T00:36:14.564538" elapsed="0.225162"/>
</kw>
<doc>Send a JSON request to change the sample test data and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:14.461553" elapsed="0.328291"/>
</test>
<test id="s1-s4-s1-t25" name="Check_Item2_Is_Created" line="210">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:14.793052" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:14.792799" elapsed="0.000512"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.794271" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.794164" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.794146" elapsed="0.000191"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.799358" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.799252" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.799234" elapsed="0.000207"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.800454" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:14.800033" elapsed="0.000449"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.800929" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:14.800637" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:14.801000" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:14.801152" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:14.799664" elapsed="0.001513"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.806704" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.806597" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.806578" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.807985" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.807880" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.807862" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:14.808601" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.808190" elapsed="0.000438"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:14.809027" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:14.808781" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:14.841674" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:14.809607" elapsed="0.032239"/>
</kw>
<msg time="2026-04-05T00:36:14.842012" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:14.842058" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.809209" elapsed="0.032885"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:14.860617" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "I "t "e "m "2 "_ "I "s "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:14.842668" elapsed="0.018120"/>
</kw>
<msg time="2026-04-05T00:36:14.860957" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:14.861002" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "I "t "e "m "2 "_ "I "s "_ "C "r "e "a "t ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.842260" elapsed="0.018779"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.861330" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.861116" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.861096" elapsed="0.000359"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.861966" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "I "t "e "m "2 "_ "I "s "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.861597" elapsed="0.000471"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.862347" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.862137" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.862119" elapsed="0.000344"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:14.862497" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:14.865478" elapsed="0.000147"/>
</kw>
<msg time="2026-04-05T00:36:14.865696" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:14.864818" elapsed="0.000974"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.866712" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.867647" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:14.863317" elapsed="0.004450"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:14.862748" elapsed="0.005133"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:14.807580" elapsed="0.060399"/>
</kw>
<msg time="2026-04-05T00:36:14.868069" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:14.868113" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "I "t "e "m "2 "_ "I "s "_ "C "r "e "a "t ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.806918" elapsed="0.061232"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:14.868543" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:14.868226" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.868208" elapsed="0.000422"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.869018" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.869352" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.869439" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:14.806247" elapsed="0.063304"/>
</kw>
<msg time="2026-04-05T00:36:14.869643" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:14.869686" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "I "t "e "m "2 "_ "I "s "_ "C "r "e "a "t ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.801543" elapsed="0.068179"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.870042" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.869797" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.869780" elapsed="0.000339"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:14.801393" elapsed="0.068748"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:14.801228" elapsed="0.068942"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:14.798897" elapsed="0.071325"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:14.793883" elapsed="0.076392"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.793469" elapsed="0.076850"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:14.790676" elapsed="0.079694"/>
</kw>
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.871178" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.870798" elapsed="0.000407"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.878553" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.878250" elapsed="0.000350"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.878998" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.878752" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:14.905840" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:14.906838" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '554'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL&lt;/id&gt;&lt;model&gt;Isetta&lt;/model&gt;&lt;year&gt;1953&lt;/year&gt;&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;&lt;category&gt;microcar&lt;/category&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;TOYOTA&lt;/id&gt;&lt;model&gt;Camry&lt;/model&gt;&lt;year&gt;1982&lt;/year&gt;&lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;&lt;category&gt;sedan&lt;/category&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:14.907071" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:14.881172" elapsed="0.025955"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.879109" elapsed="0.028112"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.907650" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.907279" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.879091" elapsed="0.028752"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.916038" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL&lt;/id&gt;&lt;model&gt;Isetta&lt;/model&gt;&lt;year&gt;1953&lt;/year&gt;&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;&lt;category&gt;microcar&lt;/category&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;TOYOTA&lt;/id&gt;&lt;model&gt;Camry&lt;/model&gt;&lt;year&gt;1982&lt;/year&gt;&lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;&lt;category&gt;sedan&lt;/category&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.910167" elapsed="0.005997"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.909660" elapsed="0.006584"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.909620" elapsed="0.006679"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.919174" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:14.916890" elapsed="0.002329"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.916506" elapsed="0.002748"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.916385" elapsed="0.002893"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.919821" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.919449" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.920145" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.919917" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.920723" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.920381" elapsed="0.000370"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.920226" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.919900" elapsed="0.000909"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.921323" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.920965" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.921662" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:14.921418" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.922185" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:14.921894" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:14.921743" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.921400" elapsed="0.000866"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:14.922408" elapsed="0.000399"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:14.923244" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:14.922968" elapsed="0.000301"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.923419" elapsed="0.002328"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:14.908696" elapsed="0.017114"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:14.925983" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:14.925879" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.925861" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:14.926211" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.926281" elapsed="0.000014"/>
</return>
<msg time="2026-04-05T00:36:14.928619" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:14.873776" elapsed="0.054872"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:14.928708" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:14.928856" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL...</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:14.871413" elapsed="0.057471"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:14.928927" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:14.929067" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL...</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:14.870533" elapsed="0.058561"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;id&gt;SMALL&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.929241" elapsed="0.000314"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;model&gt;Isetta&lt;/model&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.929710" elapsed="0.000306"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.930170" elapsed="0.000299"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;year&gt;1953&lt;/year&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.930623" elapsed="0.000279"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;category&gt;microcar&lt;/category&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.931053" elapsed="0.000277"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;id&gt;TOYOTA&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.931498" elapsed="0.000277"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;model&gt;Camry&lt;/model&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.931927" elapsed="0.000274"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.932353" elapsed="0.000323"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;year&gt;1982&lt;/year&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.932827" elapsed="0.000275"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;category&gt;sedan&lt;/category&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:14.933252" elapsed="0.000291"/>
</kw>
<doc>Get the device data as XML and make sure it matches the content posted as JSON in the previous case.</doc>
<status status="PASS" start="2026-04-05T00:36:14.790099" elapsed="0.143552"/>
</test>
<test id="s1-s4-s1-t26" name="Delete_Device_Data" line="224">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:14.936834" elapsed="0.000203"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:14.936575" elapsed="0.000515"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.938052" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.937946" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.937927" elapsed="0.000238"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.943413" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.943305" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.943281" elapsed="0.000222"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.944550" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:14.944092" elapsed="0.000485"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:14.945029" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:14.944734" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:14.945099" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:14.945253" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:14.943726" elapsed="0.001552"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.950666" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.950560" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.950541" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:14.951946" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:14.951842" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:14.951824" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:14.952545" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:14.952150" elapsed="0.000425"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:14.953005" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:14.952745" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:14.990806" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:14.953582" elapsed="0.037391"/>
</kw>
<msg time="2026-04-05T00:36:14.991148" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:14.991195" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.953184" elapsed="0.038048"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:15.008589" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "l "e "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:14.991826" elapsed="0.016939"/>
</kw>
<msg time="2026-04-05T00:36:15.008932" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:15.008977" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "l "e "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "[K"
...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.991405" elapsed="0.017608"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.009305" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.009091" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.009071" elapsed="0.000332"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.009947" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "l "e "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.009578" elapsed="0.000432"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.010284" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.010076" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.010058" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:15.010413" elapsed="0.000047"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:15.013361" elapsed="0.000174"/>
</kw>
<msg time="2026-04-05T00:36:15.013606" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.012719" elapsed="0.001033"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.014809" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.015760" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:15.011248" elapsed="0.004628"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:15.010683" elapsed="0.005309"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:14.951541" elapsed="0.064550"/>
</kw>
<msg time="2026-04-05T00:36:15.016182" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:15.016225" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "l "e "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "[K"
...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.950877" elapsed="0.065386"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:15.016463" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:15.016339" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.016321" elapsed="0.000244"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.016955" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.017285" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.017355" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:14.950211" elapsed="0.067280"/>
</kw>
<msg time="2026-04-05T00:36:15.017585" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:15.017627" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "l "e "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "[K"
...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.945651" elapsed="0.072014"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.017982" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.017740" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.017723" elapsed="0.000335"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:14.945514" elapsed="0.072567"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:14.945330" elapsed="0.072778"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:14.942933" elapsed="0.075228"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:14.937664" elapsed="0.080553"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:14.937233" elapsed="0.081028"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:14.934466" elapsed="0.083845"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.019012" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.018587" elapsed="0.000452"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.061020" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.060648" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:15.061772" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:15.061541" elapsed="0.000298">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:15.061932" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:15.061204" elapsed="0.000752"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.062550" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:15.062152" elapsed="0.000426"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:15.062869" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:15.063000" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:15.062734" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.063417" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.063175" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.064406" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.064150" elapsed="0.000317"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.064893" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.064632" elapsed="0.000286"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.065574" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:15.065258" elapsed="0.000342"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:15.066488" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.066258" elapsed="0.000256"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:15.066564" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:15.066716" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:15.065787" elapsed="0.000953"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.066893" elapsed="0.000228"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:15.065130" elapsed="0.002032"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.067711" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:15.067400" elapsed="0.000337"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:15.068447" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.068225" elapsed="0.000249"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:15.068525" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:15.068702" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:15.067918" elapsed="0.000809"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.068871" elapsed="0.000219"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:15.067274" elapsed="0.001857"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:15.064965" elapsed="0.004200"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:15.069207" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:15.069361" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:15.063835" elapsed="0.005551"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.063547" elapsed="0.005870"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.069601" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.069458" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.063528" elapsed="0.006147"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.070359" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.069813" elapsed="0.000574"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:15.070451" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:15.060005" elapsed="0.010569"/>
</kw>
<msg time="2026-04-05T00:36:15.070663" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.047413" elapsed="0.023297"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.082886" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.095241" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.107374" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.107668" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.107838" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.108194" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.108056" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:15.108041" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.108407" elapsed="0.000040"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.108592" elapsed="0.000043"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.108782" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:15.108012" elapsed="0.000822"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.107912" elapsed="0.000947"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.108998" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.109071" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:15.109188" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:15.043192" elapsed="0.066021"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.110297" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.110051" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:15.148265" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:15.148374" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:15.148529" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:15.112589" elapsed="0.035977"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.110409" elapsed="0.038212"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.148999" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.148681" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.110391" elapsed="0.038791"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.156639" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.151365" elapsed="0.005423"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.150892" elapsed="0.005976"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.150853" elapsed="0.006070"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.160268" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.157561" elapsed="0.002753"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.157047" elapsed="0.003301"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.157011" elapsed="0.003361"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.160938" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.160547" elapsed="0.000417"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.161259" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.161034" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.161809" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.161511" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.161339" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.161016" elapsed="0.000875"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.162401" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.162042" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.162738" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.162513" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.163262" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.162971" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.162818" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.162495" elapsed="0.000848"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.163503" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:15.164276" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.164006" elapsed="0.000296"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.164465" elapsed="0.002360"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:15.149970" elapsed="0.016917"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:15.166932" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:15.169173" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:36:15.109487" elapsed="0.059712"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:15.169252" elapsed="0.000027"/>
</return>
<arg>${directory_with_template_folders}${/}datamod1</arg>
<arg>${mapping}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:36:15.019258" elapsed="0.150115"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.211184" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.210811" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:15.211983" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:15.211768" elapsed="0.000279">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:15.212139" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:15.211417" elapsed="0.000746"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.212750" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:15.212321" elapsed="0.000458"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:15.213071" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:15.213250" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:15.212936" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.213697" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.213450" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.214681" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.214408" elapsed="0.000317"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.215138" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.214882" elapsed="0.000281"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.215815" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:15.215516" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:15.216556" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.216330" elapsed="0.000252"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:15.216630" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:15.216794" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:15.216019" elapsed="0.000800"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.216964" elapsed="0.000224"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:15.215371" elapsed="0.001857"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.217777" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:15.217481" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:15.218648" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.218409" elapsed="0.000265"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:15.218722" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:15.218870" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:15.217981" elapsed="0.000912"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.219039" elapsed="0.000219"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:15.217338" elapsed="0.001961"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:15.215210" elapsed="0.004125"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:15.219376" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:15.219548" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:15.214094" elapsed="0.005479"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.213808" elapsed="0.005796"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.219771" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.219628" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.213789" elapsed="0.006056"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.220706" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.219981" elapsed="0.000781"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:15.220855" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:15.210188" elapsed="0.010795"/>
</kw>
<msg time="2026-04-05T00:36:15.221036" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.197756" elapsed="0.023325"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.233339" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.245597" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.257806" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.257993" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.258161" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.258648" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.258508" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:15.258494" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.258860" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.259020" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.259178" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:15.258462" elapsed="0.000767"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.258233" elapsed="0.001022"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.259392" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.259481" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:15.259598" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:15.193394" elapsed="0.066230"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.260741" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.260491" elapsed="0.000322"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:15.299944" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:15.300007" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:15.300125" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:15.262884" elapsed="0.037278"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.260881" elapsed="0.039335"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.300488" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.300252" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.260864" elapsed="0.039745"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.304061" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.301743" elapsed="0.002360"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.301526" elapsed="0.002612"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.301508" elapsed="0.002654"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.306858" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.304442" elapsed="0.002462"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.304216" elapsed="0.002723"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.304199" elapsed="0.002764"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.307505" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.307117" elapsed="0.000415"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.307828" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.307602" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.308356" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.308062" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.307909" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.307584" elapsed="0.000869"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.308987" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.308606" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.309304" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.309080" elapsed="0.000279"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.309844" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.309552" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.309383" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.309063" elapsed="0.000862"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.310066" elapsed="0.000338"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:15.310846" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.310576" elapsed="0.000295"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.311018" elapsed="0.002297"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:15.301090" elapsed="0.012286"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:15.313434" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:36:15.315660" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:36:15.259911" elapsed="0.055775"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:15.315773" elapsed="0.000028"/>
</return>
<arg>${directory_with_template_folders}${/}item1</arg>
<arg>${mapping}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:36:15.169603" elapsed="0.146294"/>
</kw>
<doc>Send a request to delete the sample test data on the device and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:14.933908" elapsed="0.382092"/>
</test>
<test id="s1-s4-s1-t27" name="Check_Device_Data_Is_Deleted" line="230">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:15.319158" elapsed="0.000204"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:15.318905" elapsed="0.000511"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.320381" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:15.320273" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.320254" elapsed="0.000211"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.326232" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:15.326126" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.326108" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.327283" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:15.326908" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.327774" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:15.327480" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:15.327843" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:15.327993" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:15.326532" elapsed="0.001485"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.333739" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:15.333632" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.333612" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.335017" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:15.334913" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.334895" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:15.335597" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.335222" elapsed="0.000402"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:15.336018" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:15.335776" elapsed="0.000268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:15.371180" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:15.336592" elapsed="0.034761"/>
</kw>
<msg time="2026-04-05T00:36:15.371536" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:15.371582" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.336198" elapsed="0.035421"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:15.391051" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "D "e "l "e "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:15.372166" elapsed="0.019056"/>
</kw>
<msg time="2026-04-05T00:36:15.391386" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:15.391457" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.371783" elapsed="0.019712"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.391787" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.391572" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.391552" elapsed="0.000367"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.392445" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "D "e "l "e "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.392063" elapsed="0.000451"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.392791" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.392581" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.392563" elapsed="0.000326"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:15.392939" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:15.395888" elapsed="0.000146"/>
</kw>
<msg time="2026-04-05T00:36:15.396103" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.395224" elapsed="0.000975"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.397149" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.398085" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:15.393774" elapsed="0.004424"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:15.393191" elapsed="0.005122"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:15.334615" elapsed="0.063795"/>
</kw>
<msg time="2026-04-05T00:36:15.398517" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:15.398560" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.333958" elapsed="0.064639"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:15.398778" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:36:15.398672" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.398654" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.399248" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.399607" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.399679" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:15.333277" elapsed="0.066510"/>
</kw>
<msg time="2026-04-05T00:36:15.399879" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:15.399922" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.328370" elapsed="0.071587"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.400276" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.400032" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.400015" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:15.328232" elapsed="0.072143"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:15.328069" elapsed="0.072335"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:15.325768" elapsed="0.074733"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:15.319989" elapsed="0.080566"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.319577" elapsed="0.081022"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:15.316782" elapsed="0.083868"/>
</kw>
<kw name="Regexp Escape" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.401138" level="INFO">${escaped} = urn:ietf:params:xml:ns:netconf:base:1\.0</msg>
<var>${escaped}</var>
<arg>${ODL_NETCONF_NAMESPACE}</arg>
<doc>Returns each argument escaped for use as a regular expression.</doc>
<status status="PASS" start="2026-04-05T00:36:15.400800" elapsed="0.000364"/>
</kw>
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.404200" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.402186" elapsed="0.002042"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.411469" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.411201" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.411910" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.411666" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:15.429849" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:15.430093" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '55'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt; 
 </msg>
<msg time="2026-04-05T00:36:15.430318" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:15.414071" elapsed="0.016303"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.412021" elapsed="0.018489"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.430902" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.430570" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.412003" elapsed="0.019086"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.438917" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.433349" elapsed="0.005673"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.432847" elapsed="0.006255"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.432806" elapsed="0.006350"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.443255" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.439794" elapsed="0.003507"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.439278" elapsed="0.004058"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.439242" elapsed="0.004118"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.443919" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.443546" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.444242" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.444016" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.444797" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.444495" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.444323" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.443998" elapsed="0.000882"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.445405" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.445044" elapsed="0.000418"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.445759" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.445534" elapsed="0.000280"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.446282" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.445990" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.445838" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.445516" elapsed="0.000849"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.446525" elapsed="0.000339"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:15.447295" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.447022" elapsed="0.000298"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.447533" elapsed="0.002431"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:15.431883" elapsed="0.018144"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:15.450200" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:15.450096" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.450078" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.450444" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.450516" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:15.452877" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:15.406920" elapsed="0.045985"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:15.452965" elapsed="0.000039"/>
</return>
<msg time="2026-04-05T00:36:15.453129" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:15.404578" elapsed="0.048576"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:15.453198" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:15.453336" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:15.401928" elapsed="0.051433"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-04-05T00:36:15.453630" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.453446" elapsed="0.000544"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.454159" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.454015" elapsed="0.000198"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.454371" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.454237" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.453408" elapsed="0.001053"/>
</if>
<arg>&lt;data xmlns\="${escaped}"(\/&gt;|&gt;&lt;\/data&gt;)</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-05T00:36:15.401404" elapsed="0.053105"/>
</kw>
<doc>Get the device data and make sure it is empty again.</doc>
<status status="PASS" start="2026-04-05T00:36:15.316258" elapsed="0.138355"/>
</test>
<test id="s1-s4-s1-t28" name="Deconfigure_Device_From_Netconf" line="235">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:15.457829" elapsed="0.000203"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:15.457576" elapsed="0.000510"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.459048" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:15.458942" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.458923" elapsed="0.000192"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.464020" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:15.463914" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.463894" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.465094" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:15.464694" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.465593" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:15.465281" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:15.465663" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:15.465814" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:15.464303" elapsed="0.001536"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.471418" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:15.471311" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.471292" elapsed="0.000244"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.472744" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:15.472639" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.472620" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:15.473339" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.472957" elapsed="0.000409"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:15.473782" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:15.473539" elapsed="0.000268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:15.506934" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:15.474341" elapsed="0.032757"/>
</kw>
<msg time="2026-04-05T00:36:15.507268" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:15.507314" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.473962" elapsed="0.033388"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:15.526361" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:15.507987" elapsed="0.018563"/>
</kw>
<msg time="2026-04-05T00:36:15.526717" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:15.526762" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.507596" elapsed="0.019202"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.527089" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.526875" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.526855" elapsed="0.000333"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.527724" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.527324" elapsed="0.000468"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.528066" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.527859" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.527841" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:15.528196" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:15.531156" elapsed="0.000147"/>
</kw>
<msg time="2026-04-05T00:36:15.531373" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.530519" elapsed="0.000981"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.532411" elapsed="0.000064"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.533378" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:15.529032" elapsed="0.004475"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:15.528465" elapsed="0.005156"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:15.472308" elapsed="0.061412"/>
</kw>
<msg time="2026-04-05T00:36:15.533810" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:15.533853" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.471690" elapsed="0.062200"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:15.534075" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:36:15.533968" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.533949" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.534598" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.534932" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.535003" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:15.470975" elapsed="0.064135"/>
</kw>
<msg time="2026-04-05T00:36:15.535203" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:15.535246" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.466190" elapsed="0.069092"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.535634" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.535358" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.535340" elapsed="0.000372"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:15.466054" elapsed="0.069681"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:15.465890" elapsed="0.069874"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:15.463497" elapsed="0.072320"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:15.458659" elapsed="0.077213"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.458229" elapsed="0.077688"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:15.455444" elapsed="0.080523"/>
</kw>
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:15.555573" elapsed="0.000419"/>
</kw>
<msg time="2026-04-05T00:36:15.556043" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.555187" elapsed="0.000905"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:15.554799" elapsed="0.001367"/>
</kw>
<msg time="2026-04-05T00:36:15.556209" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.546228" elapsed="0.010023"/>
</kw>
<msg time="2026-04-05T00:36:15.556352" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:15.545905" elapsed="0.010471"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.557281" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.556552" elapsed="0.000757"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.589253" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.588864" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:15.590001" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:15.589777" elapsed="0.000296">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:15.590203" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:15.589453" elapsed="0.000775"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.590788" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:15.590388" elapsed="0.000427"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:15.591106" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:15.591257" level="INFO">${template} = $RESTCONF_ROOT/operations/netconf-node-topology:delete-device
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:15.590971" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.591696" level="INFO">$RESTCONF_ROOT/operations/netconf-node-topology:delete-device
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.591450" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.592843" level="INFO">mapping: {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.592403" elapsed="0.000487"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.593350" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.593049" elapsed="0.000328"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.594248" level="INFO">${value} = 10.30.170.167</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:15.593747" elapsed="0.000527"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:15.595396" level="INFO">${encoded} = 10.30.170.167</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.594918" elapsed="0.000534"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:15.595568" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:15.595794" level="INFO">${encoded_value} = 10.30.170.167</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:15.594485" elapsed="0.001335"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.595967" elapsed="0.000494"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.167</var>
<status status="PASS" start="2026-04-05T00:36:15.593616" elapsed="0.002887"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.597256" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:15.596743" elapsed="0.000538"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:15.598383" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.597910" elapsed="0.000539"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:15.598567" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:15.598790" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:15.597478" elapsed="0.001337"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.598961" elapsed="0.000497"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:15.596614" elapsed="0.002886"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.600233" level="INFO">${value} = 17830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:15.599740" elapsed="0.000518"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:15.601389" level="INFO">${encoded} = 17830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.600885" elapsed="0.000558"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:15.601557" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:15.601780" level="INFO">${encoded_value} = 17830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:15.600453" elapsed="0.001352"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.601953" elapsed="0.000499"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">17830</var>
<status status="PASS" start="2026-04-05T00:36:15.599612" elapsed="0.002884"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.603237" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:15.602737" elapsed="0.000526"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:15.604521" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.604029" elapsed="0.000533"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:15.604675" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:15.604901" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:15.603595" elapsed="0.001331"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.605073" elapsed="0.000505"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:36:15.602607" elapsed="0.003013"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.606359" level="INFO">${value} = topsecret</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:15.605861" elapsed="0.000523"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:15.607611" level="INFO">${encoded} = topsecret</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.607028" elapsed="0.000624"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:15.607766" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:15.607989" level="INFO">${encoded_value} = topsecret</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:15.606595" elapsed="0.001418"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.608162" elapsed="0.000485"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">topsecret</var>
<status status="PASS" start="2026-04-05T00:36:15.605732" elapsed="0.002957"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.609665" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:15.608929" elapsed="0.000763"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:15.610810" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.610307" elapsed="0.000543"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:15.610962" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:15.611186" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:15.609877" elapsed="0.001334"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.611359" elapsed="0.000500"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:36:15.608801" elapsed="0.003101"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.612654" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:15.612140" elapsed="0.000540"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:15.613799" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.613306" elapsed="0.000534"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:15.613953" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:15.614175" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:15.612861" elapsed="0.001339"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.614347" elapsed="0.000506"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:36:15.612012" elapsed="0.002883"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.615727" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:15.615134" elapsed="0.000619"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:15.616848" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.616363" elapsed="0.000524"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:15.616999" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:15.617247" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:15.615934" elapsed="0.001338"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.617419" elapsed="0.000485"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:15.615005" elapsed="0.002941"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:15.593439" elapsed="0.024540"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:15.618022" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:15.618181" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:15.592090" elapsed="0.026153"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.591807" elapsed="0.026470"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.618475" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.618302" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.591788" elapsed="0.026766"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.619356" level="INFO">${final_text} = /rests/operations/netconf-node-topology:delete-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.618693" elapsed="0.000690"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:15.619606" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:15.588246" elapsed="0.031489"/>
</kw>
<msg time="2026-04-05T00:36:15.619787" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.575831" elapsed="0.044003"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.632246" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.644451" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.656990" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.657183" elapsed="0.000044"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.657381" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.657769" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.657628" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:15.657613" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.657984" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.658146" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.658307" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:15.657584" elapsed="0.000775"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.657474" elapsed="0.000910"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.658541" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.658618" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:15.658794" level="INFO">${uri} = /rests/operations/netconf-node-topology:delete-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:15.571600" elapsed="0.087227"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.683383" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.683012" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:15.684118" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:15.683912" elapsed="0.000269">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:15.684273" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:15.683586" elapsed="0.000711"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.684851" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:15.684470" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:15.685166" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:15.685303" level="INFO">${template} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
 &lt;/input&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:15.685033" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.685745" level="INFO">&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
 &lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.685500" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:15.686140" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.685858" elapsed="0.000340"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.686686" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.686363" elapsed="0.000351"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.686223" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.685839" elapsed="0.000935"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.687575" level="INFO">${final_text} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
 &lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.686914" elapsed="0.000691"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:15.687653" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:15.682394" elapsed="0.005385"/>
</kw>
<msg time="2026-04-05T00:36:15.687833" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.669820" elapsed="0.018060"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.700892" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.713945" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.726230" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.726452" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.726630" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.727026" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.726881" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:15.726864" elapsed="0.000243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.727246" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.727409" elapsed="0.000035"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.727588" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:15.726828" elapsed="0.000813"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.726713" elapsed="0.000954"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.727808" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.727886" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:15.728026" level="INFO">${data} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
 &lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:15.668941" elapsed="0.059113"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:15.729457" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:15.729123" elapsed="0.000408">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:15.729626" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:15.728746" elapsed="0.000905"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.729975" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.729721" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.730536" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.730224" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.730056" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.729703" elapsed="0.000917"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.732988" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:15.730767" elapsed="0.002248"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:15.733119" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:36:15.733282" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:15.728388" elapsed="0.004935"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.734905" level="INFO">/rests/operations/netconf-node-topology:delete-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.734649" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.735335" level="INFO">&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
 &lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.735098" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.735791" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.735544" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.736223" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.735980" elapsed="0.000287"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:15.737089" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:15.736888" elapsed="0.000227"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:15.737504" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:15.737265" elapsed="0.000265"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.737679" elapsed="0.000210"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.738373" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.738043" elapsed="0.000394"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:15.738482" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:15.738637" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:15.736487" elapsed="0.002176"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.741012" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.738733" elapsed="0.002345"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:15.757990" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/operations/netconf-node-topology:delete-device 
 path_url=/rests/operations/netconf-node-topology:delete-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Content-Length': '106', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
 &lt;/input&gt; 
 </msg>
<msg time="2026-04-05T00:36:15.758101" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/operations/netconf-node-topology:delete-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:15.758296" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:15.741244" elapsed="0.017110"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.741103" elapsed="0.017404"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.738716" elapsed="0.019843"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.766295" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.760922" elapsed="0.005470"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.760384" elapsed="0.006116"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.760343" elapsed="0.006214"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.770485" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.767161" elapsed="0.003372"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.766680" elapsed="0.003887"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.766644" elapsed="0.003948"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.771127" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.770749" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.771468" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.771223" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.772047" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.771713" elapsed="0.000360"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.771551" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.771205" elapsed="0.000979"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.772741" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.772346" elapsed="0.000428"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.773089" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.772860" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.773644" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.773321" elapsed="0.000349"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.773168" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.772839" elapsed="0.000888"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.773872" elapsed="0.000343"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:15.774672" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.774375" elapsed="0.000323"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.774847" elapsed="0.002285"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:15.759350" elapsed="0.017844"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:15.777399" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-05T00:36:15.777266" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.777248" elapsed="0.000267"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.777658" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.777726" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:15.780067" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:15.733699" elapsed="0.046395"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:15.780164" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:15.780316" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:15.560569" elapsed="0.219772"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.780704" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.780465" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.780446" elapsed="0.000371"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:15.780857" elapsed="0.000026"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:15.557725" elapsed="0.223256"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.557398" elapsed="0.223626"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.781290" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.781049" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.557379" elapsed="0.224020"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.781563" elapsed="0.000241"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=${device_type_rpc_delete}</arg>
<arg>http_timeout=2</arg>
<arg>http_method=post</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:36:15.536233" elapsed="0.245634"/>
</kw>
<doc>Make request to deconfigure the testtool device on Netconf connector.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:15.454879" elapsed="0.327162"/>
</test>
<test id="s1-s4-s1-t29" name="Check_Device_Going_To_Be_Gone_After_Deconfiguring" line="245">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:15.786294" elapsed="0.000225"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:15.786034" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.787549" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:15.787439" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.787406" elapsed="0.000210"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.792497" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:15.792377" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.792359" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.793565" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:15.793151" elapsed="0.000441"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.794035" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:15.793744" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:15.794104" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:15.794256" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:15.792784" elapsed="0.001497"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.799642" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:15.799534" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.799515" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.800944" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:15.800837" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.800819" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:15.801550" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.801149" elapsed="0.000428"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:15.801977" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:15.801731" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:15.834664" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:15.802556" elapsed="0.032283"/>
</kw>
<msg time="2026-04-05T00:36:15.835006" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:15.835051" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.802158" elapsed="0.032929"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:15.860007" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "G "o "i "n "g "_ "T "o "_ "B "e "_ "G "o "n "e "_ "A "f "t "e "r "_ "D "e "c "o "n "f "i "g "u "r "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:15.835661" elapsed="0.024541"/>
</kw>
<msg time="2026-04-05T00:36:15.860370" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:15.860416" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "G "o "i "n "g "_ "T ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.835252" elapsed="0.025227"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.860792" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.860558" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.860538" elapsed="0.000356"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.861399" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "G "o "i "n "g "_ "T "o "_ "B "e "_ "G "o "n "e "_ "A "f "t "e "r "_ "D "e "c "o "n "f "i "g "u "r "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.861032" elapsed="0.000521"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.861835" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.861624" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.861605" elapsed="0.000331"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:15.861969" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:15.864974" elapsed="0.000146"/>
</kw>
<msg time="2026-04-05T00:36:15.865191" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.864291" elapsed="0.000997"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.866235" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.867175" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:15.862817" elapsed="0.004474"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:15.862221" elapsed="0.005183"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:15.800531" elapsed="0.066988"/>
</kw>
<msg time="2026-04-05T00:36:15.867609" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:15.867652" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "G "o "i "n "g "_ "T ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.799857" elapsed="0.067832"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:15.867869" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:36:15.867765" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.867747" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.868342" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.868706" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.868778" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:15.799186" elapsed="0.069699"/>
</kw>
<msg time="2026-04-05T00:36:15.868976" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:15.869019" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D "- "R "P "C ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "G "o "i "n "g "_ "T ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.794652" elapsed="0.074403"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.869370" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.869129" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.869112" elapsed="0.000472"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:15.794516" elapsed="0.075091"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:15.794332" elapsed="0.075304"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:15.792024" elapsed="0.077666"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:15.787142" elapsed="0.082603"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.786725" elapsed="0.083067"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:15.783765" elapsed="0.086082"/>
</kw>
<kw name="Wait_Device_Fully_Removed" owner="NetconfKeywords">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Completely_Gone" owner="NetconfKeywords">
<kw name="Check_Device_Has_No_Netconf_Connector" owner="NetconfKeywords">
<kw name="Count_Netconf_Connectors_For_Device" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.882592" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.880540" elapsed="0.002078"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.882986" elapsed="0.000022"/>
</kw>
<var name="${nv}"/>
<status status="NOT RUN" start="2026-04-05T00:36:15.882837" elapsed="0.000207"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.882713" elapsed="0.000356"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.883367" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.883132" elapsed="0.000307"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.884160" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.883695" elapsed="0.000492"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.883464" elapsed="0.000759"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.884405" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.884247" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.883115" elapsed="0.001380"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:15.884529" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:15.884675" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:15.880078" elapsed="0.004622"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:15.884746" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:15.884885" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:15.879596" elapsed="0.005314"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.892165" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.891921" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.892616" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.892359" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:15.905584" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:15.905811" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1181'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-05T00:36:15.905950" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:15.894799" elapsed="0.011186"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.892725" elapsed="0.013319"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.906282" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.906079" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.892707" elapsed="0.013691"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.925962" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.907790" elapsed="0.018258"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.907493" elapsed="0.018592"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.907467" elapsed="0.018642"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.941249" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.926386" elapsed="0.014910"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.926166" elapsed="0.015164"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.926149" elapsed="0.015206"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.941928" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.941553" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.942252" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.942025" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.943074" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.942753" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.942333" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.942007" elapsed="0.001150"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.943687" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.943311" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.944016" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.943789" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.944581" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.944252" elapsed="0.000355"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.944096" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.943772" elapsed="0.000891"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:15.944805" elapsed="0.000340"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:15.945638" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.945301" elapsed="0.000363"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:15.945814" elapsed="0.002536"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:15.906893" elapsed="0.041519"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:15.948602" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:15.948498" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.948480" elapsed="0.000188"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:15.951882" level="INFO">${text_normalized} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:15.948812" elapsed="0.003100"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:15.951964" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:15.952122" level="INFO">${response_text} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:15.887653" elapsed="0.064495"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:15.952204" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:15.952348" level="INFO">${mounts} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${mounts}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:15.885122" elapsed="0.067251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.952802" level="INFO">{
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topology-parameters": {
       "encryption": {
        "encryption-alg": [
         "AEAD_AES_128_GCM",
         "AEAD_AES_256_GCM",
         "aes128-cbc",
         "aes128-ctr",
         "aes192-cbc",
         "aes192-ctr",
         "aes256-cbc",
         "aes256-ctr",
         "chacha20-poly1305"
        ]
       },
       "host-key": {
        "host-key-alg": [
         "ecdsa-sha2-nistp256",
         "ecdsa-sha2-nistp384",
         "ecdsa-sha2-nistp521",
         "rsa-sha2-256",
         "rsa-sha2-512",
         "ssh-ed25519",
         "ssh-rsa"
        ]
       },
       "key-exchange": {
        "key-exchange-alg": [
         "curve25519-sha256",
         "curve448-sha512",
         "diffie-hellman-group-exchange-sha256",
         "diffie-hellman-group14-sha256",
         "diffie-hellman-group15-sha512",
         "diffie-hellman-group16-sha512",
         "diffie-hellman-group17-sha512",
         "diffie-hellman-group18-sha512",
         "ecdh-sha2-nistp256",
         "ecdh-sha2-nistp384",
         "ecdh-sha2-nistp521",
         "mlkem1024nistp384-sha384",
         "mlkem768nistp256-sha256",
         "mlkem768x25519-sha256",
         "sntrup761x25519-sha512"
        ]
       },
       "mac": {
        "mac-alg": [
         "hmac-sha1",
         "hmac-sha2-256",
         "hmac-sha2-512"
        ]
       }
      }
     }
    }
   },
   {
    "topology-id": "flow:1"
   },
   {
    "topology-id": "hwvtep:1"
   },
   {
    "topology-id": "ovsdb:1"
   }
  ]
 }
}
</msg>
<arg>${mounts}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:15.952554" elapsed="0.000355"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.953466" level="INFO">${actual_count} = 0</msg>
<var>${actual_count}</var>
<arg>len('''${mounts}'''.split('"node-id": "${device_name}"'))-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.953061" elapsed="0.000433"/>
</kw>
<return>
<value>${actual_count}</value>
<status status="PASS" start="2026-04-05T00:36:15.953563" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:15.953714" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Count all instances of the specified device in the Netconf topology (usually 0 or 1).</doc>
<status status="PASS" start="2026-04-05T00:36:15.871984" elapsed="0.081754"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.954139" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${count}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:15.953888" elapsed="0.000304"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Check that there are no instances of the specified device in the Netconf topology.</doc>
<status status="PASS" start="2026-04-05T00:36:15.871540" elapsed="0.082709"/>
</kw>
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.964445" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.962313" elapsed="0.002160"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.965126" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.964805" elapsed="0.000347"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:15.964655" elapsed="0.000533"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.965758" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.965409" elapsed="0.000375"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:15.965266" elapsed="0.000554"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:15.964526" elapsed="0.001322"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.966613" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:15.966140" elapsed="0.000500"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:15.965912" elapsed="0.000764"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.966862" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.966701" elapsed="0.000216"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.967092" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:15.966940" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.965895" elapsed="0.001271"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:15.967199" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:15.967343" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:15.961867" elapsed="0.005501"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:15.967414" elapsed="0.000040"/>
</return>
<msg time="2026-04-05T00:36:15.967571" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>config</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:15.961274" elapsed="0.006321"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:15.976792" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01g9kmqo999jb71bx3ti0jbgt723.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:15.977128" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-05T00:36:15.977255" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:15.968351" elapsed="0.008938"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-05T00:36:15.986683" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:15.977400" elapsed="0.009342"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:15.977374" elapsed="0.009393"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.986914" elapsed="0.000022"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:15.987114" elapsed="0.000021"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config in default using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-05T00:36:15.967952" elapsed="0.019239"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device has no Netconf connectors nor associated data.</doc>
<status status="PASS" start="2026-04-05T00:36:15.871032" elapsed="0.116214"/>
</kw>
<arg>${timeout}</arg>
<arg>${period}</arg>
<arg>Check_Device_Completely_Gone</arg>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:15.870462" elapsed="0.116833"/>
</kw>
<arg>${device_name}</arg>
<doc>Wait until all netconf connectors for the device with the given name disappear.
Call of Remove_Device_From_Netconf returns before netconf gets
around deleting the device's connector. To ensure the device is
really gone from netconf, use this keyword to make sure all
connectors disappear. If a call to Remove_Device_From_Netconf
is not made before using this keyword, the wait will fail.
Using this keyword is more readable than putting the WUKS below
into a test case.</doc>
<status status="PASS" start="2026-04-05T00:36:15.870049" elapsed="0.117305"/>
</kw>
<doc>Check that the device is really going to be gone. Fail
if found after one minute. This is an expected behavior as the
delete request is sent to the config subsystem which then triggers
asynchronous destruction of the netconf connector referring to the
device and the device's data. This test makes sure this
asynchronous operation does not take unreasonable amount of time
by making sure that both the netconf connector and the device's
data is gone before reporting success.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:15.782414" elapsed="0.205066"/>
</test>
<kw name="Teardown_Everything" type="TEARDOWN">
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:15.988306" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-05T00:36:15.988235" elapsed="0.000163"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Stop_Testtool" owner="NetconfKeywords">
<kw name="Write_Bare_Ctrl_C" owner="RemoteBash">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:15.989745" level="INFO">${ctrl_c} = </msg>
<var>${ctrl_c}</var>
<arg>chr(int(3))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:15.989408" elapsed="0.000364"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>${ctrl_c}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:15.989926" elapsed="0.000230"/>
</kw>
<doc>Construct ctrl+c character and SSH-write it (without endline) to the current SSH connection.
Do not read anything yet.</doc>
<status status="PASS" start="2026-04-05T00:36:15.989203" elapsed="0.001023"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-05T00:36:16.325303" level="INFO">[?2004l^C[?2004h[jenkins@releng-10549-81-1-docker-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-05T00:36:15.990370" elapsed="0.334996"/>
</kw>
<kw name="Get File" owner="SSHLibrary">
<msg time="2026-04-05T00:36:16.379721" level="INFO">'testtool--netconf-userfeatures-txt-CRUD-CRUD-RPC.1775349345.945.log' -&gt; '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/testtool--netconf-userfeatures-txt-CRUD-CRUD-RPC.1775349345.945.log'</msg>
<arg>${testtool_log}</arg>
<doc>Downloads file(s) from the remote machine to the local machine.</doc>
<status status="PASS" start="2026-04-05T00:36:16.325539" elapsed="0.054321"/>
</kw>
<doc>Stop testtool and download its log.</doc>
<status status="PASS" start="2026-04-05T00:36:15.988952" elapsed="0.391044"/>
</kw>
<arg>NetconfKeywords.Stop_Testtool</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:15.988568" elapsed="0.391522"/>
</kw>
<doc>Teardown the test infrastructure, perform cleanup and release all resources.</doc>
<status status="PASS" start="2026-04-05T00:36:15.988025" elapsed="0.392178"/>
</kw>
<doc>netconf-connector CRUD test suite.

Copyright (c) 2017 Lumina Networks, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html


Perform basic operations (Create, Read, Update and Delete or CRUD) on device
data mounted onto a netconf connector using RPC for node addition and see if
they work.

FIXME: Replace the BuiltIn.Should_[Not_]Contain instances in the test cases
that check the car list related data with calls to keywords of a Resource
aimed at getting interesting pieces of data from the XML files and checking
them against expected data sets. See MDSAL/northbound.robot suite for
additional information.</doc>
<status status="PASS" start="2026-04-05T00:35:42.840978" elapsed="33.539289"/>
</suite>
<suite id="s1-s4-s2" name="CRUD" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/CRUD.robot">
<kw name="Setup_Everything" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.467521" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:16.463355" elapsed="0.004214"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-05T00:36:16.463136" elapsed="0.004494"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.472502" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-05T00:36:16.468702" elapsed="0.003828"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-05T00:36:16.472728" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:16.472614" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:16.472590" elapsed="0.000207"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.473302" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:16.472949" elapsed="0.000395"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.473872" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-05T00:36:16.473518" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-05T00:36:16.474441" elapsed="0.000283"/>
</kw>
<msg time="2026-04-05T00:36:16.474838" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:16.474883" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:16.474088" elapsed="0.000818"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.475456" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:16.475070" elapsed="0.000414"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.476455" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:16.476176" elapsed="0.000307"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.476879" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:16.476627" elapsed="0.000278"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.477344" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:16.477058" elapsed="0.000313"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:16.480627" elapsed="0.000210"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.481315" level="INFO">${member_ip} = 10.30.170.184</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:16.480993" elapsed="0.000349"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:16.481519" elapsed="0.000233"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.482579" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:16.482266" elapsed="0.000340"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:36:16.482650" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:36:16.482804" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:36:16.481946" elapsed="0.000883"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:16.483567" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4cd1eea10&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:36:16.482978" elapsed="0.000720"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:16.483858" elapsed="0.000191"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-05T00:36:16.479874" elapsed="0.004234"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:16.479685" elapsed="0.004467"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-05T00:36:16.477439" elapsed="0.006744"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.484760" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:16.484341" elapsed="0.000462"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.485355" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.184'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:16.484960" elapsed="0.000437"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.485951" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:16.485570" elapsed="0.000423"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-05T00:36:16.475733" elapsed="0.010316"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-05T00:36:16.468346" elapsed="0.017776"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:16.486300" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:16.486187" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:16.486169" elapsed="0.000197"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.489403" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:16.489032" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.489893" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:16.489600" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:16.489963" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:16.490146" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:16.488713" elapsed="0.001458"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:16.491142" level="INFO">${member_ip} = 10.30.170.184</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:16.490882" elapsed="0.000286"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:16.491861" level="INFO">index=8
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:16.491959" level="INFO">${current_connection} = index=8
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:16.491743" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:16.495485" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:16.494821" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:16.494778" elapsed="0.000882"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:16.496252" level="INFO">index=8
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:16.496547" level="INFO">${current_ssh_connection} = index=8
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:16.495928" elapsed="0.000721"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.497546" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.184" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:16.496911" elapsed="0.000806"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:16.498769" level="INFO">${conn_id} = 10</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:16.497984" elapsed="0.000887"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:36:16.500367" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:36:16.500529" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:36:16.500098" elapsed="0.000457"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:16.500757" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:36:16.502174" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:36:17.130931" 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 Apr  5 00:36:16 UTC 2026

  System load:  0.59               Processes:             128
  Usage of /:   11.1% of 77.35GB   Users logged in:       1
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:35:45 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:36:16.501827" elapsed="0.629279"/>
</kw>
<msg time="2026-04-05T00:36:17.131196" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:16.501463" elapsed="0.629829"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:36:16.499366" elapsed="0.632294"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:17.132609" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-05T00:36:17.145471" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-05T00:36:17.145862" level="INFO">${stdout} = </msg>
<msg time="2026-04-05T00:36:17.146062" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:17.132056" elapsed="0.014144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:36:17.146613" elapsed="0.000751"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:17.149689" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:17.148477" elapsed="0.001566"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-05T00:36:17.151081" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:17.150384" elapsed="0.000868"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:17.150275" elapsed="0.001128"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-05T00:36:17.152300" elapsed="0.000174"/>
</return>
<status status="PASS" start="2026-04-05T00:36:17.151740" elapsed="0.000848"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:17.151653" elapsed="0.001091"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-05T00:36:17.152943" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:17.158990" elapsed="0.000155"/>
</kw>
<msg time="2026-04-05T00:36:17.159190" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:17.158112" elapsed="0.001174"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:17.159556" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:17.159820" elapsed="0.000034"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:17.154211" elapsed="0.005759"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-05T00:36:16.493758" elapsed="0.666467"/>
</kw>
<msg time="2026-04-05T00:36:17.160370" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:16.493110" elapsed="0.667426"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:36:16.492639" elapsed="0.668000"/>
</kw>
<msg time="2026-04-05T00:36:17.160682" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:16.492135" elapsed="0.668604"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:17.164074" elapsed="0.000161"/>
</kw>
<msg time="2026-04-05T00:36:17.164279" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:17.163628" elapsed="0.000712"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:17.164515" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:17.164676" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:17.161046" elapsed="0.003712"/>
</kw>
<msg time="2026-04-05T00:36:17.164856" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-05T00:36:16.491378" elapsed="0.673503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:17.165300" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:17.165054" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:36:17.165383" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-05T00:36:16.490535" elapsed="0.674990"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:16.490346" elapsed="0.675255"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:16.490223" elapsed="0.675419"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-05T00:36:16.486637" elapsed="0.679069"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-05T00:36:17.165861" elapsed="0.000212"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:17.179649" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:17.179539" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:17.179519" elapsed="0.000199"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:17.179986" level="INFO">index=8
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:17.180091" level="INFO">${current_ssh_connection_object} = index=8
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:17.179868" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:17.180538" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:17.180263" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:17.180975" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:17.180730" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:17.181773" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-05T00:36:17.181541" elapsed="0.000346">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-05T00:36:17.181991" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-05T00:36:17.182036" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:17.181171" elapsed="0.000888"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:17.182351" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:17.182134" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:17.182116" elapsed="0.000347"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:17.183222" level="INFO">${ip_address} = 10.30.170.184</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:17.182956" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-05T00:36:17.183295" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:17.183459" level="INFO">${odl_ip} = 10.30.170.184</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-05T00:36:17.182667" elapsed="0.000817"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:17.183642" elapsed="0.000431"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:17.184342" level="INFO">index=11
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:17.184455" level="INFO">${karaf_connection_object} = index=11
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:17.184239" elapsed="0.000244"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:17.184628" elapsed="0.002362"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-05T00:36:17.187415" level="INFO">Logging into '10.30.170.184:8101' as 'karaf'.</msg>
<msg time="2026-04-05T00:36:17.382596" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-05T00:36:17.187152" elapsed="0.195623"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:17.387494" elapsed="0.000249"/>
</kw>
<msg time="2026-04-05T00:36:17.387896" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:17.386645" elapsed="0.001335"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:17.388137" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:17.388295" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:17.384186" elapsed="0.004195"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:17.383378" elapsed="0.005069"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-05T00:36:17.179236" elapsed="0.209268"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:17.166926" elapsed="0.221629"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:17.166523" elapsed="0.222087"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:17.166293" elapsed="0.222494"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-05T00:36:17.166135" elapsed="0.222696"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-05T00:36:16.467915" elapsed="0.920989"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:17.391600" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:17.391474" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:17.391446" elapsed="0.000231"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:17.396621" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:17.396514" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:17.396495" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:17.397664" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:17.397249" elapsed="0.000441"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:17.398169" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:17.397848" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:17.398238" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:17.398390" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:17.396917" elapsed="0.001498"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:17.403670" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:17.403561" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:17.403543" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:17.405041" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:17.404864" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:17.404846" elapsed="0.000331"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:17.405762" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:17.405319" elapsed="0.000484"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:17.406273" level="INFO">${current_connection_index} = 8</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:17.406035" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:17.445144" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "n "e "t "[78Cc "[A[78Co</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:17.407960" elapsed="0.037546"/>
</kw>
<msg time="2026-04-05T00:36:17.445863" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:17.446142" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:17.406553" elapsed="0.039710"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:17.502847" level="INFO">"n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "n "e "t "c "o "n "f "/ "C "R "U "D "/ "C "R "U "D ". "r "o "b "[78Co "[A[78Ct
 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:17.448842" elapsed="0.054236"/>
</kw>
<msg time="2026-04-05T00:36:17.503251" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:17.503325" level="INFO">${message_wait} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:17.446875" elapsed="0.056501"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:17.503915" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:17.503568" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:17.503545" elapsed="0.000542"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:17.504813" level="INFO"> "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "n "e "t "c "o "n "f "/ "C "R "U "D "/ "C "R "U "D ". "r "o "b "[78Co "[A[78Ct
 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:17.504234" elapsed="0.000697"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:17.505377" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:17.505066" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:17.505045" elapsed="0.000525"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:17.505605" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:17.508098" elapsed="0.000150"/>
</kw>
<msg time="2026-04-05T00:36:17.508292" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:17.507552" elapsed="0.000805"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:17.508573" elapsed="0.000025"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:17.508777" elapsed="0.000026"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:17.506831" elapsed="0.002115"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:17.505887" elapsed="0.003152"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:17.404519" elapsed="0.104618"/>
</kw>
<msg time="2026-04-05T00:36:17.509230" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:17.509273" level="INFO">${message} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:17.403889" elapsed="0.105430"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:17.509710" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:17.509397" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:17.509378" elapsed="0.000420"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:17.510240" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:17.510669" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:17.510745" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:17.403258" elapsed="0.107596"/>
</kw>
<msg time="2026-04-05T00:36:17.510946" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:17.510990" level="INFO">${output} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:17.398815" elapsed="0.112212"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:17.511494" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:17.511186" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:17.511166" elapsed="0.000409"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:17.398672" elapsed="0.112926"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:17.398490" elapsed="0.113138"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:17.396193" elapsed="0.115490"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-05T00:36:17.389541" elapsed="0.122196"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:17.389063" elapsed="0.122719"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-05T00:36:16.462831" elapsed="1.049006"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:17.512281" level="INFO">Creating Session using : alias=operational, url=http://10.30.170.184:8181/rests/data, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4cce9da10&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>operational</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}${REST_API}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:36:17.511988" elapsed="0.000509"/>
</kw>
<kw name="Setup_NetconfKeywords" owner="NetconfKeywords">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:17.513302" level="INFO">${tmp} = {}</msg>
<var>${tmp}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:17.513015" elapsed="0.000313"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:17.517410" level="INFO">${NetconfKeywords__mounted_device_types} = {}</msg>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${tmp}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:17.513502" elapsed="0.003967"/>
</kw>
<if>
<branch type="IF" condition="${create_session_for_templated_requests}">
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:17.521694" level="INFO">Creating Session using : alias=default, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4be6aba10&gt;, timeout=2, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:36:17.521291" elapsed="0.000505"/>
</kw>
<arg>timeout=2</arg>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-05T00:36:17.520888" elapsed="0.000976"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:17.517540" elapsed="0.004354"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:17.517522" elapsed="0.004397"/>
</if>
<kw name="Initialize_Artifact_Deployment_And_Usage" owner="NexusKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:17.526939" level="INFO">${odl_connection} = 12</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:17.526541" elapsed="0.000425"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:36:17.528677" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:36:17.528754" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:36:17.528369" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:17.528930" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:36:17.530093" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:36:17.864274" 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 Apr  5 00:36:16 UTC 2026

  System load:  0.59               Processes:             128
  Usage of /:   11.1% of 77.35GB   Users logged in:       1
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:36:17 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:36:17.529779" elapsed="0.334686"/>
</kw>
<msg time="2026-04-05T00:36:17.864552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:17.529409" elapsed="0.335233"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:36:17.527939" elapsed="0.336833"/>
</kw>
<msg time="2026-04-05T00:36:17.864931" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:17.527550" elapsed="0.337434"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:36:17.527199" elapsed="0.337865"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-05T00:36:17.865119" elapsed="0.000051"/>
</return>
<msg time="2026-04-05T00:36:17.865354" level="INFO">${odl} = 12</msg>
<var>${odl}</var>
<doc>Open a connection to the ODL system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:36:17.526236" elapsed="0.339144"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-05T00:36:17.876163" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-05T00:36:17.884324" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../../tools/deployment/search.sh' -&gt; '/home/jenkins//search.sh'</msg>
<arg>/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../../tools/deployment/search.sh</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-05T00:36:17.865632" elapsed="0.018861"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:36:17.884846" elapsed="0.000530"/>
</kw>
<if>
<branch type="IF" condition="not (${tools_system_connect})">
<return>
<status status="NOT RUN" start="2026-04-05T00:36:17.885887" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:17.885588" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:17.885536" elapsed="0.000496"/>
</if>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:17.894086" level="INFO">${tools_connection} = 13</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:17.893526" elapsed="0.000597"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:36:17.896453" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:36:17.896533" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:36:17.896145" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:17.896712" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:36:17.897906" level="INFO">Logging into '10.30.170.167:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:36:18.197975" 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 Apr  5 00:35:44 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:35:44 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-1-docker-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:36:17.897583" elapsed="0.300561"/>
</kw>
<msg time="2026-04-05T00:36:18.198233" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:17.897206" elapsed="0.301113"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:36:17.895574" elapsed="0.302884"/>
</kw>
<msg time="2026-04-05T00:36:18.198514" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:17.894886" elapsed="0.303677"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-05T00:36:17.894396" elapsed="0.304248"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-05T00:36:18.198706" elapsed="0.000050"/>
</return>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:36:17.892983" elapsed="0.305917"/>
</kw>
<doc>Places search utility to ODL system, which will be needed for version detection.
By default also initialize a SSH connection to Tools system,
as following Keywords assume a working connection towards target system.</doc>
<status status="PASS" start="2026-04-05T00:36:17.522173" elapsed="0.676788"/>
</kw>
<doc>Setup the environment for the other keywords of this Resource to work properly.</doc>
<status status="PASS" start="2026-04-05T00:36:17.512759" elapsed="0.686259"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.199880" level="INFO">${device_type} = full-uri-device</msg>
<var>${device_type}</var>
<arg>"""${USE_NETCONF_CONNECTOR}""" == """True"""</arg>
<arg>default</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:18.199268" elapsed="0.000640"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.202822" level="INFO">${device_type} = full-uri-device</msg>
<arg>${device_type}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:18.200090" elapsed="0.002776"/>
</kw>
<doc>Initialize SetupUtils. Setup everything needed for the test cases.</doc>
<status status="PASS" start="2026-04-05T00:36:16.462539" elapsed="1.740385"/>
</kw>
<test id="s1-s4-s2-t1" name="Start_Testtool" line="45">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:18.206335" elapsed="0.000242"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:18.206073" elapsed="0.000558"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:18.207723" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:18.207574" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.207547" elapsed="0.000252"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:18.212686" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:18.212580" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.212561" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.213755" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:18.213354" elapsed="0.000428"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.214235" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:18.213939" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:18.214304" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:18.214477" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:18.212983" elapsed="0.001519"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:18.219999" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:18.219891" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.219872" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:18.221340" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:18.221233" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.221214" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:18.221990" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:18.221581" elapsed="0.000436"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:18.222465" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:18.222175" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:18.257649" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:18.223045" elapsed="0.035191"/>
</kw>
<msg time="2026-04-05T00:36:18.259192" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:18.259298" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:18.222651" elapsed="0.036729"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:18.285010" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "S "t "a "r "t "_ "T "e "s "t "t "o "o "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:18.261092" elapsed="0.024115"/>
</kw>
<msg time="2026-04-05T00:36:18.285391" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:18.285457" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "S "t "a "r "t "_ "T "e "s "t "t "o "o "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m        ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:18.259969" elapsed="0.025527"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:18.285881" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:18.285607" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.285573" elapsed="0.000421"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.286581" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "S "t "a "r "t "_ "T "e "s "t "t "o "o "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:18.286142" elapsed="0.000509"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:18.286937" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:18.286721" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.286701" elapsed="0.000435"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:18.287179" elapsed="0.000052"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:18.290904" elapsed="0.000168"/>
</kw>
<msg time="2026-04-05T00:36:18.291151" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:18.290090" elapsed="0.001182"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:18.292417" elapsed="0.000059"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:18.293553" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:18.288269" elapsed="0.005408"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:18.287570" elapsed="0.006237"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:18.220928" elapsed="0.072985"/>
</kw>
<msg time="2026-04-05T00:36:18.294014" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:18.294060" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "S "t "a "r "t "_ "T "e "s "t "t "o "o "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m        ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:18.220213" elapsed="0.073891"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:18.294296" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:18.294187" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.294168" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:18.294848" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:18.295209" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:18.295282" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:18.219533" elapsed="0.075866"/>
</kw>
<msg time="2026-04-05T00:36:18.295544" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:18.295590" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "S "t "a "r "t "_ "T "e "s "t "t "o "o "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m        ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:18.214900" elapsed="0.080733"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:18.295996" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:18.295716" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.295698" elapsed="0.000376"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:18.214754" elapsed="0.081344"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:18.214566" elapsed="0.081571"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:18.212202" elapsed="0.084004"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:18.207236" elapsed="0.089037"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:18.206776" elapsed="0.089548"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:18.203777" elapsed="0.092608"/>
</kw>
<kw name="Install_And_Start_Testtool" owner="NetconfKeywords">
<kw name="Deploy_Test_Tool" owner="NexusKeywords">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.317628" level="INFO">${name_prefix} = netconf-testtool-</msg>
<var>${name_prefix}</var>
<arg>${artifact}-</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:18.317302" elapsed="0.000354"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.318163" level="INFO">${extension} = jar</msg>
<var>${extension}</var>
<arg>'${component}'=='odl-micro'</arg>
<arg>tar</arg>
<arg>jar</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:18.317820" elapsed="0.000370"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.318766" level="INFO">${name_suffix} = -executable.jar</msg>
<var>${name_suffix}</var>
<arg>"${suffix}" != ""</arg>
<arg>-${suffix}.${extension}</arg>
<arg>.${extension}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:18.318354" elapsed="0.000439"/>
</kw>
<kw name="Deploy_Artifact" owner="NexusKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_url}""" != ""</arg>
<arg>Deploy_From_Url</arg>
<arg>${explicit_url}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:18.320213" elapsed="0.000334"/>
</kw>
<kw name="Fetch From Left" owner="String">
<msg time="2026-04-05T00:36:18.320922" level="INFO">${urlbase} = https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot</msg>
<var>${urlbase}</var>
<arg>${BUNDLE_URL}</arg>
<arg>/org/opendaylight</arg>
<doc>Returns contents of the ``string`` before the first occurrence of ``marker``.</doc>
<status status="PASS" start="2026-04-05T00:36:18.320707" elapsed="0.000242"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.321508" level="INFO">${urlbase} = https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot</msg>
<var>${urlbase}</var>
<arg>'${urlbase}' != '${BUNDLE_URL}'</arg>
<arg>${urlbase}</arg>
<arg>${fallback_url}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:18.321107" elapsed="0.000428"/>
</kw>
<kw name="Run_Keyword_If_At_Most_Magnesium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_At_Most" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &lt;= ${Stream_dict}[${upper_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:18.339686" elapsed="0.000423"/>
</kw>
<arg>magnesium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${upper_bound} to titanium and in case titanium is at most ${upper_bound},
run Collections.Remove_Values_From_List [['mdsal', 'odlparent', 'yangtools', 'carpeople', 'netconf', 'bgpcep'], 'carpeople'] {} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:36:18.339215" elapsed="0.000964"/>
</kw>
<msg time="2026-04-05T00:36:18.340233" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_At_Most</arg>
<arg>magnesium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:18.330815" elapsed="0.009469"/>
</kw>
<arg>Collections.Remove_Values_From_List</arg>
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>carpeople</arg>
<doc>Compare magnesium to titanium and in case titanium is at most magnesium,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:36:18.330411" elapsed="0.009949"/>
</kw>
<kw name="Run_Keyword_If_At_Most_Aluminium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_At_Most" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &lt;= ${Stream_dict}[${upper_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:18.358457" elapsed="0.000439"/>
</kw>
<arg>aluminium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${upper_bound} to titanium and in case titanium is at most ${upper_bound},
run Collections.Remove_Values_From_List [['mdsal', 'odlparent', 'yangtools', 'carpeople', 'netconf', 'bgpcep'], 'netconf'] {} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:36:18.357980" elapsed="0.000986"/>
</kw>
<msg time="2026-04-05T00:36:18.359011" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_At_Most</arg>
<arg>aluminium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:18.349591" elapsed="0.009469"/>
</kw>
<arg>Collections.Remove_Values_From_List</arg>
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>netconf</arg>
<doc>Compare aluminium to titanium and in case titanium is at most aluminium,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:36:18.349186" elapsed="0.009947"/>
</kw>
<kw name="Run_Keyword_If_At_Most_Silicon" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_At_Most" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &lt;= ${Stream_dict}[${upper_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:18.377765" elapsed="0.000401"/>
</kw>
<arg>silicon</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${upper_bound} to titanium and in case titanium is at most ${upper_bound},
run Collections.Remove_Values_From_List [['mdsal', 'odlparent', 'yangtools', 'carpeople', 'netconf', 'bgpcep'], 'bgpcep'] {} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:36:18.377295" elapsed="0.000939"/>
</kw>
<msg time="2026-04-05T00:36:18.378279" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_At_Most</arg>
<arg>silicon</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:18.368939" elapsed="0.009389"/>
</kw>
<arg>Collections.Remove_Values_From_List</arg>
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>bgpcep</arg>
<doc>Compare silicon to titanium and in case titanium is at most silicon,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:36:18.368547" elapsed="0.009854"/>
</kw>
<if>
<branch type="IF" condition="'${build_version}'=='${EMPTY}'">
<kw name="NexusKeywords__Detect_Version_To_Pull" owner="NexusKeywords">
<kw name="NexusKeywords__Get_Items_To_Look_At" owner="NexusKeywords">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${COMPONENT_MAPPING}</arg>
<arg>${component}</arg>
<arg>Component not supported by NexusKeywords version detection: ${component}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:18.381382" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${COMPONENT_MAPPING}</arg>
<arg>${component}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:18.382146" elapsed="0.000180"/>
</kw>
<msg time="2026-04-05T00:36:18.382374" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Collections.Get_From_Dictionary</arg>
<arg>${COMPONENT_MAPPING}</arg>
<arg>${component}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:18.381809" elapsed="0.000629"/>
</kw>
<msg time="2026-04-05T00:36:18.382540" level="INFO">${itemlist} = netconf-api</msg>
<var>${itemlist}</var>
<arg>${component}</arg>
<doc>Get a list of items that might contain the version number that we are looking for.</doc>
<status status="PASS" start="2026-04-05T00:36:18.381072" elapsed="0.001492"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:18.382854" level="INFO">index=13
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:18.382954" level="INFO">${current_ssh_connection} = index=13
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:18.382725" elapsed="0.000304"/>
</kw>
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:18.387839" level="INFO">${odl_connection} = 14</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:18.387417" elapsed="0.000461"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.389923" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:36:18.390000" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:36:18.389594" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:18.390180" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:36:18.391983" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:36:18.731801" 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 Apr  5 00:36:16 UTC 2026

  System load:  0.59               Processes:             128
  Usage of /:   11.1% of 77.35GB   Users logged in:       1
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:36:17 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:36:18.391110" elapsed="0.340825"/>
</kw>
<msg time="2026-04-05T00:36:18.732058" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:18.390751" elapsed="0.341379"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:36:18.388854" elapsed="0.343391"/>
</kw>
<msg time="2026-04-05T00:36:18.732296" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:18.388452" elapsed="0.343892"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:36:18.388061" elapsed="0.344357"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-05T00:36:18.732479" elapsed="0.000039"/>
</return>
<doc>Open a connection to the ODL system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:36:18.387075" elapsed="0.345559"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:18.733097" level="INFO">Executing command 'sh search.sh /tmp/karaf-0.22.2-SNAPSHOT/system netconf-api'.</msg>
<msg time="2026-04-05T00:36:18.776129" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:18.776402" level="INFO">${version} = 9.0.2
org/opendaylight/netconf</msg>
<msg time="2026-04-05T00:36:18.776548" level="INFO">${result} = 0</msg>
<var>${version}</var>
<var>${result}</var>
<arg>sh search.sh ${WORKSPACE}/${BUNDLEFOLDER}/system ${itemlist}</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:18.732828" elapsed="0.043774"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:36:18.776965" elapsed="0.000516"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:18.783140" elapsed="0.000197"/>
</kw>
<msg time="2026-04-05T00:36:18.783395" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:18.782325" elapsed="0.001161"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:18.783705" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:18.783925" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:18.778026" elapsed="0.006015"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.784682" level="INFO">9.0.2
org/opendaylight/netconf</msg>
<arg>${version}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:18.784295" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="${result}!=0">
<kw name="Fail" owner="BuiltIn">
<arg>Component "${component}": searching for "${itemlist}" found no version, cannot locate test tool.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:18.785153" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:18.784853" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.784821" elapsed="0.000441"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-05T00:36:18.785809" level="INFO">${version} = 9.0.2</msg>
<msg time="2026-04-05T00:36:18.785871" level="INFO">${location} = org/opendaylight/netconf</msg>
<var>${version}</var>
<var>${location}</var>
<arg>${version}</arg>
<arg>max_split=1</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-05T00:36:18.785485" elapsed="0.000417"/>
</kw>
<return>
<value>${version}</value>
<value>${location}</value>
<status status="PASS" start="2026-04-05T00:36:18.786049" elapsed="0.000043"/>
</return>
<msg time="2026-04-05T00:36:18.786320" level="INFO">${version} = 9.0.2</msg>
<msg time="2026-04-05T00:36:18.786380" level="INFO">${location} = org/opendaylight/netconf</msg>
<var>${version}</var>
<var>${location}</var>
<arg>${component}</arg>
<doc>Determine the exact Nexus directory to be used as a source for a particular test tool
Figure out what version of the tool needs to be pulled out of the
Nexus by looking at the version directory of the subsystem from
which the tool is being pulled. This code is REALLY UGLY but there
is no way around it until the bug
https://bugs.opendaylight.org/show_bug.cgi?id=5206 gets fixed.
I also don't want to depend on maven-metadata-local.xml and other
bits and pieces of ODL distribution which are not required for ODL
to function properly.</doc>
<status status="PASS" start="2026-04-05T00:36:18.380652" elapsed="0.405760"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:18.378491" elapsed="0.408021"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${version}</var>
<var>${location}</var>
<arg>${build_version}</arg>
<arg>${build_location}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:18.786759" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:18.786549" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.378471" elapsed="0.408401"/>
</if>
<if>
<branch type="IF" condition="'SNAPSHOT' in '${version}'">
<kw name="Remove Values From List" owner="Collections">
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>netconf</arg>
<arg>bgpcep</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:18.787247" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:18.786950" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.786928" elapsed="0.000433"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.788120" level="INFO">${is_staged} = "FALSE"</msg>
<var>${is_staged}</var>
<arg>"opendaylight.release" not in '${urlbase}' and "opendaylight.snapshot" not in '${urlbase}'</arg>
<arg>"TRUE"</arg>
<arg>"FALSE"</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:18.787584" elapsed="0.000572"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.789023" level="INFO">${is_mri_component} = "TRUE"</msg>
<var>${is_mri_component}</var>
<arg>'${component}' in ${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>"TRUE"</arg>
<arg>"FALSE"</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:18.788443" elapsed="0.000608"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.789623" level="INFO">${urlbase} = https://nexus.opendaylight.org/content/repositories/opendaylight.release</msg>
<var>${urlbase}</var>
<arg>${is_mri_component} == "TRUE" and ${is_staged} == "FALSE"</arg>
<arg>${NEXUS_RELEASE_BASE_URL}</arg>
<arg>${urlbase}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:18.789213" elapsed="0.000437"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.790170" level="INFO">${url} = https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/netconf/netconf-testtool/9.0.2</msg>
<var>${url}</var>
<arg>${urlbase}/${location}/${artifact}/${version}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:18.789806" elapsed="0.000391"/>
</kw>
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:18.792116" level="INFO">Executing command 'curl -L https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml'.</msg>
<msg time="2026-04-05T00:36:18.875868" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:18.876116" level="INFO">${stdout} = &lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.rel...</msg>
<msg time="2026-04-05T00:36:18.876221" level="INFO">${stderr} =   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0   ...</msg>
<msg time="2026-04-05T00:36:18.876339" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:18.791940" elapsed="0.084450"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.878192" level="INFO">Length is 316.</msg>
<msg time="2026-04-05T00:36:18.878404" level="FAIL">'  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100  1080    0  1080    0     0  17245      0 --:--:-- --:--:-- --:--:-- 17419' should be empty.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-05T00:36:18.877596" elapsed="0.000999">'  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100  1080    0  1080    0     0  17245      0 --:--:-- --:--:-- --:--:-- 17419' should be empty.</status>
</kw>
<msg time="2026-04-05T00:36:18.878826" level="INFO">${emptiness_status} = FAIL</msg>
<msg time="2026-04-05T00:36:18.878923" level="INFO">${result} = '  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0  ...</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:18.876822" elapsed="0.002153"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.880808" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:18.879336" elapsed="0.001532"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.883283" level="INFO">&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/title&gt;
    &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&gt;

    &lt;link rel="icon" type="image/png" href="https://nexus.opendaylight.org/favicon.png"&gt;
    &lt;!--[if IE]&gt;
    &lt;link rel="SHORTCUT ICON" href="https://nexus.opendaylight.org/favicon.ico"/&gt;
    &lt;![endif]--&gt;

    &lt;link rel="stylesheet" href="https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02" type="text/css" media="screen" title="no title" charset="utf-8"&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/h1&gt;
    &lt;p&gt;Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/p&gt;
  &lt;/body&gt;
&lt;/html&gt;</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:18.882733" elapsed="0.000794"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.884485" level="INFO">  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100  1080    0  1080    0     0  17245      0 --:--:-- --:--:-- --:--:-- 17419</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:18.883867" elapsed="0.000727"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.885238" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:18.884941" elapsed="0.000340"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-05T00:36:18.881826" elapsed="0.003509"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:18.881041" elapsed="0.004329"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.880996" elapsed="0.004399"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-05T00:36:18.885567" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:18.885468" elapsed="0.000143"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.885450" elapsed="0.000184"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-05T00:36:18.885771" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:18.885684" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.885669" elapsed="0.000184"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:18.885991" elapsed="0.000021"/>
</kw>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-05T00:36:18.791337" elapsed="0.094771"/>
</kw>
<msg time="2026-04-05T00:36:18.886167" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:18.790798" elapsed="0.095415"/>
</kw>
<msg time="2026-04-05T00:36:18.886357" level="INFO">${metadata} = &lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.rel...</msg>
<var>${metadata}</var>
<arg>curl -L ${url}/maven-metadata.xml</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="PASS" start="2026-04-05T00:36:18.790398" elapsed="0.095986"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:18.888707" level="INFO">Executing command 'echo "&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/title&gt;
    &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&gt;

    &lt;link rel="icon" type="image/png" href="https://nexus.opendaylight.org/favicon.png"&gt;
    &lt;!--[if IE]&gt;
    &lt;link rel="SHORTCUT ICON" href="https://nexus.opendaylight.org/favicon.ico"/&gt;
    &lt;![endif]--&gt;

    &lt;link rel="stylesheet" href="https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02" type="text/css" media="screen" title="no title" charset="utf-8"&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/h1&gt;
    &lt;p&gt;Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/p&gt;
  &lt;/body&gt;
&lt;/html&gt;" | grep value | head -n 1 | cut -d '&gt;' -f 2 | cut -d '&lt;' -f 1'.</msg>
<msg time="2026-04-05T00:36:18.926032" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:18.926280" level="INFO">${stdout} = &lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.rel...</msg>
<msg time="2026-04-05T00:36:18.926382" level="INFO">${stderr} = bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text...</msg>
<msg time="2026-04-05T00:36:18.926516" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:18.888528" elapsed="0.038040"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.928304" level="INFO">Length is 253.</msg>
<msg time="2026-04-05T00:36:18.928573" level="FAIL">'bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory' should be empty.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-05T00:36:18.927731" elapsed="0.000993">'bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory' should be empty.</status>
</kw>
<msg time="2026-04-05T00:36:18.928956" level="INFO">${emptiness_status} = FAIL</msg>
<msg time="2026-04-05T00:36:18.929052" level="INFO">${result} = 'bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=tex...</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:18.926960" elapsed="0.002147"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.930547" level="INFO">${success} = False</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:18.929588" elapsed="0.001017"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.933112" level="INFO">&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/title&gt;
    &lt;meta http-equiv=Content-Type content=text/html</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:18.932521" elapsed="0.000662"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.933784" level="INFO">bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:18.933390" elapsed="0.000459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.934409" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:18.934052" elapsed="0.000440"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-05T00:36:18.931567" elapsed="0.003002"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:18.930780" elapsed="0.003839"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.930736" elapsed="0.003918"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-05T00:36:18.934871" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:18.934731" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.934708" elapsed="0.000256"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-05T00:36:18.935155" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:18.935036" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:18.935014" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.935925" level="FAIL">Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</msg>
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-05T00:36:18.935450" elapsed="0.000565">Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</status>
</kw>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="FAIL" start="2026-04-05T00:36:18.887918" elapsed="0.048270">Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</status>
</kw>
<msg time="2026-04-05T00:36:18.936270" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-05T00:36:18.887390" elapsed="0.048964"/>
</kw>
<arg>echo "${metadata}" | grep value | head -n 1 | cut -d '&gt;' -f 2 | cut -d '&lt;' -f 1</arg>
<arg>stderr_must_be_empty=${True}</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="FAIL" start="2026-04-05T00:36:18.886941" elapsed="0.049583">Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</status>
</kw>
<msg time="2026-04-05T00:36:18.936681" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-05T00:36:18.936743" level="INFO">${namepart} = Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonaty...</msg>
<var>${status}</var>
<var>${namepart}</var>
<arg>SSHKeywords.Execute_Command_Should_Pass</arg>
<arg>echo "${metadata}" | grep value | head -n 1 | cut -d '&gt;' -f 2 | cut -d '&lt;' -f 1</arg>
<arg>stderr_must_be_empty=${True}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:18.886557" elapsed="0.050222"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.937378" level="INFO">Length is 288.</msg>
<msg time="2026-04-05T00:36:18.937504" level="INFO">${length} = 288</msg>
<var>${length}</var>
<arg>${namepart}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:36:18.937006" elapsed="0.000531"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.938303" level="INFO">${namepart} = 9.0.2</msg>
<var>${namepart}</var>
<arg>"${status}" != "PASS" or ${length} == 0</arg>
<arg>${version}</arg>
<arg>${namepart}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:18.937758" elapsed="0.000581"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.939392" level="INFO">${filename} = netconf-testtool-9.0.2-executable.jar</msg>
<var>${filename}</var>
<arg>${name_prefix}${namepart}${name_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:18.938591" elapsed="0.000858"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.940001" level="INFO">netconf-testtool-9.0.2-executable.jar</msg>
<arg>${filename}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:18.939666" elapsed="0.000446"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:18.940838" level="INFO">${url} = https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/netconf/netconf-testtool/9.0.2/netconf-testtool-9.0.2-executable.jar</msg>
<var>${url}</var>
<arg>${url}/${filename}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:18.940322" elapsed="0.000562"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:18.941270" level="INFO">Executing command 'wget -q -N 'https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/netconf/netconf-testtool/9.0.2/netconf-testtool-9.0.2-executable.jar' 2&gt;&amp;1'.</msg>
<msg time="2026-04-05T00:36:19.008103" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:19.008333" level="INFO">${response} = </msg>
<msg time="2026-04-05T00:36:19.008505" level="INFO">${result} = 0</msg>
<var>${response}</var>
<var>${result}</var>
<arg>wget -q -N '${url}' 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:18.941098" elapsed="0.067466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.009507" level="INFO"/>
<arg>${response}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:19.008927" elapsed="0.000675"/>
</kw>
<if>
<branch type="IF" condition="${result} == 0">
<return>
<value>${filename}</value>
<status status="PASS" start="2026-04-05T00:36:19.009995" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-05T00:36:19.009754" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:19.009711" elapsed="0.000472"/>
</if>
<kw name="Replace String Using Regexp" owner="String">
<var>${release_url}</var>
<arg>${url}</arg>
<arg>autorelease-[0-9]{4}</arg>
<arg>opendaylight.release</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:19.010535" elapsed="0.000072"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${response}</var>
<var>${result}</var>
<arg>wget -q -N '${release_url}' 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:19.010959" elapsed="0.000046"/>
</kw>
<if>
<branch type="IF" condition="${result} != 0">
<kw name="Fail" owner="BuiltIn">
<arg>Artifact "${artifact}" in component "${component}" could not be downloaded from ${release_url} nor ${url}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:19.011505" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:19.011161" elapsed="0.000462"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:19.011125" elapsed="0.000549"/>
</if>
<return>
<value>${filename}</value>
<status status="NOT RUN" start="2026-04-05T00:36:19.011745" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:19.012055" level="INFO">${filename} = netconf-testtool-9.0.2-executable.jar</msg>
<var>${filename}</var>
<arg>${component}</arg>
<arg>${artifact}</arg>
<arg>${name_prefix}</arg>
<arg>${name_suffix}</arg>
<arg>${fallback_url}</arg>
<arg>${explicit_url}</arg>
<arg>${build_version}</arg>
<arg>${build_location}</arg>
<doc>Deploy the specified artifact from Nexus to the cwd of the machine to which the active SSHLibrary connection points.
netconf is a name part of an artifact present in system/ of ODl installation with the same version as netconf-testtool should have.
Must have https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/karaf/0.22.2-SNAPSHOT/karaf-0.22.2-20260401.071003-721.zip variable set to the URL from which the
tested ODL distribution was downloaded and this place must be
inside a repository created by a standard distribution
construction job. If this is detected to ne be the case, fallback URL is used.
If  is non-empty, Deploy_From_Utrl is called instead.
TODO: Allow deploying to a specific directory, we have SSHKeywords.Execute_Command_At_Cwd_Should_Pass now.</doc>
<status status="PASS" start="2026-04-05T00:36:18.319416" elapsed="0.692694"/>
</kw>
<return>
<value>${filename}</value>
<status status="PASS" start="2026-04-05T00:36:19.012260" elapsed="0.000058"/>
</return>
<msg time="2026-04-05T00:36:19.012667" level="INFO">${filename} = netconf-testtool-9.0.2-executable.jar</msg>
<var>${filename}</var>
<arg>netconf</arg>
<arg>netconf-testtool</arg>
<doc>Deploy a test tool.
The test tools have naming convention of the form
"&lt;repository_url&gt;/some/dir/somewhere/&lt;tool-name&gt;/&lt;tool-name&gt;-&lt;version-tag&gt;-${suffix}.jar"
where "&lt;tool-name&gt;" is the name of the tool and "&lt;version-tag&gt;" is
the version tag that is digged out of the maven metadata. This
keyword calculates ${name_prefix} and ${name_suffix} for
"Deploy_Artifact" and then calls "Deploy_Artifact" to do the real
work of deploying the artifact.</doc>
<status status="PASS" start="2026-04-05T00:36:18.311544" elapsed="0.701179"/>
</kw>
<kw name="Start_Testtool" owner="NetconfKeywords">
<kw name="NetconfKeywords__Deploy_Additional_Schemas" owner="NetconfKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:19.016167" level="INFO">Executing command 'rm -rf schemas 2&gt;&amp;1'.</msg>
<msg time="2026-04-05T00:36:19.053931" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:19.054143" level="INFO">${response} = </msg>
<var>${response}</var>
<arg>rm -rf schemas 2&gt;&amp;1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:19.015948" elapsed="0.038251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.055158" level="INFO"/>
<arg>${response}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:19.054601" elapsed="0.000647"/>
</kw>
<if>
<branch type="IF" condition="'${schemas}' == 'none'">
<return>
<value>${EMPTY}</value>
<status status="NOT RUN" start="2026-04-05T00:36:19.055679" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:19.055398" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:19.055357" elapsed="0.000471"/>
</if>
<kw name="Put Directory" owner="SSHLibrary">
<msg time="2026-04-05T00:36:19.102758" level="INFO">[chan 5] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-05T00:36:19.187228" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/yang-ext@2013-07-09.yang' -&gt; '/home/jenkins/./schemas/yang-ext@2013-07-09.yang'</msg>
<msg time="2026-04-05T00:36:19.187286" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/example-action@2016-07-07.yang' -&gt; '/home/jenkins/./schemas/example-action@2016-07-07.yang'</msg>
<msg time="2026-04-05T00:36:19.187324" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/car@2014-08-18.yang' -&gt; '/home/jenkins/./schemas/car@2014-08-18.yang'</msg>
<msg time="2026-04-05T00:36:19.187359" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/car-purchase@2014-08-18.yang' -&gt; '/home/jenkins/./schemas/car-purchase@2014-08-18.yang'</msg>
<msg time="2026-04-05T00:36:19.187392" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/ncmount-l2fib@2016-03-07.yang' -&gt; '/home/jenkins/./schemas/ncmount-l2fib@2016-03-07.yang'</msg>
<msg time="2026-04-05T00:36:19.187500" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/augment-main-a@2014-01-21.yang' -&gt; '/home/jenkins/./schemas/augment-main-a@2014-01-21.yang'</msg>
<msg time="2026-04-05T00:36:19.187540" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/ietf-netconf-monitoring@2010-10-04.yang' -&gt; '/home/jenkins/./schemas/ietf-netconf-monitoring@2010-10-04.yang'</msg>
<msg time="2026-04-05T00:36:19.187575" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/ietf-netconf-monitoring-extension@2013-12-10.yang' -&gt; '/home/jenkins/./schemas/ietf-netconf-monitoring-extension@2013-12-10.yang'</msg>
<msg time="2026-04-05T00:36:19.187610" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/people@2014-08-18.yang' -&gt; '/home/jenkins/./schemas/people@2014-08-18.yang'</msg>
<msg time="2026-04-05T00:36:19.187644" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/test@2014-10-18.yang' -&gt; '/home/jenkins/./schemas/test@2014-10-18.yang'</msg>
<msg time="2026-04-05T00:36:19.187677" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/car-people@2014-08-18.yang' -&gt; '/home/jenkins/./schemas/car-people@2014-08-18.yang'</msg>
<msg time="2026-04-05T00:36:19.187710" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/ietf-inet-types@2010-09-24.yang' -&gt; '/home/jenkins/./schemas/ietf-inet-types@2010-09-24.yang'</msg>
<msg time="2026-04-05T00:36:19.187742" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas/main@2014-01-21.yang' -&gt; '/home/jenkins/./schemas/main@2014-01-21.yang'</msg>
<arg>${schemas}</arg>
<arg>destination=./schemas</arg>
<doc>Uploads a directory, including its content, from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-05T00:36:19.056144" elapsed="0.131658"/>
</kw>
<kw name="List Directory" owner="SSHLibrary">
<msg time="2026-04-05T00:36:19.191335" level="INFO">13 items:
augment-main-a@2014-01-21.yang
car-people@2014-08-18.yang
car-purchase@2014-08-18.yang
car@2014-08-18.yang
example-action@2016-07-07.yang
ietf-inet-types@2010-09-24.yang
ietf-netconf-monitoring-extension@2013-12-10.yang
ietf-netconf-monitoring@2010-10-04.yang
main@2014-01-21.yang
ncmount-l2fib@2016-03-07.yang
people@2014-08-18.yang
test@2014-10-18.yang
yang-ext@2013-07-09.yang</msg>
<arg>./schemas</arg>
<doc>Returns and logs items in the remote ``path``, optionally filtered with ``pattern``.</doc>
<status status="PASS" start="2026-04-05T00:36:19.188027" elapsed="0.003386"/>
</kw>
<return>
<value>--schemas-dir ./schemas</value>
<status status="PASS" start="2026-04-05T00:36:19.191502" elapsed="0.000043"/>
</return>
<msg time="2026-04-05T00:36:19.191687" level="INFO">${schemas_option} = --schemas-dir ./schemas</msg>
<var>${schemas_option}</var>
<arg>${schemas}</arg>
<doc>Internal keyword for Install_And_Start_TestTool
This deploys the additional schemas if any and returns a
command line argument to be added to the testtool commandline
to tell it to load them. While this code could be integrated
into its only user, I considered the resulting code to be too
unreadable as the actions are quite different in the two
possibilities (additional schemas present versus no additional
schemas present), therefore a separate keyword is used.</doc>
<status status="PASS" start="2026-04-05T00:36:19.015197" elapsed="0.176524"/>
</kw>
<kw name="NetconfKeywords__Deploy_Custom_RPC" owner="NetconfKeywords">
<if>
<branch type="IF" condition="'${rpc_config}' == 'none'">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-05T00:36:19.192594" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-05T00:36:19.192385" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:19.192358" elapsed="0.000358"/>
</if>
<kw name="Copy_File_To_Tools_System" owner="SSHKeywords">
<arg>${TOOLS_SYSTEM_1_IP}</arg>
<arg>${rpc_config}</arg>
<arg>/tmp</arg>
<doc>Wrapper keyword to make it easier to copy a file to an Tools specific system</doc>
<status status="NOT RUN" start="2026-04-05T00:36:19.192975" elapsed="0.000034"/>
</kw>
<return>
<value>--rpc-config /tmp/customaction.xml</value>
<status status="NOT RUN" start="2026-04-05T00:36:19.193073" elapsed="0.000021"/>
</return>
<msg time="2026-04-05T00:36:19.195758" level="INFO">${rpc_config_option} = </msg>
<var>${rpc_config_option}</var>
<arg>${rpc_config}</arg>
<doc>Internal keyword for Install_And_Start_TestTool
This deploys the optional custom rpc file.
Drop out of the keyword, returning no command line argument when there
is no rpc file to deploy.</doc>
<status status="PASS" start="2026-04-05T00:36:19.192050" elapsed="0.003744"/>
</kw>
<kw name="Compose_Full_Java_Command" owner="NexusKeywords">
<kw name="Compose_Base_Java_Command" owner="NexusKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${openjdk}""" == "openjdk8"</arg>
<arg>Compose_Dilemma_Filepath</arg>
<arg>${JAVA_8_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_8_HOME_UBUNTU}/bin/java</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:19.197697" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${openjdk}""" == "openjdk11"</arg>
<arg>Compose_Dilemma_Filepath</arg>
<arg>${JAVA_11_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_11_HOME_UBUNTU}/bin/java</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:19.198367" elapsed="0.000446"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${openjdk}""" == "openjdk17"</arg>
<arg>Compose_Dilemma_Filepath</arg>
<arg>${JAVA_17_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_17_HOME_UBUNTU}/bin/java</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:19.199035" elapsed="0.000435"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Compose_Dilemma_Filepath" owner="NexusKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:19.201394" level="INFO">Executing command 'ls -lA /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2&gt;&amp;1'.</msg>
<msg time="2026-04-05T00:36:19.213494" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:19.213723" level="INFO">${out} = -rwxr-xr-x 1 root root 14456 Jan 22 23:45 /usr/lib/jvm/java-21-openjdk-amd64/bin/java</msg>
<msg time="2026-04-05T00:36:19.213821" level="INFO">${rc} = 0</msg>
<var>${out}</var>
<var>${rc}</var>
<arg>ls -lA ${specific_path} 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:19.201220" elapsed="0.012651"/>
</kw>
<if>
<branch type="IF" condition="${rc} == 0">
<return>
<value>${specific_path}</value>
<status status="PASS" start="2026-04-05T00:36:19.214287" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-05T00:36:19.214049" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:19.214005" elapsed="0.000515"/>
</if>
<return>
<value>${default_path}</value>
<status status="NOT RUN" start="2026-04-05T00:36:19.214594" elapsed="0.000032"/>
</return>
<arg>${JAVA_21_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_21_HOME_UBUNTU}/bin/java</arg>
<doc>Query active SSH connection, return specific path if it exists else default path.</doc>
<status status="PASS" start="2026-04-05T00:36:19.200674" elapsed="0.014160"/>
</kw>
<msg time="2026-04-05T00:36:19.215002" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>"""${openjdk}""" == "openjdk21"</arg>
<arg>Compose_Dilemma_Filepath</arg>
<arg>${JAVA_21_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_21_HOME_UBUNTU}/bin/java</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:19.199691" elapsed="0.015422"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${out}</var>
<var>${rc}</var>
<arg>java -version 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:19.215518" elapsed="0.000051"/>
</kw>
<if>
<branch type="IF" condition="${rc} == 0">
<return>
<value>java</value>
<status status="NOT RUN" start="2026-04-05T00:36:19.215810" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:19.215730" elapsed="0.000169"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:19.215693" elapsed="0.000254"/>
</if>
<kw name="Execute Command" owner="SSHLibrary">
<var>${java}</var>
<arg>echo $JAVA_HOME/bin/java 2&gt;&amp;1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:19.216263" elapsed="0.000046"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${out}</var>
<var>${rc}</var>
<arg>${java} -version 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:19.216762" elapsed="0.000052"/>
</kw>
<if>
<branch type="IF" condition="${rc} == 0">
<return>
<value>${java}</value>
<status status="NOT RUN" start="2026-04-05T00:36:19.216973" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:19.216924" elapsed="0.000105"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:19.216901" elapsed="0.000157"/>
</if>
<kw name="Get Environment Variable" owner="OperatingSystem">
<var>${JAVA_HOME}</var>
<arg>JAVA_HOME</arg>
<arg>${EMPTY}</arg>
<doc>Returns the value of an environment variable with the given name.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:19.217252" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${java}</var>
<arg>"""${JAVA_HOME}"""!=""</arg>
<arg>${JAVA_HOME}/bin/java</arg>
<arg>false</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:19.217515" elapsed="0.000029"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${out}</var>
<var>${rc}</var>
<arg>${java} -version 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:19.217758" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="${rc} == 0">
<return>
<value>${java}</value>
<status status="NOT RUN" start="2026-04-05T00:36:19.217929" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:19.217881" elapsed="0.000104"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:19.217859" elapsed="0.000156"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unable to find Java; specify \${JDKVERSION}, put it to your PATH or set JAVA_HOME environment variable.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:19.218198" elapsed="0.000028"/>
</kw>
<msg time="2026-04-05T00:36:19.218369" level="INFO">${base_command} = /usr/lib/jvm/java-21-openjdk-amd64/bin/java</msg>
<var>${base_command}</var>
<arg>openjdk=${openjdk}</arg>
<doc>Return string suitable for launching Java programs over SSHLibrary, depending on JRE version needed.
This requires that the SSH connection on which the command is going to be used is active as it is needed for querying files.
Commands composed for one SSH connection shall not be reused on other SSH connections as the two connections may have different Java setups.
Not directly related to Nexus, but versioned Java tools may need this.</doc>
<status status="PASS" start="2026-04-05T00:36:19.197175" elapsed="0.021228"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.219090" level="INFO">${full_command} = /usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas  --md-sal t...</msg>
<var>${full_command}</var>
<arg>${base_command} ${options}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:19.218633" elapsed="0.000494"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.219703" level="INFO">/usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas  --md-sal true</msg>
<arg>${full_command}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:19.219336" elapsed="0.000429"/>
</kw>
<return>
<value>${full_command}</value>
<status status="PASS" start="2026-04-05T00:36:19.219824" elapsed="0.000038"/>
</return>
<msg time="2026-04-05T00:36:19.220031" level="INFO">${command} = /usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas  --md-sal t...</msg>
<var>${command}</var>
<arg>${java_options} -jar ${filename} ${tool_options} --device-count ${device-count} --debug ${debug} ${schemas_option} ${rpc_config_option} --md-sal ${mdsal}</arg>
<doc>Return full Bash command to run Java with given options.
This requires that the SSH connection on which the command is going to be used is active as it is needed for querying files.
The options may include JVM options, application command line arguments, Bash redirects and other constructs.</doc>
<status status="PASS" start="2026-04-05T00:36:19.196107" elapsed="0.023960"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.220669" level="INFO">Running testtool: /usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas  --md-sal true</msg>
<arg>Running testtool: ${command}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:19.220276" elapsed="0.000456"/>
</kw>
<kw name="Get Log File Name" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.224477" level="INFO">${name} = netconf-userfeatures-txt-CRUD-CRUD</msg>
<var>${name}</var>
<arg>"""${SUITE_NAME}""".replace(" ","-").replace("/","-").replace(".","-")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:19.223968" elapsed="0.000547"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.226963" level="INFO">${suffix} = </msg>
<var>${suffix}</var>
<arg>'${testcase}' != ''</arg>
<arg>--${testcase}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:19.224779" elapsed="0.002210"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-05T00:36:19.227338" level="INFO">${date} = 2026-04-05 00:36:19.227</msg>
<var>${date}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-05T00:36:19.227155" elapsed="0.000208"/>
</kw>
<kw name="Convert Date" owner="DateTime">
<msg time="2026-04-05T00:36:19.227848" level="INFO">${timestamp} = 1775349379.227</msg>
<var>${timestamp}</var>
<arg>${date}</arg>
<arg>epoch</arg>
<doc>Converts between supported `date formats`.</doc>
<status status="PASS" start="2026-04-05T00:36:19.227526" elapsed="0.000347"/>
</kw>
<return>
<value>${testtool}--${name}${suffix}.${timestamp}.log</value>
<status status="PASS" start="2026-04-05T00:36:19.227955" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:19.228192" level="INFO">${logfile} = testtool--netconf-userfeatures-txt-CRUD-CRUD.1775349379.227.log</msg>
<var>${logfile}</var>
<arg>testtool</arg>
<doc>Get the name of the suite sanitized to be usable as a part of filename.
These names are used to constructs names of the log files produced
by the testing tools so two suites using a tool wont overwrite the
log files if they happen to run in one job.</doc>
<status status="PASS" start="2026-04-05T00:36:19.221053" elapsed="0.007165"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.232826" level="INFO">${testtool_log} = testtool--netconf-userfeatures-txt-CRUD-CRUD.1775349379.227.log</msg>
<arg>${testtool_log}</arg>
<arg>${logfile}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:19.228380" elapsed="0.004495"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:19.253235" level="INFO">/usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas  --md-sal true &gt;testtool--netconf-userfeatures-txt-CRUD-CRUD.1775349379.227.log 2&gt;&amp;1</msg>
<arg>${command} &gt;${logfile} 2&gt;&amp;1</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:19.233034" elapsed="0.020263"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.257268" level="INFO">${NetconfKeywords__testtool_device_count} = 1</msg>
<arg>${NetconfKeywords__testtool_device_count}</arg>
<arg>${device-count}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:19.253480" elapsed="0.003834"/>
</kw>
<kw name="Perform_Operation_On_Each_Device" owner="NetconfKeywords">
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-05T00:36:19.258131" level="INFO">${current_Date} = 2026-04-05 00:36:19.258</msg>
<var>${current_Date}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-05T00:36:19.257975" elapsed="0.000182"/>
</kw>
<kw name="Add Time To Date" owner="DateTime">
<msg time="2026-04-05T00:36:19.258656" level="INFO">${deadline_Date} = 2026-04-05 01:21:19.258</msg>
<var>${deadline_Date}</var>
<arg>${current_Date}</arg>
<arg>${timeout}</arg>
<doc>Adds time to date and returns the resulting date.</doc>
<status status="PASS" start="2026-04-05T00:36:19.258305" elapsed="0.000376"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.263539" level="INFO">${current_port} = 17830</msg>
<arg>${current_port}</arg>
<arg>${BASE_NETCONF_DEVICE_PORT}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:19.258845" elapsed="0.004741"/>
</kw>
<kw name="Repeat Keyword" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.264068" level="INFO">Repeating keyword, round 1/1.</msg>
<kw name="NetconfKeywords__Perform_Operation_With_Checking_On_Next_Device" owner="NetconfKeywords">
<kw name="NetconfKeywords__Check_Netconf_Test_Timeout_Not_Expired" owner="NetconfKeywords">
<if>
<branch type="IF" condition="not ${ENABLE_NETCONF_TEST_TIMEOUT}">
<return>
<status status="NOT RUN" start="2026-04-05T00:36:19.265293" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:19.265185" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:19.265167" elapsed="0.000190"/>
</if>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-05T00:36:19.265674" level="INFO">${current_Date} = 2026-04-05 00:36:19.266</msg>
<var>${current_Date}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-05T00:36:19.265519" elapsed="0.000180"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<msg time="2026-04-05T00:36:19.266158" level="INFO">${ellapsed_seconds} = 2699.992</msg>
<var>${ellapsed_seconds}</var>
<arg>${deadline_Date}</arg>
<arg>${current_Date}</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="PASS" start="2026-04-05T00:36:19.265847" elapsed="0.000337"/>
</kw>
<if>
<branch type="IF" condition="${ellapsed_seconds}&lt;0">
<kw name="Fail" owner="BuiltIn">
<arg>The global time out period expired</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:19.266515" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:19.266255" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:19.266237" elapsed="0.000356"/>
</if>
<arg>${deadline_Date}</arg>
<status status="PASS" start="2026-04-05T00:36:19.264948" elapsed="0.001690"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.267140" level="INFO">${number} = 1</msg>
<var>${number}</var>
<arg>${current_port}-${BASE_NETCONF_DEVICE_PORT}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:19.266780" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="NetconfKeywords__Wait_Device_Is_Up_And_Running" owner="NetconfKeywords">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.268582" level="INFO">${number} = 1</msg>
<var>${number}</var>
<arg>'${device_name}'.split('-').pop()</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:19.268229" elapsed="0.000379"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Up_And_Running" owner="NetconfKeywords">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.270543" level="INFO">${device-port} = 17830</msg>
<var>${device-port}</var>
<arg>${FIRST_TESTTOOL_PORT}+${device-number}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:19.269739" elapsed="0.000831"/>
</kw>
<kw name="NetconfKeywords__Check_Device_Is_Up" owner="NetconfKeywords">
<kw name="Count_Port_Occurences" owner="SSHKeywords">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Check_And_Install_Netstat" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:19.273571" level="INFO">Executing command 'netstat --version'.</msg>
<msg time="2026-04-05T00:36:19.285852" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:19.286065" level="INFO">${netstat_installed} = net-tools 2.10-alpha
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others
+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX
AF: (inet) +UNIX +INET...</msg>
<var>${netstat_installed}</var>
<arg>netstat --version</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:19.273474" elapsed="0.012649"/>
</kw>
<if>
<branch type="IF" condition="'${netstat_installed}' is not string and '${netstat_installed}' != '0'">
<kw name="Install_Netstat" owner="SSHKeywords">
<doc>Install netstat if it is not already installed.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:19.287065" elapsed="0.000312"/>
</kw>
<msg time="2026-04-05T00:36:19.287496" level="FAIL">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</msg>
<status status="FAIL" start="2026-04-05T00:36:19.286285" elapsed="0.001399">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</branch>
<status status="FAIL" start="2026-04-05T00:36:19.286241" elapsed="0.001542">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</if>
<doc>Check if netstat is installed and install it if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:19.273186" elapsed="0.014870">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</kw>
<arg>Check_And_Install_Netstat</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:19.272666" elapsed="0.015603"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:19.289968" level="INFO">Executing command 'netstat -punta 2&gt; /dev/null | grep -E ":17830 .+ LISTEN .+java" | wc -l'.</msg>
<msg time="2026-04-05T00:36:19.347313" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:19.347801" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${NETSTAT_COMMAND} 2&gt; /dev/null | grep -E ":${port} .+ ${state} .+${name}" | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:19.289225" elapsed="0.058656"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:36:19.348054" elapsed="0.000132"/>
</return>
<msg time="2026-04-05T00:36:19.348904" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${last-port}</arg>
<arg>LISTEN</arg>
<arg>java</arg>
<doc>Run 'netstat' on the remote machine and count occurences of given port in the given state connected to process with the given name.</doc>
<status status="PASS" start="2026-04-05T00:36:19.271374" elapsed="0.077626"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-05T00:36:19.351372" level="FAIL">0 != 1</msg>
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="FAIL" start="2026-04-05T00:36:19.349621" elapsed="0.002093">0 != 1</status>
</kw>
<arg>${device-port}</arg>
<status status="FAIL" start="2026-04-05T00:36:19.270745" elapsed="0.081330">0 != 1</status>
</kw>
<arg>${number}</arg>
<doc>Query netstat on remote machine whether testtool device with the specified number has its port open and fail if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:19.269288" elapsed="0.082999">0 != 1</status>
</kw>
<kw name="Check_Device_Up_And_Running" owner="NetconfKeywords">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:20.356359" level="INFO">${device-port} = 17830</msg>
<var>${device-port}</var>
<arg>${FIRST_TESTTOOL_PORT}+${device-number}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:20.354341" elapsed="0.002122"/>
</kw>
<kw name="NetconfKeywords__Check_Device_Is_Up" owner="NetconfKeywords">
<kw name="Count_Port_Occurences" owner="SSHKeywords">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Check_And_Install_Netstat" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:20.363289" level="INFO">Executing command 'netstat --version'.</msg>
<msg time="2026-04-05T00:36:20.376026" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:20.376125" level="INFO">${netstat_installed} = net-tools 2.10-alpha
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others
+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX
AF: (inet) +UNIX +INET...</msg>
<var>${netstat_installed}</var>
<arg>netstat --version</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:20.363007" elapsed="0.013144"/>
</kw>
<if>
<branch type="IF" condition="'${netstat_installed}' is not string and '${netstat_installed}' != '0'">
<kw name="Install_Netstat" owner="SSHKeywords">
<doc>Install netstat if it is not already installed.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:20.376601" elapsed="0.000026"/>
</kw>
<msg time="2026-04-05T00:36:20.376663" level="FAIL">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</msg>
<status status="FAIL" start="2026-04-05T00:36:20.376244" elapsed="0.000541">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</branch>
<status status="FAIL" start="2026-04-05T00:36:20.376215" elapsed="0.000618">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</if>
<doc>Check if netstat is installed and install it if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:20.362359" elapsed="0.014654">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</kw>
<arg>Check_And_Install_Netstat</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:20.361177" elapsed="0.016071"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:20.378793" level="INFO">Executing command 'netstat -punta 2&gt; /dev/null | grep -E ":17830 .+ LISTEN .+java" | wc -l'.</msg>
<msg time="2026-04-05T00:36:20.425243" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:20.425758" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${NETSTAT_COMMAND} 2&gt; /dev/null | grep -E ":${port} .+ ${state} .+${name}" | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:20.378071" elapsed="0.047767"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:36:20.426018" elapsed="0.000140"/>
</return>
<msg time="2026-04-05T00:36:20.426832" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${last-port}</arg>
<arg>LISTEN</arg>
<arg>java</arg>
<doc>Run 'netstat' on the remote machine and count occurences of given port in the given state connected to process with the given name.</doc>
<status status="PASS" start="2026-04-05T00:36:20.358292" elapsed="0.068634"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-05T00:36:20.429321" level="FAIL">0 != 1</msg>
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="FAIL" start="2026-04-05T00:36:20.427544" elapsed="0.002150">0 != 1</status>
</kw>
<arg>${device-port}</arg>
<status status="FAIL" start="2026-04-05T00:36:20.356884" elapsed="0.073172">0 != 1</status>
</kw>
<arg>${number}</arg>
<doc>Query netstat on remote machine whether testtool device with the specified number has its port open and fail if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:20.353222" elapsed="0.077045">0 != 1</status>
</kw>
<kw name="Check_Device_Up_And_Running" owner="NetconfKeywords">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:21.434176" level="INFO">${device-port} = 17830</msg>
<var>${device-port}</var>
<arg>${FIRST_TESTTOOL_PORT}+${device-number}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:21.432133" elapsed="0.002114"/>
</kw>
<kw name="NetconfKeywords__Check_Device_Is_Up" owner="NetconfKeywords">
<kw name="Count_Port_Occurences" owner="SSHKeywords">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Check_And_Install_Netstat" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:21.441566" level="INFO">Executing command 'netstat --version'.</msg>
<msg time="2026-04-05T00:36:21.454476" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:21.454696" level="INFO">${netstat_installed} = net-tools 2.10-alpha
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others
+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX
AF: (inet) +UNIX +INET...</msg>
<var>${netstat_installed}</var>
<arg>netstat --version</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:21.441156" elapsed="0.013599"/>
</kw>
<if>
<branch type="IF" condition="'${netstat_installed}' is not string and '${netstat_installed}' != '0'">
<kw name="Install_Netstat" owner="SSHKeywords">
<doc>Install netstat if it is not already installed.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:21.455676" elapsed="0.000057"/>
</kw>
<msg time="2026-04-05T00:36:21.455809" level="FAIL">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</msg>
<status status="FAIL" start="2026-04-05T00:36:21.454931" elapsed="0.001075">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</branch>
<status status="FAIL" start="2026-04-05T00:36:21.454879" elapsed="0.001230">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</if>
<doc>Check if netstat is installed and install it if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:21.440546" elapsed="0.015844">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</kw>
<arg>Check_And_Install_Netstat</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:21.439395" elapsed="0.017241"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:21.458142" level="INFO">Executing command 'netstat -punta 2&gt; /dev/null | grep -E ":17830 .+ LISTEN .+java" | wc -l'.</msg>
<msg time="2026-04-05T00:36:21.501710" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:21.502191" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${NETSTAT_COMMAND} 2&gt; /dev/null | grep -E ":${port} .+ ${state} .+${name}" | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:21.457476" elapsed="0.044796"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:36:21.502491" elapsed="0.000145"/>
</return>
<msg time="2026-04-05T00:36:21.503301" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${last-port}</arg>
<arg>LISTEN</arg>
<arg>java</arg>
<doc>Run 'netstat' on the remote machine and count occurences of given port in the given state connected to process with the given name.</doc>
<status status="PASS" start="2026-04-05T00:36:21.436090" elapsed="0.067303"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-05T00:36:21.505861" level="FAIL">0 != 1</msg>
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="FAIL" start="2026-04-05T00:36:21.504055" elapsed="0.002120">0 != 1</status>
</kw>
<arg>${device-port}</arg>
<status status="FAIL" start="2026-04-05T00:36:21.434692" elapsed="0.071886">0 != 1</status>
</kw>
<arg>${number}</arg>
<doc>Query netstat on remote machine whether testtool device with the specified number has its port open and fail if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:21.431141" elapsed="0.075654">0 != 1</status>
</kw>
<kw name="Check_Device_Up_And_Running" owner="NetconfKeywords">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:22.510662" level="INFO">${device-port} = 17830</msg>
<var>${device-port}</var>
<arg>${FIRST_TESTTOOL_PORT}+${device-number}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:22.508720" elapsed="0.002013"/>
</kw>
<kw name="NetconfKeywords__Check_Device_Is_Up" owner="NetconfKeywords">
<kw name="Count_Port_Occurences" owner="SSHKeywords">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Check_And_Install_Netstat" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:22.515391" level="INFO">Executing command 'netstat --version'.</msg>
<msg time="2026-04-05T00:36:22.538563" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:22.538813" level="INFO">${netstat_installed} = net-tools 2.10-alpha
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others
+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX
AF: (inet) +UNIX +INET...</msg>
<var>${netstat_installed}</var>
<arg>netstat --version</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:22.515238" elapsed="0.023639"/>
</kw>
<if>
<branch type="IF" condition="'${netstat_installed}' is not string and '${netstat_installed}' != '0'">
<kw name="Install_Netstat" owner="SSHKeywords">
<doc>Install netstat if it is not already installed.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:22.539888" elapsed="0.000062"/>
</kw>
<msg time="2026-04-05T00:36:22.540031" level="FAIL">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</msg>
<status status="FAIL" start="2026-04-05T00:36:22.539071" elapsed="0.001174">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</branch>
<status status="FAIL" start="2026-04-05T00:36:22.539019" elapsed="0.001336">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</if>
<doc>Check if netstat is installed and install it if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:22.514829" elapsed="0.025865">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</kw>
<arg>Check_And_Install_Netstat</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:22.514093" elapsed="0.026830"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:22.542529" level="INFO">Executing command 'netstat -punta 2&gt; /dev/null | grep -E ":17830 .+ LISTEN .+java" | wc -l'.</msg>
<msg time="2026-04-05T00:36:22.605417" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:22.605947" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${NETSTAT_COMMAND} 2&gt; /dev/null | grep -E ":${port} .+ ${state} .+${name}" | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:22.541785" elapsed="0.064241"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:36:22.606206" elapsed="0.000141"/>
</return>
<msg time="2026-04-05T00:36:22.607031" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${last-port}</arg>
<arg>LISTEN</arg>
<arg>java</arg>
<doc>Run 'netstat' on the remote machine and count occurences of given port in the given state connected to process with the given name.</doc>
<status status="PASS" start="2026-04-05T00:36:22.512370" elapsed="0.094755"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-05T00:36:22.609622" level="FAIL">0 != 1</msg>
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="FAIL" start="2026-04-05T00:36:22.607758" elapsed="0.002182">0 != 1</status>
</kw>
<arg>${device-port}</arg>
<status status="FAIL" start="2026-04-05T00:36:22.511147" elapsed="0.099683">0 != 1</status>
</kw>
<arg>${number}</arg>
<doc>Query netstat on remote machine whether testtool device with the specified number has its port open and fail if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:22.507734" elapsed="0.103322">0 != 1</status>
</kw>
<kw name="Check_Device_Up_And_Running" owner="NetconfKeywords">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.614869" level="INFO">${device-port} = 17830</msg>
<var>${device-port}</var>
<arg>${FIRST_TESTTOOL_PORT}+${device-number}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:23.612962" elapsed="0.001979"/>
</kw>
<kw name="NetconfKeywords__Check_Device_Is_Up" owner="NetconfKeywords">
<kw name="Count_Port_Occurences" owner="SSHKeywords">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Check_And_Install_Netstat" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:23.620737" level="INFO">Executing command 'netstat --version'.</msg>
<msg time="2026-04-05T00:36:23.634119" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:23.634332" level="INFO">${netstat_installed} = net-tools 2.10-alpha
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others
+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX
AF: (inet) +UNIX +INET...</msg>
<var>${netstat_installed}</var>
<arg>netstat --version</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:23.620622" elapsed="0.013768"/>
</kw>
<if>
<branch type="IF" condition="'${netstat_installed}' is not string and '${netstat_installed}' != '0'">
<kw name="Install_Netstat" owner="SSHKeywords">
<doc>Install netstat if it is not already installed.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.635340" elapsed="0.000064"/>
</kw>
<msg time="2026-04-05T00:36:23.635524" level="FAIL">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</msg>
<status status="FAIL" start="2026-04-05T00:36:23.634612" elapsed="0.001111">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</branch>
<status status="FAIL" start="2026-04-05T00:36:23.634562" elapsed="0.001261">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</if>
<doc>Check if netstat is installed and install it if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:23.620329" elapsed="0.015776">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</kw>
<arg>Check_And_Install_Netstat</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:23.619604" elapsed="0.016714"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:23.637845" level="INFO">Executing command 'netstat -punta 2&gt; /dev/null | grep -E ":17830 .+ LISTEN .+java" | wc -l'.</msg>
<msg time="2026-04-05T00:36:23.681499" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:23.681948" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>${NETSTAT_COMMAND} 2&gt; /dev/null | grep -E ":${port} .+ ${state} .+${name}" | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:23.637141" elapsed="0.044886"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:36:23.682203" elapsed="0.000135"/>
</return>
<msg time="2026-04-05T00:36:23.683023" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>${last-port}</arg>
<arg>LISTEN</arg>
<arg>java</arg>
<doc>Run 'netstat' on the remote machine and count occurences of given port in the given state connected to process with the given name.</doc>
<status status="PASS" start="2026-04-05T00:36:23.616821" elapsed="0.066297"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-05T00:36:23.683736" elapsed="0.001612"/>
</kw>
<arg>${device-port}</arg>
<status status="PASS" start="2026-04-05T00:36:23.615352" elapsed="0.070289"/>
</kw>
<arg>${number}</arg>
<doc>Query netstat on remote machine whether testtool device with the specified number has its port open and fail if not.</doc>
<status status="PASS" start="2026-04-05T00:36:23.611995" elapsed="0.073755"/>
</kw>
<arg>${TESTTOOL_BOOT_TIMEOUT}</arg>
<arg>1s</arg>
<arg>Check_Device_Up_And_Running</arg>
<arg>${number}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:19.268784" elapsed="4.417066"/>
</kw>
<arg>${DEVICE_NAME_BASE}-${number}</arg>
<arg>log_response=${log_response}</arg>
<status status="PASS" start="2026-04-05T00:36:19.267787" elapsed="4.418191"/>
</kw>
<arg>${operation}</arg>
<arg>${DEVICE_NAME_BASE}-${number}</arg>
<arg>log_response=${log_response}</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:36:19.267318" elapsed="4.418756"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.687183" level="INFO">${next} = 17831</msg>
<var>${next}</var>
<arg>${current_port}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:23.686415" elapsed="0.000805"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.688030" level="INFO">${current_port} = 17831</msg>
<arg>${current_port}</arg>
<arg>${next}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:23.687492" elapsed="0.000596"/>
</kw>
<arg>${operation}</arg>
<arg>${deadline_Date}</arg>
<arg>log_response=${log_response}</arg>
<status status="PASS" start="2026-04-05T00:36:19.264264" elapsed="4.423906"/>
</kw>
<arg>${count} times</arg>
<arg>NetconfKeywords__Perform_Operation_With_Checking_On_Next_Device</arg>
<arg>${operation}</arg>
<arg>${deadline_Date}</arg>
<arg>log_response=${log_response}</arg>
<doc>Executes the specified keyword multiple times.</doc>
<status status="PASS" start="2026-04-05T00:36:19.263748" elapsed="4.424492"/>
</kw>
<arg>NetconfKeywords__Wait_Device_Is_Up_And_Running</arg>
<arg>log_response=${log_response}</arg>
<status status="PASS" start="2026-04-05T00:36:19.257524" elapsed="4.430800"/>
</kw>
<arg>${filename}</arg>
<arg>${device-count}</arg>
<arg>${debug}</arg>
<arg>${schemas}</arg>
<arg>${rpc_config}</arg>
<arg>${tool_options}</arg>
<arg>${java_options}</arg>
<arg>${mdsal}</arg>
<arg>log_response=${log_response}</arg>
<doc>Arrange to collect tool's output into a log file.
Will use specific /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas unless argument resolves to 'none',
which signifies that there are no additional schemas to be deployed.
If so the directory for the additional schemas is deleted on the
remote machine and the additional schemas argument is left out.</doc>
<status status="PASS" start="2026-04-05T00:36:19.013314" elapsed="4.675078"/>
</kw>
<arg>device-count=1</arg>
<arg>schemas=/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/schemas</arg>
<arg>mdsal=true</arg>
<doc>Install and run testtool.</doc>
<status status="PASS" start="2026-04-05T00:36:18.296629" elapsed="5.391936"/>
</kw>
<doc>Deploy and start test tool, then wait for all its devices to become online.</doc>
<status status="PASS" start="2026-04-05T00:36:18.203005" elapsed="5.485735"/>
</test>
<test id="s1-s4-s2-t2" name="Check_Device_Is_Not_Configured_At_Beginning" line="52">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:23.693465" elapsed="0.000295"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:23.693075" elapsed="0.000762"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:23.695234" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:23.695078" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.695052" elapsed="0.000278"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:23.702994" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:23.702881" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.702863" elapsed="0.000201"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.704056" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:23.703672" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.704552" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:23.704238" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:23.704623" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:23.704778" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:23.703287" elapsed="0.001515"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:23.710174" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:23.710044" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.710025" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:23.711487" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:23.711358" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.711340" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:23.712089" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:23.711696" elapsed="0.000420"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:23.712551" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:23.712272" elapsed="0.000306"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:23.749504" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:23.713122" elapsed="0.036577"/>
</kw>
<msg time="2026-04-05T00:36:23.749884" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:23.749930" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:23.712734" elapsed="0.037237"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:23.773842" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "I "s "_ "N "o "t "_ "C "o "n "f "i "g "u "r "e "d "_ "A "t "_ "B "e "g "i "n "n "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:23.750555" elapsed="0.023482"/>
</kw>
<msg time="2026-04-05T00:36:23.774219" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:23.774264" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "I "s "_ "N "o "t "_ "C "o "n "f ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:23.750139" elapsed="0.024162"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.774679" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:23.774458" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.774416" elapsed="0.000367"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.775306" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "I "s "_ "N "o "t "_ "C "o "n "f "i "g "u "r "e "d "_ "A "t "_ "B "e "g "i "n "n "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:23.774919" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.775672" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:23.775461" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.775441" elapsed="0.000333"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:23.775807" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:23.779260" elapsed="0.000148"/>
</kw>
<msg time="2026-04-05T00:36:23.779519" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:23.778433" elapsed="0.001194"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.780841" elapsed="0.000041"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.781988" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:23.776679" elapsed="0.005429"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:23.776077" elapsed="0.006159"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:23.711059" elapsed="0.071277"/>
</kw>
<msg time="2026-04-05T00:36:23.782444" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:23.782489" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "I "s "_ "N "o "t "_ "C "o "n "f ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:23.710389" elapsed="0.072139"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:23.782879" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:23.782605" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.782586" elapsed="0.000386"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.783369" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.783743" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:23.783815" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:23.709698" elapsed="0.074225"/>
</kw>
<msg time="2026-04-05T00:36:23.784016" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:23.784060" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "I "s "_ "N "o "t "_ "C "o "n "f ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:23.705170" elapsed="0.078927"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.784418" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:23.784172" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.784154" elapsed="0.000357"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:23.705033" elapsed="0.079502"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:23.704858" elapsed="0.079708"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:23.702512" elapsed="0.082107"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:23.694674" elapsed="0.090001"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:23.694041" elapsed="0.090679"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:23.689997" elapsed="0.094839"/>
</kw>
<kw name="Check_Device_Has_No_Netconf_Connector" owner="NetconfKeywords">
<kw name="Count_Netconf_Connectors_For_Device" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.796029" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:23.793999" elapsed="0.002057"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.796370" elapsed="0.000022"/>
</kw>
<var name="${nv}"/>
<status status="NOT RUN" start="2026-04-05T00:36:23.796224" elapsed="0.000218"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="NOT RUN" start="2026-04-05T00:36:23.796109" elapsed="0.000359"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.796778" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:23.796531" elapsed="0.000304"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.797576" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:23.797085" elapsed="0.000518"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:23.796859" elapsed="0.000781"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.797824" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:23.797664" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.796514" elapsed="0.001386"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:23.797933" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:23.798079" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:23.793555" elapsed="0.004549"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:23.798149" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:23.798289" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:23.793057" elapsed="0.005257"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.805549" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:23.805281" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.805990" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:23.805746" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:23.824173" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:23.824464" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 04-Apr-2026 00:36:23 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1181'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-05T00:36:23.824640" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:23.808108" elapsed="0.016570"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:23.806101" elapsed="0.018640"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.825001" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:23.824779" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.806083" elapsed="0.019038"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.830456" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:23.826702" elapsed="0.003838"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:23.826354" elapsed="0.004237"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.826327" elapsed="0.004300"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.834477" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:23.831038" elapsed="0.003507"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:23.830709" elapsed="0.003886"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.830684" elapsed="0.003950"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.835469" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:23.834875" elapsed="0.000636"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.835955" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:23.835614" elapsed="0.000425"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.836805" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:23.836323" elapsed="0.000521"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:23.836086" elapsed="0.000812"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.835588" elapsed="0.001342"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.837713" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:23.837157" elapsed="0.000596"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.838197" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:23.837853" elapsed="0.000428"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.839006" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:23.838572" elapsed="0.000472"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:23.838318" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.837828" elapsed="0.001299"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:23.839342" elapsed="0.000527"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:23.840608" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:23.840136" elapsed="0.000511"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:23.840870" elapsed="0.002298"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:23.825710" elapsed="0.017522"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:23.843409" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:23.843302" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.843284" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:23.846597" level="INFO">${text_normalized} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:23.843637" elapsed="0.002990"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:23.846679" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:36:23.846844" level="INFO">${response_text} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:23.800901" elapsed="0.045970"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:23.846969" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:23.847122" level="INFO">${mounts} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${mounts}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:23.798543" elapsed="0.048606"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.847576" level="INFO">{
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topology-parameters": {
       "encryption": {
        "encryption-alg": [
         "AEAD_AES_128_GCM",
         "AEAD_AES_256_GCM",
         "aes128-cbc",
         "aes128-ctr",
         "aes192-cbc",
         "aes192-ctr",
         "aes256-cbc",
         "aes256-ctr",
         "chacha20-poly1305"
        ]
       },
       "host-key": {
        "host-key-alg": [
         "ecdsa-sha2-nistp256",
         "ecdsa-sha2-nistp384",
         "ecdsa-sha2-nistp521",
         "rsa-sha2-256",
         "rsa-sha2-512",
         "ssh-ed25519",
         "ssh-rsa"
        ]
       },
       "key-exchange": {
        "key-exchange-alg": [
         "curve25519-sha256",
         "curve448-sha512",
         "diffie-hellman-group-exchange-sha256",
         "diffie-hellman-group14-sha256",
         "diffie-hellman-group15-sha512",
         "diffie-hellman-group16-sha512",
         "diffie-hellman-group17-sha512",
         "diffie-hellman-group18-sha512",
         "ecdh-sha2-nistp256",
         "ecdh-sha2-nistp384",
         "ecdh-sha2-nistp521",
         "mlkem1024nistp384-sha384",
         "mlkem768nistp256-sha256",
         "mlkem768x25519-sha256",
         "sntrup761x25519-sha512"
        ]
       },
       "mac": {
        "mac-alg": [
         "hmac-sha1",
         "hmac-sha2-256",
         "hmac-sha2-512"
        ]
       }
      }
     }
    }
   },
   {
    "topology-id": "flow:1"
   },
   {
    "topology-id": "hwvtep:1"
   },
   {
    "topology-id": "ovsdb:1"
   }
  ]
 }
}
</msg>
<arg>${mounts}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:23.847307" elapsed="0.000328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.848210" level="INFO">${actual_count} = 0</msg>
<var>${actual_count}</var>
<arg>len('''${mounts}'''.split('"node-id": "${device_name}"'))-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:23.847786" elapsed="0.000451"/>
</kw>
<return>
<value>${actual_count}</value>
<status status="PASS" start="2026-04-05T00:36:23.848284" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:23.848460" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Count all instances of the specified device in the Netconf topology (usually 0 or 1).</doc>
<status status="PASS" start="2026-04-05T00:36:23.785489" elapsed="0.062997"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.848893" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${count}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:23.848639" elapsed="0.000309"/>
</kw>
<arg>${device_name}</arg>
<doc>Check that there are no instances of the specified device in the Netconf topology.</doc>
<status status="PASS" start="2026-04-05T00:36:23.785064" elapsed="0.063943"/>
</kw>
<doc>Sanity check making sure our device is not there. Fail if found.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:23.689161" elapsed="0.159970"/>
</test>
<test id="s1-s4-s2-t3" name="Configure_Device_On_Netconf" line="57">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:23.853159" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:23.852899" elapsed="0.000536"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:23.854417" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:23.854301" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.854282" elapsed="0.000220"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:23.859282" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:23.859178" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.859160" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.860365" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:23.859984" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.860867" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:23.860570" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:23.860937" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:23.861091" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:23.859590" elapsed="0.001526"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:23.866508" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:23.866386" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.866367" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:23.867829" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:23.867724" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.867706" elapsed="0.000241"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:23.868506" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:23.868094" elapsed="0.000439"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:23.868958" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:23.868688" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:23.900794" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:23.869559" elapsed="0.031446"/>
</kw>
<msg time="2026-04-05T00:36:23.901218" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:23.901266" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:23.869148" elapsed="0.032156"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:23.917978" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "O "n "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:23.901971" elapsed="0.016203"/>
</kw>
<msg time="2026-04-05T00:36:23.918360" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:23.918407" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "O "n "_ "N "e "t "c ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:23.901520" elapsed="0.016949"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.918839" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:23.918565" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.918538" elapsed="0.000411"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.919518" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "O "n "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:23.919093" elapsed="0.000494"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.919866" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:23.919655" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.919637" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:23.920004" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:23.923638" elapsed="0.000155"/>
</kw>
<msg time="2026-04-05T00:36:23.923871" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:23.922706" elapsed="0.001278"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.925117" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.926339" elapsed="0.000041"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:23.920954" elapsed="0.005538"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:23.920313" elapsed="0.006313"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:23.867387" elapsed="0.059355"/>
</kw>
<msg time="2026-04-05T00:36:23.926837" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:23.926883" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "O "n "_ "N "e "t "c ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:23.866722" elapsed="0.060202"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:23.927118" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:23.927008" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.926990" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.927816" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.928237" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:23.928310" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:23.866049" elapsed="0.062387"/>
</kw>
<msg time="2026-04-05T00:36:23.928534" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:23.928578" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "O "n "_ "N "e "t "c ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:23.861500" elapsed="0.067114"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.928936" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:23.928690" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.928672" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:23.861346" elapsed="0.067691"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:23.861172" elapsed="0.067897"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:23.858819" elapsed="0.070307"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:23.854016" elapsed="0.075168"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:23.853585" elapsed="0.075646"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:23.850412" elapsed="0.078872"/>
</kw>
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:23.948356" elapsed="0.000453"/>
</kw>
<msg time="2026-04-05T00:36:23.948867" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:23.947997" elapsed="0.000923"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:23.947607" elapsed="0.001394"/>
</kw>
<msg time="2026-04-05T00:36:23.949044" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:23.939190" elapsed="0.009897"/>
</kw>
<msg time="2026-04-05T00:36:23.949192" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:23.938871" elapsed="0.010345"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.950116" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:23.949378" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:23.950598" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:23.950237" elapsed="0.000428"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.982480" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:23.982070" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:23.983300" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:23.983008" elapsed="0.000376">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:23.983609" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:23.982678" elapsed="0.000958"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.984188" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:23.983797" elapsed="0.000418"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:23.984535" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:23.984760" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:23.984373" elapsed="0.000414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.985233" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:23.984943" elapsed="0.000335"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.986277" level="INFO">mapping: {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:23.986018" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.986770" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:23.986498" elapsed="0.000298"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.987794" level="INFO">${value} = 10.30.170.167</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:23.987177" elapsed="0.000644"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:23.989058" level="INFO">${encoded} = 10.30.170.167</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:23.988487" elapsed="0.000614"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:23.989234" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:36:23.989501" level="INFO">${encoded_value} = 10.30.170.167</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:23.988012" elapsed="0.001515"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:23.989702" elapsed="0.000685"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.167</var>
<status status="PASS" start="2026-04-05T00:36:23.987045" elapsed="0.003401"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.991244" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:23.990694" elapsed="0.000576"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:23.992689" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:23.992117" elapsed="0.000616"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:23.992866" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:23.993113" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:23.991480" elapsed="0.001659"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:23.993288" elapsed="0.000572"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:23.990564" elapsed="0.003338"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.994708" level="INFO">${value} = 17830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:23.994143" elapsed="0.000591"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:23.995953" level="INFO">${encoded} = 17830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:23.995375" elapsed="0.000620"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:23.996127" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:23.996366" level="INFO">${encoded_value} = 17830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:23.994915" elapsed="0.001476"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:23.996696" elapsed="0.000531"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">17830</var>
<status status="PASS" start="2026-04-05T00:36:23.994013" elapsed="0.003255"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:23.998092" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:23.997547" elapsed="0.000571"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:23.999387" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:23.998840" elapsed="0.000617"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:23.999590" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:23.999843" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:23.998358" elapsed="0.001510"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.000018" elapsed="0.000682"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:36:23.997381" elapsed="0.003362"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.001558" level="INFO">${value} = topsecret</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:24.000983" elapsed="0.000601"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:24.002784" level="INFO">${encoded} = topsecret</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.002234" elapsed="0.000594"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:24.002954" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:24.003190" level="INFO">${encoded_value} = topsecret</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:24.001769" elapsed="0.001446"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.003407" elapsed="0.000558"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">topsecret</var>
<status status="PASS" start="2026-04-05T00:36:24.000854" elapsed="0.003154"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.004957" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:24.004250" elapsed="0.000732"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:24.006225" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.005692" elapsed="0.000575"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:24.006394" elapsed="0.000051"/>
</return>
<msg time="2026-04-05T00:36:24.006655" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:24.005165" elapsed="0.001516"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.006827" elapsed="0.000533"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:36:24.004120" elapsed="0.003283"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.008211" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:24.007675" elapsed="0.000562"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:24.009599" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.009025" elapsed="0.000616"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:24.009769" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:36:24.010008" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:24.008564" elapsed="0.001470"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.010181" elapsed="0.000544"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:36:24.007545" elapsed="0.003223"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.011767" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:24.011010" elapsed="0.000784"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:24.012984" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.012454" elapsed="0.000574"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:24.013154" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:24.013446" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:24.011981" elapsed="0.001493"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.013624" elapsed="0.000526"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:24.010880" elapsed="0.003313"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:23.986852" elapsed="0.027376"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:24.014276" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:24.014454" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:23.985676" elapsed="0.028843"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:23.985355" elapsed="0.029199"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.014733" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.014582" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.985331" elapsed="0.029478"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.015715" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:24.014952" elapsed="0.000790"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:24.015790" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:23.981433" elapsed="0.034481"/>
</kw>
<msg time="2026-04-05T00:36:24.015970" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:23.968825" elapsed="0.047199"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.028727" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.040873" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.053004" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.053199" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.053373" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.053768" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.053625" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:24.053610" elapsed="0.000236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.053981" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.054142" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.054300" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:24.053578" elapsed="0.000774"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.053473" elapsed="0.000904"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.054535" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.054611" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:24.054774" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:23.964601" elapsed="0.090199"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.080903" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.080342" elapsed="0.000590"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:24.081698" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:24.081445" elapsed="0.000332">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:24.081871" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:24.081093" elapsed="0.000803"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.082474" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:24.082070" elapsed="0.000431"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:24.082794" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:24.082968" level="INFO">${template} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVI...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:24.082659" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.083394" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;$DEVICE_USER&lt;/username&gt;
      &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.083150" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:24.083822" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.083530" elapsed="0.000351"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.084610" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.084050" elapsed="0.000588"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.083905" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.083512" elapsed="0.001184"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.085549" level="INFO">${final_text} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.167&lt;/host&gt;
    &lt;...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:24.084840" elapsed="0.000739"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:24.085628" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:24.079724" elapsed="0.006028"/>
</kw>
<msg time="2026-04-05T00:36:24.085808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:24.067299" elapsed="0.018556"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.098271" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.110519" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.122704" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.122897" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.123067" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.123442" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.123287" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:24.123273" elapsed="0.000263"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.123672" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.123834" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.123993" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:24.123243" elapsed="0.000801"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.123141" elapsed="0.000929"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.124208" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.124281" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:24.124405" level="INFO">${data} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.167&lt;/host&gt;
    &lt;...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:24.064694" elapsed="0.059754"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:24.125716" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:24.125473" elapsed="0.000307">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:24.125870" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:24.125107" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.126202" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.125963" elapsed="0.000345"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.126819" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.126526" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.126335" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.125946" elapsed="0.000956"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.129200" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:24.127048" elapsed="0.002178"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:24.129277" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:24.129444" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:24.124783" elapsed="0.004687"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.130840" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.130592" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.131266" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.167&lt;/host&gt;
    &lt;port&gt;17830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;topsecret&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.131031" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.131815" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.131557" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.132240" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.132005" elapsed="0.000278"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:24.133105" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:24.132904" elapsed="0.000226"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:24.133468" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:24.133277" elapsed="0.000217"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.133638" elapsed="0.000200"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.134405" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.133988" elapsed="0.000480"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:24.134510" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:24.134665" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:24.132505" elapsed="0.002185"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.136824" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.134760" elapsed="0.002130"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:24.155728" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Content-Length': '452', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.167&lt;/host&gt;
    &lt;port&gt;17830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;topsecret&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt; 
 </msg>
<msg time="2026-04-05T00:36:24.155786" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:24.155876" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:24.137054" elapsed="0.018847"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.136915" elapsed="0.019033"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.134742" elapsed="0.021228"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.159282" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.156916" elapsed="0.002409"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.156697" elapsed="0.002663"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.156679" elapsed="0.002706"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.164561" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.159684" elapsed="0.004980"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.159467" elapsed="0.005274"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.159450" elapsed="0.005345"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.166009" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:24.165143" elapsed="0.000926"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.166794" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.166225" elapsed="0.000714"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.168101" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.167336" elapsed="0.000822"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.166993" elapsed="0.001245"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.166186" elapsed="0.002099"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.169503" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:24.168663" elapsed="0.000900"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.170230" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.169718" elapsed="0.000639"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.171526" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.170836" elapsed="0.000750"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.170411" elapsed="0.001254"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.169678" elapsed="0.002034"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:24.172029" elapsed="0.000357"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:24.172846" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:24.172564" elapsed="0.000308"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.173020" elapsed="0.002271"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:24.156331" elapsed="0.019021"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:24.175542" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:24.175434" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.175400" elapsed="0.000228"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.175772" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.175838" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:24.178050" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:24.129800" elapsed="0.048276"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:24.178139" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:24.178293" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:23.953769" elapsed="0.224548"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.178678" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.178416" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.178400" elapsed="0.000370"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:24.178803" elapsed="0.000026"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:23.950923" elapsed="0.228051"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:23.950691" elapsed="0.228329"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:23.950216" elapsed="0.228827"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.179183" elapsed="0.000255"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>http_timeout=2</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:36:23.929580" elapsed="0.249924"/>
</kw>
<doc>Make request to configure a testtool device on Netconf connector.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:23.849638" elapsed="0.330001"/>
</test>
<test id="s1-s4-s2-t4" name="Check_ODL_Has_Netconf_Connector_For_Device" line="62">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:24.183338" elapsed="0.000227"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:24.183077" elapsed="0.000543"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.184600" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:24.184491" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.184472" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.189605" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:24.189498" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.189480" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.190669" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:24.190266" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.191157" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:24.190851" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:24.191229" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:24.191380" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:24.189896" elapsed="0.001509"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.196916" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:24.196810" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.196791" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.198221" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:24.198116" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.198098" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:24.198868" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.198479" elapsed="0.000416"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:24.199318" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:24.199052" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:24.234541" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:24.199909" elapsed="0.034829"/>
</kw>
<msg time="2026-04-05T00:36:24.234927" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:24.234972" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:24.199516" elapsed="0.035491"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:24.258764" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "O "D "L "_ "H "a "s "_ "N "e "t "c "o "n "f "_ "C "o "n "n "e "c "t "o "r "_ "F "o "r "_ "D "e "v "i "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:24.235612" elapsed="0.023346"/>
</kw>
<msg time="2026-04-05T00:36:24.259137" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:24.259182" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "O "D "L "_ "H "a "s "_ "N "e "t "c "o "n "f "_ "C "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:24.235181" elapsed="0.024086"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.259597" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.259349" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.259327" elapsed="0.000376"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.260234" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "O "D "L "_ "H "a "s "_ "N "e "t "c "o "n "f "_ "C "o "n "n "e "c "t "o "r "_ "F "o "r "_ "D "e "v "i "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.259842" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.260601" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.260372" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.260354" elapsed="0.000349"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:24.260737" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:24.264091" elapsed="0.000149"/>
</kw>
<msg time="2026-04-05T00:36:24.264316" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:24.263354" elapsed="0.001099"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.265542" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.266633" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:24.261668" elapsed="0.005084"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:24.261015" elapsed="0.005866"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:24.197814" elapsed="0.069167"/>
</kw>
<msg time="2026-04-05T00:36:24.267071" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:24.267115" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "O "D "L "_ "H "a "s "_ "N "e "t "c "o "n "f "_ "C "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:24.197130" elapsed="0.070021"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:24.267332" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:36:24.267227" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.267209" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.267837" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.268164" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.268236" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:24.196473" elapsed="0.071868"/>
</kw>
<msg time="2026-04-05T00:36:24.268472" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:24.268517" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "O "D "L "_ "H "a "s "_ "N "e "t "c "o "n "f "_ "C "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:24.191787" elapsed="0.076766"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.268871" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.268628" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.268611" elapsed="0.000335"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:24.191651" elapsed="0.077318"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:24.191478" elapsed="0.077521"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:24.189130" elapsed="0.079922"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:24.184191" elapsed="0.084915"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:24.183770" elapsed="0.085381"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:24.180793" elapsed="0.088457"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Count_Netconf_Connectors">
<kw name="Count_Netconf_Connectors_For_Device" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.282463" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.278677" elapsed="0.003814"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.282817" elapsed="0.000022"/>
</kw>
<var name="${nv}"/>
<status status="NOT RUN" start="2026-04-05T00:36:24.282667" elapsed="0.000208"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.282547" elapsed="0.000354"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.283201" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.282965" elapsed="0.000293"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.284001" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.283523" elapsed="0.000505"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.283282" elapsed="0.000784"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.284251" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.284090" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.282946" elapsed="0.001382"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:24.284361" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:24.284522" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:24.278217" elapsed="0.006331"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:24.284596" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:24.284737" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:24.277744" elapsed="0.007018"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.292121" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.291865" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.292574" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.292315" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:24.303699" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:24.304683" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1405'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password-unencrypted":{"username":"admin","password":"topsecret"},"host":"10.30.170.167"}}],"topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-05T00:36:24.304799" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:24.294738" elapsed="0.010088"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.292685" elapsed="0.012184"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.305057" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.304899" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.292668" elapsed="0.012507"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.308639" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password-unencrypted":{"username":"admin","password":"topsecret"},"host":"10.30.170.167"}}],"topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.306186" elapsed="0.002510"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.305971" elapsed="0.002762"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.305952" elapsed="0.002806"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.312251" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.309064" elapsed="0.003253"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.308813" elapsed="0.003553"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.308796" elapsed="0.003605"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.313186" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:24.312657" elapsed="0.000568"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.313670" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.313324" elapsed="0.000495"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.314533" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.314079" elapsed="0.000490"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.313855" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.313299" elapsed="0.001352"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.315374" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:24.314868" elapsed="0.000544"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.315848" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.315532" elapsed="0.000398"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.316623" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.316179" elapsed="0.000482"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.315964" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.315506" elapsed="0.001234"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:24.316939" elapsed="0.000504"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:24.318071" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:24.317671" elapsed="0.000437"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.318316" elapsed="0.003232"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:24.305548" elapsed="0.016068"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.321792" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:24.321687" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.321668" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:24.325072" level="INFO">${text_normalized} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "node": [
     {
      "netconf-node-topology:netconf-node": {
       "connection-status": "connecting",
       "host": "10.30.170.16...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:24.322000" elapsed="0.003102"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:24.325154" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:24.325309" level="INFO">${response_text} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "node": [
     {
      "netconf-node-topology:netconf-node": {
       "connection-status": "connecting",
       "host": "10.30.170.16...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:24.287383" elapsed="0.037989"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:24.325447" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:24.325600" level="INFO">${mounts} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "node": [
     {
      "netconf-node-topology:netconf-node": {
       "connection-status": "connecting",
       "host": "10.30.170.16...</msg>
<var>${mounts}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:24.284997" elapsed="0.040629"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.326026" level="INFO">{
 "network-topology:network-topology": {
  "topology": [
   {
    "node": [
     {
      "netconf-node-topology:netconf-node": {
       "connection-status": "connecting",
       "host": "10.30.170.167",
       "login-password-unencrypted": {
        "password": "topsecret",
        "username": "admin"
       },
       "port": 17830
      },
      "node-id": "netconf-test-device"
     }
    ],
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topology-parameters": {
       "encryption": {
        "encryption-alg": [
         "AEAD_AES_128_GCM",
         "AEAD_AES_256_GCM",
         "aes128-cbc",
         "aes128-ctr",
         "aes192-cbc",
         "aes192-ctr",
         "aes256-cbc",
         "aes256-ctr",
         "chacha20-poly1305"
        ]
       },
       "host-key": {
        "host-key-alg": [
         "ecdsa-sha2-nistp256",
         "ecdsa-sha2-nistp384",
         "ecdsa-sha2-nistp521",
         "rsa-sha2-256",
         "rsa-sha2-512",
         "ssh-ed25519",
         "ssh-rsa"
        ]
       },
       "key-exchange": {
        "key-exchange-alg": [
         "curve25519-sha256",
         "curve448-sha512",
         "diffie-hellman-group-exchange-sha256",
         "diffie-hellman-group14-sha256",
         "diffie-hellman-group15-sha512",
         "diffie-hellman-group16-sha512",
         "diffie-hellman-group17-sha512",
         "diffie-hellman-group18-sha512",
         "ecdh-sha2-nistp256",
         "ecdh-sha2-nistp384",
         "ecdh-sha2-nistp521",
         "mlkem1024nistp384-sha384",
         "mlkem768nistp256-sha256",
         "mlkem768x25519-sha256",
         "sntrup761x25519-sha512"
        ]
       },
       "mac": {
        "mac-alg": [
         "hmac-sha1",
         "hmac-sha2-256",
         "hmac-sha2-512"
        ]
       }
      }
     }
    }
   },
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology-id": "flow:1"
   },
   {
    "topology-id": "hwvtep:1"
   },
   {
    "topology-id": "ovsdb:1"
   }
  ]
 }
}
</msg>
<arg>${mounts}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.325779" elapsed="0.000307"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.326636" level="INFO">${actual_count} = 1</msg>
<var>${actual_count}</var>
<arg>len('''${mounts}'''.split('"node-id": "${device_name}"'))-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:24.326234" elapsed="0.000429"/>
</kw>
<return>
<value>${actual_count}</value>
<status status="PASS" start="2026-04-05T00:36:24.326708" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:24.326857" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>${device_name}</arg>
<doc>Count all instances of the specified device in the Netconf topology (usually 0 or 1).</doc>
<status status="PASS" start="2026-04-05T00:36:24.270238" elapsed="0.056644"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.327285" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:24.327033" elapsed="0.000307"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.269890" elapsed="0.057507"/>
</kw>
<arg>5 sec</arg>
<arg>1 sec</arg>
<arg>Count_Netconf_Connectors</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:24.269441" elapsed="0.058015"/>
</kw>
<doc>Get the list of configured devices and search for our device there. Fail if not found.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:24.180186" elapsed="0.147389"/>
</test>
<test id="s1-s4-s2-t5" name="Wait_For_Device_To_Become_Connected" line="67">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:24.330685" elapsed="0.000203"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:24.330413" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.331905" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:24.331798" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.331779" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.336815" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:24.336710" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.336691" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.337865" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:24.337486" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.338340" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:24.338047" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:24.338410" elapsed="0.000044"/>
</return>
<msg time="2026-04-05T00:36:24.338581" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:24.337103" elapsed="0.001503"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.344167" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:24.344056" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.344015" elapsed="0.000221"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.345488" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:24.345358" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.345339" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:24.346078" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.345695" elapsed="0.000409"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:24.346533" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:24.346258" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:24.378455" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:24.347102" elapsed="0.031536"/>
</kw>
<msg time="2026-04-05T00:36:24.378821" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:24.378867" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:24.346714" elapsed="0.032190"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:24.399216" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "c "o "m "e "_ "C "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:24.379505" elapsed="0.019931"/>
</kw>
<msg time="2026-04-05T00:36:24.399622" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:24.399668" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "c "o "m ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:24.379072" elapsed="0.020633"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.399999" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.399783" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.399763" elapsed="0.000338"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.400645" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "c "o "m "e "_ "C "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.400240" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.400988" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.400779" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.400761" elapsed="0.000329"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:24.401127" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:24.404371" elapsed="0.000176"/>
</kw>
<msg time="2026-04-05T00:36:24.404623" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:24.403707" elapsed="0.001022"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.405927" elapsed="0.000042"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.407072" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:24.401985" elapsed="0.005208"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:24.401380" elapsed="0.005941"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:24.345056" elapsed="0.062388"/>
</kw>
<msg time="2026-04-05T00:36:24.407539" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:24.407583" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "c "o "m ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:24.344384" elapsed="0.063237"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:24.407845" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:24.407737" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.407718" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.408325" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.408698" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.408771" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:24.343698" elapsed="0.065182"/>
</kw>
<msg time="2026-04-05T00:36:24.408977" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:24.409023" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "c "o "m ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:24.338997" elapsed="0.070063"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.409383" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.409136" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.409119" elapsed="0.000357"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:24.338822" elapsed="0.070679"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:24.338657" elapsed="0.070873"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:24.336323" elapsed="0.073260"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:24.331515" elapsed="0.078124"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:24.331084" elapsed="0.078600"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:24.328302" elapsed="0.081434"/>
</kw>
<kw name="Wait_Device_Connected" owner="NetconfKeywords">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Connected" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.422148" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.420100" elapsed="0.002075"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.422857" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.422521" elapsed="0.000362"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:24.422358" elapsed="0.000561"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.423474" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.423140" elapsed="0.000360"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:24.422995" elapsed="0.000540"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:24.422228" elapsed="0.001335"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.423860" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.423626" elapsed="0.000291"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.424645" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.424168" elapsed="0.000504"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.423941" elapsed="0.000766"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.424890" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.424731" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.423609" elapsed="0.001356"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:24.424998" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:24.425144" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:24.419651" elapsed="0.005518"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:24.425214" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:24.425393" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:24.419072" elapsed="0.006361"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.432643" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.432382" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.433078" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.432838" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:24.442862" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:24.443140" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password-unencrypted":{"username":"admin","password":"topsecret"},"host":"10.30.170.167"}}]} 
 </msg>
<msg time="2026-04-05T00:36:24.443236" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:24.435227" elapsed="0.008035"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.433187" elapsed="0.010118"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.443500" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.443330" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.433169" elapsed="0.010417"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.447237" level="INFO">{"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password-unencrypted":{"username":"admin","password":"topsecret"},"host":"10.30.170.167"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.444598" elapsed="0.002706"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.444364" elapsed="0.002989"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.444346" elapsed="0.003043"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.450982" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:24.447797" elapsed="0.003249"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.447490" elapsed="0.003604"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.447465" elapsed="0.003663"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.451889" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:24.451346" elapsed="0.000580"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.452344" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.452024" elapsed="0.000419"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.453108" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.452696" elapsed="0.000448"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.452479" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.451999" elapsed="0.001224"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.453958" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:24.453459" elapsed="0.000535"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:24.454485" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:24.454090" elapsed="0.000479"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.455228" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:24.454819" elapsed="0.000444"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:24.454603" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.454065" elapsed="0.001276"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:24.455562" elapsed="0.000477"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:24.456733" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:24.456314" elapsed="0.000456"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:24.456982" elapsed="0.002859"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:24.443943" elapsed="0.015960"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:24.460076" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:24.459972" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:24.459953" elapsed="0.000190"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:24.462947" level="INFO">${text_normalized} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password-unencrypted": {
     "password": "t...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:24.460282" elapsed="0.002694"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:24.463027" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:24.463182" level="INFO">${response_text} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password-unencrypted": {
     "password": "t...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:24.428093" elapsed="0.035115"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:24.463265" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:24.463410" level="INFO">${device_status} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password-unencrypted": {
     "password": "t...</msg>
<var>${device_status}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:24.425657" elapsed="0.037794"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-05T00:36:24.463960" level="FAIL">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password-unencrypted": {
     "password": "topsecret",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</msg>
<arg>${device_status}</arg>
<arg>connection-status": "connected"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-05T00:36:24.463609" elapsed="0.000428">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password-unencrypted": {
     "password": "topsecret",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device is accessible from Netconf.</doc>
<status status="FAIL" start="2026-04-05T00:36:24.410916" elapsed="0.053245">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password-unencrypted": {
     "password": "topsecret",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<kw name="Check_Device_Connected" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.481559" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:25.478448" elapsed="0.003146"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.482298" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:25.481973" elapsed="0.000352"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:25.481820" elapsed="0.000541"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.482923" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:25.482607" elapsed="0.000342"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:25.482459" elapsed="0.000525"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:25.481672" elapsed="0.001340"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.483361" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.483093" elapsed="0.000339"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.484173" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:25.483692" elapsed="0.000508"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.483461" elapsed="0.000850"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.484525" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.484339" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.483072" elapsed="0.001532"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:25.484644" elapsed="0.000040"/>
</return>
<msg time="2026-04-05T00:36:25.484811" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:25.477760" elapsed="0.007077"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:25.484884" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:25.485026" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:25.476924" elapsed="0.008131"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.492260" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.491989" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.492725" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.492477" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:25.503591" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:25.505784" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3506'} 
 body={"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"negotiated-ssh-transport-parameters":{"encryption-alg":"chacha20-poly1305@openssh.com","host-key-alg":"rsa-sha2-512","mac-alg":"aead","key-exchange-alg":"sntrup761x25519-sha512"},"session-id":1,"connection-status":"connected","login-password-unencrypted":{"username":"admin","password":"topsecret"},"host":"10.30.170.167","available-capabilities":{"available-capability":[{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:notification:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:exi:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:candidate:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.0"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?revision=2014-08-18)people"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car?revision=2014-08-18)car"},{"capability-origin":"device-advertised","capability":"(ns:main?revision=2014-01-21)main"},{"capability-origin":"device-advertised","capability":"(ns:augment:main:a?revision=2014-01-21)augment-main-a"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:netconf:monitoring?revision=2022-07-18)odl-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension"},{"capability-origin":"device-advertised","capability":"(org:opendaylight:coretutorials:ncmount:example:l2fib?revision=2016-03-07)ncmount-l2fib"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people?revision=2014-08-18)car-people"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)car-purchase"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:test:netconf:crud?revision=2014-10-18)test"},{"capability-origin":"device-advertised","capability":"(https://example.com/ns/example-action?revision=2016-07-07)example-action"},{"capability":"(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:yang:extension:yang-ext?revision=2013-07-09)yang-ext"}]}}}]} 
 </msg>
<msg time="2026-04-05T00:36:25.505955" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:25.494855" elapsed="0.011136"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.492837" elapsed="0.013214"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.506300" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.506089" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.492818" elapsed="0.013622"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.511576" level="INFO">{"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"negotiated-ssh-transport-parameters":{"encryption-alg":"chacha20-poly1305@openssh.com","host-key-alg":"rsa-sha2-512","mac-alg":"aead","key-exchange-alg":"sntrup761x25519-sha512"},"session-id":1,"connection-status":"connected","login-password-unencrypted":{"username":"admin","password":"topsecret"},"host":"10.30.170.167","available-capabilities":{"available-capability":[{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:notification:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:exi:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:candidate:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.0"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?revision=2014-08-18)people"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car?revision=2014-08-18)car"},{"capability-origin":"device-advertised","capability":"(ns:main?revision=2014-01-21)main"},{"capability-origin":"device-advertised","capability":"(ns:augment:main:a?revision=2014-01-21)augment-main-a"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:netconf:monitoring?revision=2022-07-18)odl-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension"},{"capability-origin":"device-advertised","capability":"(org:opendaylight:coretutorials:ncmount:example:l2fib?revision=2016-03-07)ncmount-l2fib"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people?revision=2014-08-18)car-people"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)car-purchase"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:test:netconf:crud?revision=2014-10-18)test"},{"capability-origin":"device-advertised","capability":"(https://example.com/ns/example-action?revision=2016-07-07)example-action"},{"capability":"(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:yang:extension:yang-ext?revision=2013-07-09)yang-ext"}]}}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.507928" elapsed="0.003748"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.507611" elapsed="0.004144"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.507586" elapsed="0.004205"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.514536" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.512137" elapsed="0.002445"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.511873" elapsed="0.002744"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.511846" elapsed="0.002796"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.515215" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:25.514808" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.515559" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.515312" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.516109" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:25.515811" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.515655" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.515294" elapsed="0.000898"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.516728" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:25.516348" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.517048" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.516823" elapsed="0.000281"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.517588" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:25.517281" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.517128" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.516805" elapsed="0.000865"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:25.517821" elapsed="0.000372"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:25.518676" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:25.518355" elapsed="0.000346"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:25.518852" elapsed="0.002298"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:25.506995" elapsed="0.014219"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.521389" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:25.521283" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.521265" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:25.524963" level="INFO">${text_normalized} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:25.521617" elapsed="0.003375"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:25.525049" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:25.525369" level="INFO">${response_text} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:25.487725" elapsed="0.037670"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:25.525468" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:25.525675" level="INFO">${device_status} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${device_status}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:25.485277" elapsed="0.040425"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${device_status}</arg>
<arg>connection-status": "connected"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:25.525859" elapsed="0.000304"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device is accessible from Netconf.</doc>
<status status="PASS" start="2026-04-05T00:36:25.464992" elapsed="0.061233"/>
</kw>
<arg>${timeout}</arg>
<arg>${period}</arg>
<arg>Check_Device_Connected</arg>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:24.410338" elapsed="1.115941"/>
</kw>
<arg>${device_name}</arg>
<doc>Wait for the device to become connected.
It is more readable to use this keyword in a test case than to put the whole WUKS below into it.</doc>
<status status="PASS" start="2026-04-05T00:36:24.409938" elapsed="1.116408"/>
</kw>
<doc>Wait until the device becomes available through Netconf.</doc>
<status status="PASS" start="2026-04-05T00:36:24.327795" elapsed="1.198701"/>
</test>
<test id="s1-s4-s2-t6" name="Check_Device_Data_Is_Empty" line="71">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:25.530084" elapsed="0.000212"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:25.529822" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.531341" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:25.531234" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.531215" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.536431" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:25.536312" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.536294" elapsed="0.000207"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.537498" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:25.537099" elapsed="0.000426"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.537979" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:25.537681" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:25.538050" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:25.538205" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:25.536724" elapsed="0.001506"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.543571" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:25.543464" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.543445" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.544892" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:25.544787" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.544769" elapsed="0.000229"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:25.545549" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:25.545141" elapsed="0.000436"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:25.546000" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:25.545735" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:25.585776" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:25.546594" elapsed="0.039361"/>
</kw>
<msg time="2026-04-05T00:36:25.586142" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:25.586188" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:25.546184" elapsed="0.040041"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:25.607047" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "E "m "p "t "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:25.586814" elapsed="0.020423"/>
</kw>
<msg time="2026-04-05T00:36:25.607415" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:25.607489" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "E "m "p ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:25.586393" elapsed="0.021133"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.607823" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.607605" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.607583" elapsed="0.000345"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.608474" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "E "m "p "t "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.608069" elapsed="0.000470"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.608815" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.608606" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.608588" elapsed="0.000329"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:25.608950" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:25.612217" elapsed="0.000146"/>
</kw>
<msg time="2026-04-05T00:36:25.612460" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:25.611516" elapsed="0.001054"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.613671" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.614790" elapsed="0.000040"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:25.609816" elapsed="0.005095"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:25.609209" elapsed="0.005827"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:25.544486" elapsed="0.070648"/>
</kw>
<msg time="2026-04-05T00:36:25.615225" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:25.615268" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "E "m "p ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:25.543785" elapsed="0.071520"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:25.615668" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:25.615380" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.615362" elapsed="0.000391"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.616151" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.616565" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.616638" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:25.543091" elapsed="0.073653"/>
</kw>
<msg time="2026-04-05T00:36:25.616836" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:25.616879" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "E "m "p ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:25.538610" elapsed="0.078304"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.617234" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.616991" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.616973" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:25.538470" elapsed="0.078864"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:25.538283" elapsed="0.079079"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:25.535951" elapsed="0.081464"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:25.530945" elapsed="0.086543"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:25.530515" elapsed="0.087018"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:25.527292" elapsed="0.090292"/>
</kw>
<kw name="Regexp Escape" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.618169" level="INFO">${escaped} = urn:ietf:params:xml:ns:netconf:base:1\.0</msg>
<var>${escaped}</var>
<arg>${ODL_NETCONF_NAMESPACE}</arg>
<doc>Returns each argument escaped for use as a regular expression.</doc>
<status status="PASS" start="2026-04-05T00:36:25.617738" elapsed="0.000457"/>
</kw>
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.619517" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:25.619124" elapsed="0.000420"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.626983" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.626393" elapsed="0.000637"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.627436" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.627180" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:25.651014" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:25.651269" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '55'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt; 
 </msg>
<msg time="2026-04-05T00:36:25.651522" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:25.629551" elapsed="0.022031"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.627549" elapsed="0.024129"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.652065" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.651735" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.627531" elapsed="0.024722"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.660299" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.654554" elapsed="0.005851"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.654029" elapsed="0.006487"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.653987" elapsed="0.006586"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.664581" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.661193" elapsed="0.003434"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.660700" elapsed="0.003996"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.660661" elapsed="0.004061"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.665254" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:25.664880" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.665599" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.665351" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.666150" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:25.665848" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.665682" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.665333" elapsed="0.000899"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.666766" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:25.666387" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.667089" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.666861" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.667632" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:25.667322" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.667170" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.666843" elapsed="0.000871"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:25.667857" elapsed="0.000382"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:25.668691" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:25.668400" elapsed="0.000317"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:25.668864" elapsed="0.002274"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:25.653053" elapsed="0.018147"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:25.671373" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:25.671268" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.671250" elapsed="0.000226"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.671619" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.671688" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:25.673972" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:25.622062" elapsed="0.051937"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:25.674058" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:25.674205" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:25.619752" elapsed="0.054483"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:25.674278" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:36:25.674443" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:25.618863" elapsed="0.055607"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-04-05T00:36:25.674714" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.674534" elapsed="0.000539"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.675258" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.675098" elapsed="0.000217"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.675491" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.675339" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.674517" elapsed="0.001049"/>
</if>
<arg>&lt;data xmlns\="${escaped}"(\/&gt;|&gt;&lt;\/data&gt;)</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-05T00:36:25.618435" elapsed="0.057178"/>
</kw>
<doc>Get the device data and make sure it is empty.</doc>
<status status="PASS" start="2026-04-05T00:36:25.526819" elapsed="0.148934"/>
</test>
<test id="s1-s4-s2-t7" name="Create_Device_Data_Label_Via_Xml" line="76">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:25.678986" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:25.678730" elapsed="0.000518"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.680217" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:25.680109" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.680091" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.685224" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:25.685117" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.685099" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.686302" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:25.685925" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.686793" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:25.686499" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:25.686863" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:25.687016" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:25.685526" elapsed="0.001515"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.692326" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:25.692220" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.692202" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.693655" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:25.693540" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.693518" elapsed="0.000204"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:25.694242" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:25.693861" elapsed="0.000407"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:25.694693" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:25.694438" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:25.726007" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:25.695261" elapsed="0.030929"/>
</kw>
<msg time="2026-04-05T00:36:25.726374" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:25.726420" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:25.694873" elapsed="0.031603"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:25.748613" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "r "e "a "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "V "i "a "_ "X "m "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:25.727040" elapsed="0.021773"/>
</kw>
<msg time="2026-04-05T00:36:25.749006" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:25.749051" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "r "e "a "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:25.726644" elapsed="0.022443"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.749380" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.749165" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.749144" elapsed="0.000368"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.750038" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "r "e "a "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "V "i "a "_ "X "m "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.749652" elapsed="0.000452"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.750455" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.750221" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.750201" elapsed="0.000367"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:25.750602" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:25.753846" elapsed="0.000271"/>
</kw>
<msg time="2026-04-05T00:36:25.754195" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:25.753157" elapsed="0.001142"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.755375" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.756538" elapsed="0.000039"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:25.751462" elapsed="0.005198"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:25.750857" elapsed="0.005946"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:25.693188" elapsed="0.063715"/>
</kw>
<msg time="2026-04-05T00:36:25.756997" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:25.757043" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "r "e "a "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:25.692554" elapsed="0.064525"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:25.757261" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:25.757155" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.757137" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.757751" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.758083" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.758154" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:25.691882" elapsed="0.066377"/>
</kw>
<msg time="2026-04-05T00:36:25.758351" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:25.758395" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "r "e "a "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:25.687394" elapsed="0.071052"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.758766" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.758523" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.758505" elapsed="0.000337"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:25.687258" elapsed="0.071606"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:25.687092" elapsed="0.071800"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:25.684760" elapsed="0.074184"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:25.679826" elapsed="0.079173"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:25.679392" elapsed="0.079651"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:25.676646" elapsed="0.082450"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.759789" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:25.759257" elapsed="0.000558"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.793170" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:25.792758" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:25.793969" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:25.793705" elapsed="0.000349">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:25.794149" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:25.793360" elapsed="0.000814"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.794734" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:25.794332" elapsed="0.000429"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:25.795064" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:25.795218" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:25.794929" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.795656" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.795394" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.796679" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.796402" elapsed="0.000322"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.799072" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:25.796876" elapsed="0.002223"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.799767" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:25.799464" elapsed="0.000328"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:25.800596" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:25.800315" elapsed="0.000307"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:25.800682" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:25.800833" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:25.799978" elapsed="0.000880"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:25.801004" elapsed="0.000230"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:25.799318" elapsed="0.001957"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.801830" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:25.801530" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:25.802773" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:25.802534" elapsed="0.000264"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:25.802849" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:25.802997" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:25.802043" elapsed="0.000978"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:25.803165" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:25.801385" elapsed="0.002056"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:25.799148" elapsed="0.004328"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:25.803518" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:25.803673" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:25.796071" elapsed="0.007627"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.795768" elapsed="0.007963"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.803898" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.803755" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.795749" elapsed="0.008263"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.804764" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:25.804166" elapsed="0.000626"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:25.804840" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:25.792119" elapsed="0.012844"/>
</kw>
<msg time="2026-04-05T00:36:25.805017" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:25.779876" elapsed="0.025188"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.817319" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.829635" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.841748" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.841937" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.842108" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.842480" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.842326" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:25.842312" elapsed="0.000249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.842696" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.842857" elapsed="0.000018"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.843015" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:25.842282" elapsed="0.000790"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.842182" elapsed="0.000915"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.843236" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.843311" elapsed="0.000014"/>
</return>
<msg time="2026-04-05T00:36:25.843442" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:25.775658" elapsed="0.067812"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.910961" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:25.910549" elapsed="0.000447"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:25.911783" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:25.911513" elapsed="0.000352">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:25.911959" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:25.911169" elapsed="0.000814"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.912546" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:25.912143" elapsed="0.000430"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:25.912872" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:25.913082" level="INFO">${template} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Content&lt;/l&gt;
&lt;/cont&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:25.912729" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.913532" level="INFO">&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Content&lt;/l&gt;
&lt;/cont&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.913262" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:25.913963" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.913658" elapsed="0.000364"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.914505" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:25.914193" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.914052" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.913634" elapsed="0.000954"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.915193" level="INFO">${final_text} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:25.914731" elapsed="0.000490"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:25.915273" elapsed="0.000035"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:25.909920" elapsed="0.005488"/>
</kw>
<msg time="2026-04-05T00:36:25.915482" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:25.897181" elapsed="0.018349"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.928211" elapsed="0.000034"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.940498" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.952709" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.952907" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.953079" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.953467" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.953311" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:25.953297" elapsed="0.000249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.953681" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.953862" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.954036" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:25.953266" elapsed="0.000824"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.953159" elapsed="0.000958"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.954259" elapsed="0.000042"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:25.954368" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:25.954519" level="INFO">${data} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:25.896127" elapsed="0.058420"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:25.955776" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:25.955544" elapsed="0.000295">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorig/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:25.955930" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:25.955195" elapsed="0.000759"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:25.956261" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:25.956023" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.956811" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:25.956522" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.956342" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.956006" elapsed="0.000886"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.959180" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:25.957042" elapsed="0.002164"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:25.959258" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:25.959409" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/dataorig/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:25.954874" elapsed="0.004573"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.960952" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.960708" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.961382" level="INFO">&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.961146" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.961874" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.961629" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.962317" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.962064" elapsed="0.000296"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:25.963185" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:25.962980" elapsed="0.000231"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:25.963546" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:25.963358" elapsed="0.000214"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:25.963717" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:25.964364" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:25.964115" elapsed="0.000293"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:25.964469" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:25.964624" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:25.962585" elapsed="0.002063"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:26.040375" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Content-Length': '72', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Content&lt;/l&gt;
&lt;/cont&gt; 
 </msg>
<msg time="2026-04-05T00:36:26.040538" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.184:8181/rests/data/test:cont', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:26.040765" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:25.966950" elapsed="0.073873"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:25.964718" elapsed="0.076208"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.041345" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.040986" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:25.964701" elapsed="0.076883"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.049205" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.043867" elapsed="0.005441"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.043352" elapsed="0.006034"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.043312" elapsed="0.006165"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.052338" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.050079" elapsed="0.002304"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.049604" elapsed="0.002827"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.049567" elapsed="0.002891"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.052998" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.052614" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.053341" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.053104" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.053908" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.053605" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.053447" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.053086" elapsed="0.000903"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.054526" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.054141" elapsed="0.000412"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.054850" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.054626" elapsed="0.000280"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.055433" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.055123" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.054929" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.054607" elapsed="0.000910"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.055663" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:26.056463" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.056167" elapsed="0.000322"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.056642" elapsed="0.002283"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:26.042356" elapsed="0.016631"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:26.059164" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:26.059059" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.059041" elapsed="0.000209"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.059393" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.059477" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:26.061727" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:25.959772" elapsed="0.101981"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:26.061822" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:26.061974" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:25.764532" elapsed="0.297466"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.062330" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.062099" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.062083" elapsed="0.000351"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:26.062469" elapsed="0.000025"/>
</return>
<arg>${directory_with_template_folders}${/}dataorig</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:25.760069" elapsed="0.302520"/>
</kw>
<doc>Send a sample test data label into the device and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:25.676075" elapsed="0.386638"/>
</test>
<test id="s1-s4-s2-t8" name="Check_Device_Data_Label_Is_Created" line="81">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:26.065980" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:26.065728" elapsed="0.000510"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.067204" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.067097" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.067079" elapsed="0.000192"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.072251" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.072146" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.072127" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.073324" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:26.072943" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.073819" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:26.073524" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:26.073928" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:26.074089" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:26.072555" elapsed="0.001559"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.079410" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.079304" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.079285" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.080745" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.080631" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.080613" elapsed="0.000201"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:26.081343" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.080952" elapsed="0.000417"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.081807" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:26.081544" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.116921" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:26.082376" elapsed="0.034729"/>
</kw>
<msg time="2026-04-05T00:36:26.117288" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:26.117334" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.081987" elapsed="0.035383"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.142482" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "I "s "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:26.117961" elapsed="0.024712"/>
</kw>
<msg time="2026-04-05T00:36:26.142852" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:26.142896" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.117562" elapsed="0.025370"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.143225" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.143010" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.142990" elapsed="0.000337"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.143883" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "I "s "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.143491" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.144243" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.144033" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.144015" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:26.144378" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:26.147759" elapsed="0.000290"/>
</kw>
<msg time="2026-04-05T00:36:26.148126" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.146943" elapsed="0.001294"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.149381" elapsed="0.000055"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.150505" elapsed="0.000041"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:26.145234" elapsed="0.005393"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:26.144651" elapsed="0.006103"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:26.080308" elapsed="0.070581"/>
</kw>
<msg time="2026-04-05T00:36:26.150980" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:26.151027" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.079640" elapsed="0.071425"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:26.151248" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:26.151141" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.151123" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.151755" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.152463" elapsed="0.000036"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.152558" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:26.078973" elapsed="0.073699"/>
</kw>
<msg time="2026-04-05T00:36:26.152766" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:26.152809" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.074489" elapsed="0.078356"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.153175" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.152928" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.152909" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:26.074337" elapsed="0.078938"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:26.074166" elapsed="0.079145"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:26.071787" elapsed="0.081582"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:26.066816" elapsed="0.086624"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.066382" elapsed="0.087104"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:26.063638" elapsed="0.089899"/>
</kw>
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.154790" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.154395" elapsed="0.000422"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.162228" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.161982" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.162679" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.162435" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:26.190659" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:26.190800" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '131'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:26.190896" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:26.164809" elapsed="0.026111"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.162787" elapsed="0.028174"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.191189" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.191036" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.162769" elapsed="0.028506"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.194829" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.192292" elapsed="0.002587"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.192079" elapsed="0.002835"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.192061" elapsed="0.002878"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.197490" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.195209" elapsed="0.002327"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.194994" elapsed="0.002577"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.194977" elapsed="0.002618"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.198116" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.197749" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.198453" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.198213" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.198982" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.198688" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.198535" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.198195" elapsed="0.000868"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.199624" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.199215" elapsed="0.000435"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.199945" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.199721" elapsed="0.000279"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.200482" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.200176" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.200024" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.199702" elapsed="0.000860"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.200704" elapsed="0.000338"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:26.201489" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.201199" elapsed="0.000316"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.201664" elapsed="0.002263"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:26.191660" elapsed="0.012328"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:26.204161" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:26.204057" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.204038" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.204387" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.204472" elapsed="0.000017"/>
</return>
<msg time="2026-04-05T00:36:26.206734" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:26.157756" elapsed="0.049007"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:26.206821" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:26.206969" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:26.155021" elapsed="0.051975"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:26.207073" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:26.207231" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:26.154138" elapsed="0.053121"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.207554" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.207323" elapsed="0.000289"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.207832" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.207636" elapsed="0.000250"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:26.208045" elapsed="0.000363"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.207910" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.207306" elapsed="0.001178"/>
</if>
<arg>&lt;data xmlns="${ODL_NETCONF_NAMESPACE}"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</arg>
<status status="PASS" start="2026-04-05T00:36:26.153750" elapsed="0.054781"/>
</kw>
<doc>Get the device data label and make sure it contains the created content.</doc>
<status status="PASS" start="2026-04-05T00:36:26.063046" elapsed="0.145591"/>
</test>
<test id="s1-s4-s2-t9" name="Modify_Device_Data_Label_Via_Xml" line="86">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:26.212278" elapsed="0.000230"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:26.212022" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.213522" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.213399" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.213381" elapsed="0.000207"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.218511" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.218391" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.218373" elapsed="0.000204"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.219592" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:26.219194" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.220066" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:26.219774" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:26.220136" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:26.220289" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:26.218793" elapsed="0.001521"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.225800" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.225693" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.225674" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.227100" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.226995" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.226976" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:26.227715" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.227304" elapsed="0.000437"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.228149" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:26.227894" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.260234" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:26.228738" elapsed="0.031676"/>
</kw>
<msg time="2026-04-05T00:36:26.260618" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:26.260664" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.228328" elapsed="0.032375"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.280131" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "V "i "a "_ "X "m "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:26.261260" elapsed="0.019098"/>
</kw>
<msg time="2026-04-05T00:36:26.280559" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:26.280604" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.260868" elapsed="0.019773"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.280935" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.280718" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.280698" elapsed="0.000339"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.281592" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "V "i "a "_ "X "m "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.281174" elapsed="0.000486"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.281937" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.281727" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.281708" elapsed="0.000329"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:26.282070" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:26.285319" elapsed="0.000299"/>
</kw>
<msg time="2026-04-05T00:36:26.285697" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.284643" elapsed="0.001160"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.286914" elapsed="0.000040"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.288009" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:26.282947" elapsed="0.005181"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:26.282336" elapsed="0.005919"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:26.226679" elapsed="0.061674"/>
</kw>
<msg time="2026-04-05T00:36:26.288460" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:26.288504" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.226012" elapsed="0.062529"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:26.288725" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:26.288618" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.288600" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.289193" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.289553" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.289625" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:26.225328" elapsed="0.064405"/>
</kw>
<msg time="2026-04-05T00:36:26.289824" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:26.289867" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.220694" elapsed="0.069210"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.290358" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.289978" elapsed="0.000624"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.289960" elapsed="0.000668"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:26.220555" elapsed="0.070097"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:26.220366" elapsed="0.070315"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:26.218039" elapsed="0.072732"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:26.213118" elapsed="0.077708"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.212705" elapsed="0.078165"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:26.209718" elapsed="0.081203"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.291535" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.291090" elapsed="0.000472"/>
</kw>
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.324504" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.324120" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:26.325283" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:26.325016" elapsed="0.000343">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:26.325469" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:26.324692" elapsed="0.000803"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.326064" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:26.325656" elapsed="0.000435"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:26.326387" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:26.326644" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:26.326249" elapsed="0.000423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.327072" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.326828" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.328250" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.327818" elapsed="0.000478"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.328737" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.328468" elapsed="0.000295"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.329418" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:26.329119" elapsed="0.000340"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:26.330408" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.330150" elapsed="0.000317"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:26.330524" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:26.330676" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:26.329645" elapsed="0.001055"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.330850" elapsed="0.000239"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:26.328983" elapsed="0.002147"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.331685" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:26.331368" elapsed="0.000343"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:26.332475" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.332215" elapsed="0.000286"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:26.332603" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:26.332758" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:26.331901" elapsed="0.000882"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.332931" elapsed="0.000224"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:26.331240" elapsed="0.001955"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:26.328812" elapsed="0.004418"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:26.333272" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:26.333442" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:26.327499" elapsed="0.005970"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.327183" elapsed="0.006318"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.333683" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.333526" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.327165" elapsed="0.006596"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.334495" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.333901" elapsed="0.000622"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:26.334572" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:26.323519" elapsed="0.011264"/>
</kw>
<msg time="2026-04-05T00:36:26.334842" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.311007" elapsed="0.023883"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.347061" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.359219" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.371330" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.371531" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.371702" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.372057" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.371919" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:26.371905" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.372270" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.372486" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.372652" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:26.371876" elapsed="0.000829"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.371778" elapsed="0.000952"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.372872" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.372947" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:26.373069" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:26.306817" elapsed="0.066278"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.399184" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.398812" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:26.399913" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:26.399710" elapsed="0.000266">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:26.400067" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:26.399369" elapsed="0.000723"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.400641" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:26.400247" elapsed="0.000421"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:26.400974" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:26.401096" level="INFO">${template} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Modified Content&lt;/l&gt;
&lt;/cont&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:26.400834" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.401536" level="INFO">&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Modified Content&lt;/l&gt;
&lt;/cont&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.401272" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:26.401932" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.401648" elapsed="0.000343"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.402460" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.402156" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.402015" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.401630" elapsed="0.000913"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.403111" level="INFO">${final_text} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Modified Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.402683" elapsed="0.000456"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:26.403186" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:26.398189" elapsed="0.005118"/>
</kw>
<msg time="2026-04-05T00:36:26.403360" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.385874" elapsed="0.017582"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.415555" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.427821" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.440312" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.440536" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.440708" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.441061" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.440922" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:26.440908" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.441274" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.441449" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.441611" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:26.440879" elapsed="0.000783"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.440781" elapsed="0.000907"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.441826" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.441900" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:26.442016" level="INFO">${data} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Modified Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:26.383119" elapsed="0.058925"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:26.443289" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:26.443051" elapsed="0.000301">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:26.443458" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:26.442713" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.443796" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.443556" elapsed="0.000340"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.444405" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.444085" elapsed="0.000369"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.443922" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.443538" elapsed="0.000974"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.446795" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:26.444664" elapsed="0.002157"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:26.446873" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:26.447024" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:26.442376" elapsed="0.004673"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.448455" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.448163" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.448891" level="INFO">&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Modified Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.448651" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.449386" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.449140" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.449841" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.449601" elapsed="0.000284"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:26.450686" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:26.450493" elapsed="0.000219"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:26.451043" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:26.450861" elapsed="0.000207"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.451210" elapsed="0.000196"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.451822" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.451577" elapsed="0.000289"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:26.451907" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:26.452060" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:26.450081" elapsed="0.002003"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:26.513645" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Content-Length': '81', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Modified Content&lt;/l&gt;
&lt;/cont&gt; 
 </msg>
<msg time="2026-04-05T00:36:26.513755" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:26.513950" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:26.454361" elapsed="0.059645"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.452154" elapsed="0.061952"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.514527" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.514164" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.452136" elapsed="0.062586"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.522137" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.516820" elapsed="0.005415"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.516312" elapsed="0.006001"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.516274" elapsed="0.006092"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.526085" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.522992" elapsed="0.003139"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.522517" elapsed="0.003681"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.522480" elapsed="0.003745"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.526774" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.526382" elapsed="0.000418"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.527099" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.526871" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.527658" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.527334" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.527180" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.526853" elapsed="0.000888"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.528250" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.527894" elapsed="0.000383"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.528587" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.528345" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.529114" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.528823" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.528669" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.528328" elapsed="0.000868"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.529338" elapsed="0.000363"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:26.530134" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.529860" elapsed="0.000301"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.530311" elapsed="0.002297"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:26.515517" elapsed="0.017154"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:26.532840" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:26.532736" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.532718" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.533073" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.533139" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:26.535370" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:26.447371" elapsed="0.088027"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:26.535491" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:26.535647" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:26.296208" elapsed="0.239463"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.536035" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.535783" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.535766" elapsed="0.000360"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:26.536158" elapsed="0.000025"/>
</return>
<arg>${directory_with_template_folders}${/}datamod1</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:26.291818" elapsed="0.244459"/>
</kw>
<doc>Send a request to change the sample test data label and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:26.209072" elapsed="0.327316"/>
</test>
<test id="s1-s4-s2-t10" name="Check_Device_Data_Label_Is_Modified" line="91">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:26.541286" elapsed="0.000224"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:26.540972" elapsed="0.000592"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.542528" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.542403" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.542385" elapsed="0.000211"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.547551" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.547438" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.547399" elapsed="0.000218"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.548588" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:26.548196" elapsed="0.000418"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.549058" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:26.548768" elapsed="0.000315"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:26.549127" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:26.549277" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:26.547834" elapsed="0.001466"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.554699" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.554594" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.554575" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.556013" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.555909" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.555892" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:26.556620" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.556219" elapsed="0.000427"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.557059" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:26.556800" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.590369" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:26.557642" elapsed="0.032937"/>
</kw>
<msg time="2026-04-05T00:36:26.590783" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:26.590830" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.557238" elapsed="0.033628"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.612550" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "I "s "_ "M "o "d "i "f "i "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:26.591448" elapsed="0.021290"/>
</kw>
<msg time="2026-04-05T00:36:26.612916" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:26.612961" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.591032" elapsed="0.021965"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.613290" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.613073" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.613054" elapsed="0.000336"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.613935" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "I "s "_ "M "o "d "i "f "i "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.613548" elapsed="0.000454"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.614277" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.614069" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.614051" elapsed="0.000361"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:26.614489" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:26.617688" elapsed="0.000154"/>
</kw>
<msg time="2026-04-05T00:36:26.617917" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.617005" elapsed="0.001014"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.619110" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.620247" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:26.615342" elapsed="0.005022"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:26.614745" elapsed="0.005929"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:26.555612" elapsed="0.065161"/>
</kw>
<msg time="2026-04-05T00:36:26.620863" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:26.620906" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.554910" elapsed="0.066032"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:26.621125" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:26.621018" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.621000" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.621612" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.621939" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.622010" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:26.554237" elapsed="0.067879"/>
</kw>
<msg time="2026-04-05T00:36:26.622207" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:26.622249" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.549672" elapsed="0.072612"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.622648" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.622359" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.622341" elapsed="0.000384"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:26.549536" elapsed="0.073211"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:26.549350" elapsed="0.073425"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:26.547049" elapsed="0.075779"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:26.542122" elapsed="0.080760"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.541708" elapsed="0.081217"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:26.537302" elapsed="0.085674"/>
</kw>
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.624206" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.623827" elapsed="0.000407"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.631819" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.631570" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.632254" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.632012" elapsed="0.000332"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:26.659987" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:26.660112" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '140'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:26.660217" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:26.634504" elapsed="0.025739"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.632412" elapsed="0.027874"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.660481" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.660311" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.632394" elapsed="0.028174"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.663915" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.661556" elapsed="0.002408"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.661324" elapsed="0.002675"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.661306" elapsed="0.002718"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.666577" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.664292" elapsed="0.002330"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.664078" elapsed="0.002581"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.664062" elapsed="0.002624"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.667205" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.666837" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.667543" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.667300" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.668073" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.667777" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.667624" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.667282" elapsed="0.000872"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.668695" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.668318" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.669012" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.668789" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.669558" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.669250" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.669097" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.668772" elapsed="0.000869"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.669782" elapsed="0.000369"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:26.670604" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.670308" elapsed="0.000323"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.670781" elapsed="0.002243"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:26.660907" elapsed="0.012177"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:26.673258" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:26.673153" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.673135" elapsed="0.000252"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.673545" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.673615" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:26.676022" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:26.627098" elapsed="0.048953"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:26.676111" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:26.676259" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:26.624485" elapsed="0.051801"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:26.676329" elapsed="0.000024"/>
</return>
<msg time="2026-04-05T00:36:26.676485" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:26.623570" elapsed="0.052943"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.676774" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.676576" elapsed="0.000254"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.677044" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.676853" elapsed="0.000245"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:26.677253" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.677121" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.676559" elapsed="0.001082"/>
</if>
<arg>&lt;data xmlns="${ODL_NETCONF_NAMESPACE}"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</arg>
<status status="PASS" start="2026-04-05T00:36:26.623175" elapsed="0.054510"/>
</kw>
<doc>Get the device data label and make sure it contains the modified content.</doc>
<status status="PASS" start="2026-04-05T00:36:26.536749" elapsed="0.141046"/>
</test>
<test id="s1-s4-s2-t11" name="Deconfigure_Device_From_Netconf_Temporarily" line="96">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:26.681281" elapsed="0.000221"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:26.681026" elapsed="0.000529"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.682555" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.682445" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.682409" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.687401" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.687297" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.687279" elapsed="0.000226"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.688485" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:26.688093" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.688960" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:26.688666" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:26.689030" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:26.689182" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:26.687725" elapsed="0.001481"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.694693" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.694588" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.694570" elapsed="0.000189"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.695962" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.695858" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.695840" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:26.696601" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.696201" elapsed="0.000427"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.697035" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:26.696782" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.729044" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:26.697630" elapsed="0.031640"/>
</kw>
<msg time="2026-04-05T00:36:26.729469" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:26.729516" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.697215" elapsed="0.032338"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.753931" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ "N "e "t "c "o "n "f "_ "T "e "m "p "o "r "a "r "i "l "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:26.730125" elapsed="0.024231"/>
</kw>
<msg time="2026-04-05T00:36:26.754683" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:26.754732" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.729719" elapsed="0.025052"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.755299" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.754916" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.754867" elapsed="0.000550"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.756180" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ "N "e "t "c "o "n "f "_ "T "e "m "p "o "r "a "r "i "l "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.755588" elapsed="0.000670"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.756564" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.756327" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.756308" elapsed="0.000359"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:26.756708" elapsed="0.000050"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:26.760657" elapsed="0.000165"/>
</kw>
<msg time="2026-04-05T00:36:26.760915" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.759786" elapsed="0.001264"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.762367" elapsed="0.000043"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.763542" elapsed="0.000039"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:26.757793" elapsed="0.005875"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:26.757089" elapsed="0.006708"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:26.695561" elapsed="0.068339"/>
</kw>
<msg time="2026-04-05T00:36:26.764001" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:26.764047" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.694903" elapsed="0.069187"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:26.764280" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:26.764170" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.764151" elapsed="0.000216"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.764834" elapsed="0.000052"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.765323" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.765397" elapsed="0.000035"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:26.694239" elapsed="0.071296"/>
</kw>
<msg time="2026-04-05T00:36:26.765637" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:26.765683" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.689574" elapsed="0.076150"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.766096" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.765816" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.765796" elapsed="0.000379"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:26.689437" elapsed="0.076762"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:26.689257" elapsed="0.076979"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:26.686946" elapsed="0.079357"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:26.682144" elapsed="0.084223"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.681698" elapsed="0.084719"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:26.678948" elapsed="0.087550"/>
</kw>
<kw name="Remove_Device_From_Netconf" owner="NetconfKeywords">
<kw name="Pop From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:26.767405" level="INFO">${device_type} = full-uri-device</msg>
<var>${device_type}</var>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<doc>Pops the given ``key`` from the ``dictionary`` and returns its value.</doc>
<status status="PASS" start="2026-04-05T00:36:26.767113" elapsed="0.000506"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.768243" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.767792" elapsed="0.000478"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:26.786847" elapsed="0.000424"/>
</kw>
<msg time="2026-04-05T00:36:26.787324" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.786485" elapsed="0.000890"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:26.786075" elapsed="0.001408"/>
</kw>
<msg time="2026-04-05T00:36:26.787528" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.777628" elapsed="0.009943"/>
</kw>
<msg time="2026-04-05T00:36:26.787673" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:26.777271" elapsed="0.010426"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.829414" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.829041" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:26.830241" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:26.829956" elapsed="0.000375">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:26.830440" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:26.829622" elapsed="0.000844"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.831025" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:26.830625" elapsed="0.000468"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:26.831396" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:26.831657" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:26.831255" elapsed="0.000429"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.832086" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.831839" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.833116" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.832860" elapsed="0.000301"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.833595" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.833314" elapsed="0.000306"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.834286" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:26.833986" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:26.835263" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.835004" elapsed="0.000286"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:26.835342" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:26.835523" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:26.834681" elapsed="0.000868"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.835702" elapsed="0.000233"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:26.833854" elapsed="0.002122"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.836580" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:26.836246" elapsed="0.000361"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:26.837373" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.837136" elapsed="0.000263"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:26.837470" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:26.837620" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:26.836790" elapsed="0.000854"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.837790" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:26.836114" elapsed="0.001936"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:26.833675" elapsed="0.004410"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:26.838127" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:26.838279" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:26.832535" elapsed="0.005769"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.832211" elapsed="0.006124"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.838523" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.838360" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.832192" elapsed="0.006407"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.839336" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.838742" elapsed="0.000622"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:26.839412" elapsed="0.000043"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:26.828406" elapsed="0.011145"/>
</kw>
<msg time="2026-04-05T00:36:26.839604" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.815994" elapsed="0.023657"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.852091" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.864227" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.876433" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.876629" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.876800" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.877165" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.877023" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:26.877009" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.877380" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.877559" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.877719" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:26.876977" elapsed="0.000795"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.876878" elapsed="0.000919"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.877941" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.878016" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:26.878135" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:26.811779" elapsed="0.066382"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.879261" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.879011" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:26.890907" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:26.890957" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:26.891090" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:26.881592" elapsed="0.009524"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.879373" elapsed="0.011783"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.891331" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.891183" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.879355" elapsed="0.012059"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.894748" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.892452" elapsed="0.002339"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.892219" elapsed="0.002609"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.892201" elapsed="0.002651"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.897968" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.895128" elapsed="0.002903"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.894907" elapsed="0.003173"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.894890" elapsed="0.003224"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.898899" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.898347" elapsed="0.000591"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.899358" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.899036" elapsed="0.000449"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.900160" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.899744" elapsed="0.000451"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.899522" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.899011" elapsed="0.001263"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.901016" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.900514" elapsed="0.000539"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.901484" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.901148" elapsed="0.000418"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.902222" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:26.901815" elapsed="0.000443"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:26.901599" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.901124" elapsed="0.001211"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.902563" elapsed="0.000480"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:26.903728" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:26.903268" elapsed="0.000497"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.903982" elapsed="0.003200"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:26.891814" elapsed="0.015454"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:26.907365" elapsed="0.000045"/>
</return>
<msg time="2026-04-05T00:36:26.909799" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:36:26.878438" elapsed="0.031388"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:26.909880" elapsed="0.000026"/>
</return>
<arg>${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>${mapping}</arg>
<arg>session=${session}</arg>
<arg>location=${location}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:36:26.787918" elapsed="0.122083"/>
</kw>
<arg>${device_name}</arg>
<doc>Tell Netconf to deconfigure the specified device</doc>
<status status="PASS" start="2026-04-05T00:36:26.766741" elapsed="0.143321"/>
</kw>
<doc>Make request to deconfigure the testtool device on Netconf connector.
This is the first part of the "configure/deconfigure" cycle of the device
The purpose of cycling the device like this is to see that the configuration
data was really stored in the device.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:26.678056" elapsed="0.232131"/>
</test>
<test id="s1-s4-s2-t12" name="Wait_For_Device_To_Be_Gone" line="105">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:26.914041" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:26.913777" elapsed="0.000564"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.915362" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.915225" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.915206" elapsed="0.000247"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.920512" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.920368" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.920350" elapsed="0.000230"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.921566" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:26.921172" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.922041" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:26.921749" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:26.922111" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:26.922262" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:26.920805" elapsed="0.001482"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.927680" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.927573" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.927554" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.928979" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:26.928874" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.928856" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:26.929591" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:26.929187" elapsed="0.000430"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.930032" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:26.929771" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.961919" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:26.930616" elapsed="0.031485"/>
</kw>
<msg time="2026-04-05T00:36:26.962284" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:26.962331" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.930211" elapsed="0.032157"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:26.981010" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "_ "G "o "n "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:26.962982" elapsed="0.018219"/>
</kw>
<msg time="2026-04-05T00:36:26.981380" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:26.981453" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "_ "G "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.962552" elapsed="0.018940"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.981792" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.981572" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.981551" elapsed="0.000345"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:26.982439" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "_ "G "o "n "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:26.982037" elapsed="0.000487"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.982873" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.982610" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.982580" elapsed="0.000408"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:26.983082" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:26.986666" elapsed="0.000153"/>
</kw>
<msg time="2026-04-05T00:36:26.986897" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:26.985847" elapsed="0.001160"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.988205" elapsed="0.000042"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.989322" elapsed="0.000219"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:26.984111" elapsed="0.005520"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:26.983408" elapsed="0.006350"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:26.928574" elapsed="0.061286"/>
</kw>
<msg time="2026-04-05T00:36:26.989954" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:26.989997" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "_ "G "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.927895" elapsed="0.062139"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:26.990219" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:26.990111" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.990092" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.990769" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.991106" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:26.991177" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:26.927214" elapsed="0.064070"/>
</kw>
<msg time="2026-04-05T00:36:26.991377" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:26.991587" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "_ "G "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.922663" elapsed="0.068966"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:26.991949" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:26.991705" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:26.991687" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:26.922523" elapsed="0.069525"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:26.922338" elapsed="0.069741"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:26.920007" elapsed="0.072125"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:26.914940" elapsed="0.077247"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:26.914508" elapsed="0.077726"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:26.911293" elapsed="0.080993"/>
</kw>
<kw name="Wait_Device_Fully_Removed" owner="NetconfKeywords">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Completely_Gone" owner="NetconfKeywords">
<kw name="Check_Device_Has_No_Netconf_Connector" owner="NetconfKeywords">
<kw name="Count_Netconf_Connectors_For_Device" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.005539" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.003297" elapsed="0.002270"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.005896" elapsed="0.000022"/>
</kw>
<var name="${nv}"/>
<status status="NOT RUN" start="2026-04-05T00:36:27.005744" elapsed="0.000209"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.005621" elapsed="0.000357"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.006345" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.006042" elapsed="0.000364"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.007175" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.006698" elapsed="0.000504"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.006457" elapsed="0.000781"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.007443" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.007263" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.006025" elapsed="0.001497"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:27.007556" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:27.007705" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:27.002851" elapsed="0.004880"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:27.007779" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:27.007918" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:27.002295" elapsed="0.005649"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.022826" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.022172" elapsed="0.000767"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.023458" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.023199" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:27.033985" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:27.034185" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1181'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-05T00:36:27.034330" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:27.025626" elapsed="0.008740"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.023584" elapsed="0.010874"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.034707" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.034500" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.023559" elapsed="0.011267"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.056166" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.036277" elapsed="0.019945"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.035970" elapsed="0.020286"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.035944" elapsed="0.020336"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.075362" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.057403" elapsed="0.018007"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.056335" elapsed="0.019488"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.056319" elapsed="0.019529"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.076443" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:27.076025" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.076774" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.076541" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.077528" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.077009" elapsed="0.000547"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.076854" elapsed="0.000738"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.076523" elapsed="0.001090"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.078126" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:27.077765" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.078462" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.078221" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.079021" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.078700" elapsed="0.000348"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.078545" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.078203" elapsed="0.000901"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:27.079253" elapsed="0.000370"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:27.080119" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:27.079786" elapsed="0.000359"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.080297" elapsed="0.002734"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:27.035359" elapsed="0.047737"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.083273" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:27.083166" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.083148" elapsed="0.000197"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:27.086626" level="INFO">${text_normalized} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:27.083509" elapsed="0.003147"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:27.086708" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:36:27.086873" level="INFO">${response_text} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:27.011812" elapsed="0.075087"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:27.086956" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:27.087103" level="INFO">${mounts} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${mounts}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:27.008229" elapsed="0.078900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.087562" level="INFO">{
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topology-parameters": {
       "encryption": {
        "encryption-alg": [
         "AEAD_AES_128_GCM",
         "AEAD_AES_256_GCM",
         "aes128-cbc",
         "aes128-ctr",
         "aes192-cbc",
         "aes192-ctr",
         "aes256-cbc",
         "aes256-ctr",
         "chacha20-poly1305"
        ]
       },
       "host-key": {
        "host-key-alg": [
         "ecdsa-sha2-nistp256",
         "ecdsa-sha2-nistp384",
         "ecdsa-sha2-nistp521",
         "rsa-sha2-256",
         "rsa-sha2-512",
         "ssh-ed25519",
         "ssh-rsa"
        ]
       },
       "key-exchange": {
        "key-exchange-alg": [
         "curve25519-sha256",
         "curve448-sha512",
         "diffie-hellman-group-exchange-sha256",
         "diffie-hellman-group14-sha256",
         "diffie-hellman-group15-sha512",
         "diffie-hellman-group16-sha512",
         "diffie-hellman-group17-sha512",
         "diffie-hellman-group18-sha512",
         "ecdh-sha2-nistp256",
         "ecdh-sha2-nistp384",
         "ecdh-sha2-nistp521",
         "mlkem1024nistp384-sha384",
         "mlkem768nistp256-sha256",
         "mlkem768x25519-sha256",
         "sntrup761x25519-sha512"
        ]
       },
       "mac": {
        "mac-alg": [
         "hmac-sha1",
         "hmac-sha2-256",
         "hmac-sha2-512"
        ]
       }
      }
     }
    }
   },
   {
    "topology-id": "flow:1"
   },
   {
    "topology-id": "hwvtep:1"
   },
   {
    "topology-id": "ovsdb:1"
   }
  ]
 }
}
</msg>
<arg>${mounts}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.087290" elapsed="0.000367"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.088206" level="INFO">${actual_count} = 0</msg>
<var>${actual_count}</var>
<arg>len('''${mounts}'''.split('"node-id": "${device_name}"'))-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:27.087809" elapsed="0.000424"/>
</kw>
<return>
<value>${actual_count}</value>
<status status="PASS" start="2026-04-05T00:36:27.088278" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:27.088447" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Count all instances of the specified device in the Netconf topology (usually 0 or 1).</doc>
<status status="PASS" start="2026-04-05T00:36:26.994575" elapsed="0.093898"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.088888" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${count}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:27.088629" elapsed="0.000314"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Check that there are no instances of the specified device in the Netconf topology.</doc>
<status status="PASS" start="2026-04-05T00:36:26.994040" elapsed="0.094964"/>
</kw>
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.101339" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.097114" elapsed="0.004252"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.102069" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.101744" elapsed="0.000351"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:27.101592" elapsed="0.000539"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.102693" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.102356" elapsed="0.000363"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:27.102210" elapsed="0.000545"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:27.101446" elapsed="0.001337"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.103566" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.103085" elapsed="0.000508"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.102850" elapsed="0.000778"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.103817" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.103653" elapsed="0.000218"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.104046" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.103894" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.102832" elapsed="0.001292"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:27.104157" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:27.104302" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:27.096670" elapsed="0.007657"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:27.104372" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:27.104529" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>config</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:27.096090" elapsed="0.008464"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:27.110114" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:27.110220" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-05T00:36:27.110323" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:27.105316" elapsed="0.005032"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-05T00:36:27.115137" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-05T00:36:27.110448" elapsed="0.004772"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.110409" elapsed="0.004844"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.115479" elapsed="0.000033"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.115758" elapsed="0.000030"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config in default using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-05T00:36:27.104910" elapsed="0.010958"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device has no Netconf connectors nor associated data.</doc>
<status status="PASS" start="2026-04-05T00:36:26.993506" elapsed="0.122440"/>
</kw>
<arg>${timeout}</arg>
<arg>${period}</arg>
<arg>Check_Device_Completely_Gone</arg>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:26.992910" elapsed="0.123109"/>
</kw>
<arg>${device_name}</arg>
<doc>Wait until all netconf connectors for the device with the given name disappear.
Call of Remove_Device_From_Netconf returns before netconf gets
around deleting the device's connector. To ensure the device is
really gone from netconf, use this keyword to make sure all
connectors disappear. If a call to Remove_Device_From_Netconf
is not made before using this keyword, the wait will fail.
Using this keyword is more readable than putting the WUKS below
into a test case.</doc>
<status status="PASS" start="2026-04-05T00:36:26.992511" elapsed="0.123594"/>
</kw>
<doc>Wait for the device to completely disappear.</doc>
<status status="PASS" start="2026-04-05T00:36:26.910654" elapsed="0.205615"/>
</test>
<test id="s1-s4-s2-t13" name="Configure_The_Device_Back" line="109">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:27.121447" elapsed="0.000293"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:27.121061" elapsed="0.000754"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.123173" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:27.123024" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.122999" elapsed="0.000269"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.128920" elapsed="0.000909"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:27.128814" elapsed="0.001052"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.128796" elapsed="0.001093"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.130918" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:27.130519" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.131398" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:27.131103" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:27.131485" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:27.131641" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:27.130119" elapsed="0.001547"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.137360" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:27.137252" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.137232" elapsed="0.000218"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.138682" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:27.138577" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.138558" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:27.139276" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.138890" elapsed="0.000412"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:27.139734" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:27.139475" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:27.168242" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:27.140299" elapsed="0.028190"/>
</kw>
<msg time="2026-04-05T00:36:27.168686" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:27.168730" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:27.139915" elapsed="0.028852"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:27.190476" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "o "n "f "i "g "u "r "e "_ "T "h "e "_ "D "e "v "i "c "e "_ "B "a "c "k "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:27.169329" elapsed="0.021569"/>
</kw>
<msg time="2026-04-05T00:36:27.191303" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:27.191406" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "o "n "f "i "g "u "r "e "_ "T "h "e "_ "D "e "v "i "c "e "_ "B "a "c ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:27.168935" elapsed="0.022590"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.192190" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.191700" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.191656" elapsed="0.000819"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.193683" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "o "n "f "i "g "u "r "e "_ "T "h "e "_ "D "e "v "i "c "e "_ "B "a "c "k "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.192784" elapsed="0.001045"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.194477" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.193977" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.193937" elapsed="0.000766"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:27.194775" elapsed="0.000062"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:27.199321" elapsed="0.000163"/>
</kw>
<msg time="2026-04-05T00:36:27.199560" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:27.198598" elapsed="0.001067"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.200750" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.201862" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:27.196749" elapsed="0.005234"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:27.195327" elapsed="0.006790"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:27.138250" elapsed="0.063968"/>
</kw>
<msg time="2026-04-05T00:36:27.202309" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:27.202353" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "o "n "f "i "g "u "r "e "_ "T "h "e "_ "D "e "v "i "c "e "_ "B "a "c ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:27.137599" elapsed="0.064790"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:27.202595" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:36:27.202487" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.202468" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.203078" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.203407" elapsed="0.000039"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.203493" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:27.136779" elapsed="0.066822"/>
</kw>
<msg time="2026-04-05T00:36:27.203693" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:27.203735" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "o "n "f "i "g "u "r "e "_ "T "h "e "_ "D "e "v "i "c "e "_ "B "a "c ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:27.132022" elapsed="0.071749"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.204089" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.203846" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.203829" elapsed="0.000346"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:27.131885" elapsed="0.072313"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:27.131717" elapsed="0.072508"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:27.128459" elapsed="0.075857"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:27.122627" elapsed="0.081745"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:27.122018" elapsed="0.082423"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:27.117734" elapsed="0.086761"/>
</kw>
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:27.225682" elapsed="0.000419"/>
</kw>
<msg time="2026-04-05T00:36:27.226153" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:27.225306" elapsed="0.000896"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:27.224925" elapsed="0.001351"/>
</kw>
<msg time="2026-04-05T00:36:27.226318" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:27.216467" elapsed="0.009893"/>
</kw>
<msg time="2026-04-05T00:36:27.226479" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:27.216126" elapsed="0.010378"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.227392" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.226666" elapsed="0.000768"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.227844" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.227526" elapsed="0.000396"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.259402" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.259031" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:27.260213" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:27.259950" elapsed="0.000344">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:27.260387" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:27.259618" elapsed="0.000793"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.260970" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:27.260591" elapsed="0.000406"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:27.261291" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:27.261470" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:27.261155" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.261893" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.261652" elapsed="0.000338"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.262949" level="INFO">mapping: {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.262691" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.263408" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.263149" elapsed="0.000299"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.264358" level="INFO">${value} = 10.30.170.167</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:27.263822" elapsed="0.000562"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:27.265631" level="INFO">${encoded} = 10.30.170.167</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.265076" elapsed="0.000597"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:27.265799" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:27.266036" level="INFO">${encoded_value} = 10.30.170.167</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:27.264595" elapsed="0.001467"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.266211" elapsed="0.000552"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.167</var>
<status status="PASS" start="2026-04-05T00:36:27.263691" elapsed="0.003115"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.267723" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:27.267044" elapsed="0.000706"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:27.268948" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.268395" elapsed="0.000596"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:27.269117" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:27.269357" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:27.267934" elapsed="0.001448"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.269568" elapsed="0.000530"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:27.266916" elapsed="0.003225"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.270931" level="INFO">${value} = 17830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:27.270381" elapsed="0.000577"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:27.272171" level="INFO">${encoded} = 17830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.271639" elapsed="0.000574"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:27.272342" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:27.272598" level="INFO">${encoded_value} = 17830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:27.271144" elapsed="0.001479"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.272772" elapsed="0.000527"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">17830</var>
<status status="PASS" start="2026-04-05T00:36:27.270253" elapsed="0.003088"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.274394" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:27.273680" elapsed="0.000755"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:27.275642" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.275072" elapsed="0.000613"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:27.275813" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:27.276049" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:27.274621" elapsed="0.001453"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.276221" elapsed="0.000636"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:36:27.273550" elapsed="0.003351"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.277829" level="INFO">${value} = topsecret</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:27.277141" elapsed="0.000715"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:27.279035" level="INFO">${encoded} = topsecret</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.278505" elapsed="0.000621"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:27.279257" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:27.279561" level="INFO">${encoded_value} = topsecret</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:27.278037" elapsed="0.001550"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.279735" elapsed="0.000533"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">topsecret</var>
<status status="PASS" start="2026-04-05T00:36:27.277012" elapsed="0.003299"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.281106" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:27.280568" elapsed="0.000565"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:27.282450" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.281908" elapsed="0.000586"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:27.282621" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:27.282858" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:27.281315" elapsed="0.001568"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.283030" elapsed="0.000574"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:36:27.280438" elapsed="0.003208"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.284492" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:27.283887" elapsed="0.000631"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:27.285837" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.285158" elapsed="0.000722"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:27.286006" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:27.286243" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:27.284702" elapsed="0.001566"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.286416" elapsed="0.000540"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:36:27.283760" elapsed="0.003239"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.287814" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:27.287249" elapsed="0.000591"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:27.289027" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.288496" elapsed="0.000577"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:27.289229" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:27.289610" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:27.288023" elapsed="0.001613"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.289785" elapsed="0.000517"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:27.287110" elapsed="0.003235"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:27.263508" elapsed="0.026872"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:27.290437" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:27.290601" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:27.262355" elapsed="0.028272"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.262061" elapsed="0.028598"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.290828" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.290684" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.262042" elapsed="0.028862"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.291795" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:27.291044" elapsed="0.000779"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:27.291873" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:27.258412" elapsed="0.033586"/>
</kw>
<msg time="2026-04-05T00:36:27.292096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:27.245793" elapsed="0.046353"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.305056" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.317323" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.329831" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.330021" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.330189" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.330565" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.330409" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:27.330394" elapsed="0.000251"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.330792" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.330954" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.331118" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:27.330365" elapsed="0.000804"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.330265" elapsed="0.000930"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.331336" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.331411" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:36:27.331549" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:27.241459" elapsed="0.090116"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.357569" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.357181" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:27.358322" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:27.358080" elapsed="0.000306">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:27.358547" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:27.357753" elapsed="0.000819"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.359139" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:27.358745" elapsed="0.000421"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:27.359473" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:27.359599" level="INFO">${template} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVI...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:27.359323" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.360021" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;$DEVICE_USER&lt;/username&gt;
      &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.359779" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:27.360437" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.360139" elapsed="0.000358"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.360959" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.360664" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.360522" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.360121" elapsed="0.000921"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.361877" level="INFO">${final_text} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.167&lt;/host&gt;
    &lt;...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:27.361182" elapsed="0.000725"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:27.361956" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:27.356583" elapsed="0.005497"/>
</kw>
<msg time="2026-04-05T00:36:27.362135" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:27.344031" elapsed="0.018152"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.374723" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.386957" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.399176" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.399410" elapsed="0.000037"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.399600" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.399956" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.399816" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:27.399802" elapsed="0.000232"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.400173" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.400333" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.400511" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:27.399772" elapsed="0.000794"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.399673" elapsed="0.000918"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.400732" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.400805" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:27.400928" level="INFO">${data} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.167&lt;/host&gt;
    &lt;...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:27.341392" elapsed="0.059564"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:27.402201" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:27.401948" elapsed="0.000321">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:27.402360" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:27.401615" elapsed="0.000769"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.402718" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.402478" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.403246" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.402957" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.402799" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.402459" elapsed="0.000869"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.405635" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:27.403490" elapsed="0.002172"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:27.405712" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:27.405864" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:27.401282" elapsed="0.004606"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.407334" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.407044" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.407790" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.167&lt;/host&gt;
    &lt;port&gt;17830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;topsecret&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.407552" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.408271" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.408025" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.408717" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.408477" elapsed="0.000282"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:27.409566" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:27.409356" elapsed="0.000235"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:27.409941" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:27.409741" elapsed="0.000226"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.410111" elapsed="0.000196"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.410727" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.410481" elapsed="0.000290"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:27.410812" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:27.410965" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:27.408958" elapsed="0.002032"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:27.426222" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Content-Length': '452', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.167&lt;/host&gt;
    &lt;port&gt;17830&lt;/port&gt;
    &lt;login-password-unencrypted&gt;
      &lt;username&gt;admin&lt;/username&gt;
      &lt;password&gt;topsecret&lt;/password&gt;
    &lt;/login-password-unencrypted&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt; 
 </msg>
<msg time="2026-04-05T00:36:27.426298" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:27.426461" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:27.413255" elapsed="0.013245"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.411060" elapsed="0.015503"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.426807" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.426599" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.411042" elapsed="0.015886"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.431484" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.428231" elapsed="0.003314"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.427929" elapsed="0.003665"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.427903" elapsed="0.003725"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.435191" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.432010" elapsed="0.003244"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.431706" elapsed="0.003595"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.431683" elapsed="0.003652"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.436090" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:27.435571" elapsed="0.000556"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.436564" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.436223" elapsed="0.000422"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.437307" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.436895" elapsed="0.000448"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.436679" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.436199" elapsed="0.001240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.438197" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:27.437681" elapsed="0.000552"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.438670" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.438330" elapsed="0.000465"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.439486" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.439050" elapsed="0.000474"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.438830" elapsed="0.000743"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.438305" elapsed="0.001297"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:27.439803" elapsed="0.000483"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:27.440915" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:27.440530" elapsed="0.000420"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.441160" elapsed="0.003309"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:27.427417" elapsed="0.017141"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:27.444797" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-05T00:36:27.444650" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.444624" elapsed="0.000292"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.445116" elapsed="0.000029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.445208" elapsed="0.000021"/>
</return>
<msg time="2026-04-05T00:36:27.447705" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:27.406244" elapsed="0.041487"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:27.447794" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:27.447943" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:27.230782" elapsed="0.217185"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.448300" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.448066" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.448047" elapsed="0.000345"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:27.448443" elapsed="0.000027"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:27.228197" elapsed="0.220371"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.227948" elapsed="0.220662"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.227508" elapsed="0.221124"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.448769" elapsed="0.000232"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=${device_type}</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:36:27.204770" elapsed="0.244294"/>
</kw>
<doc>Configure the device again.
This is the second step of the device configuration.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:27.116779" elapsed="0.332392"/>
</test>
<test id="s1-s4-s2-t14" name="Wait_For_Device_To_Reconnect" line="115">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:27.452480" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:27.452207" elapsed="0.000534"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.453730" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:27.453615" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.453596" elapsed="0.000201"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.458913" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:27.458806" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.458787" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.460043" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:27.459663" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.460537" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:27.460227" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:27.460608" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:27.460761" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:27.459198" elapsed="0.001587"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.466113" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:27.466006" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.465987" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.467391" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:27.467285" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.467268" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:27.468002" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.467622" elapsed="0.000406"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:27.468452" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:27.468181" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:27.500271" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:27.469019" elapsed="0.031555"/>
</kw>
<msg time="2026-04-05T00:36:27.500779" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:27.500826" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:27.468633" elapsed="0.032229"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:27.527792" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:27.501518" elapsed="0.026466"/>
</kw>
<msg time="2026-04-05T00:36:27.528162" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:27.528207" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "R "e "c "o "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:27.501065" elapsed="0.027179"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.528593" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.528329" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.528305" elapsed="0.000393"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.529260" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "R "e "c "o "n "n "e "c "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.528860" elapsed="0.000468"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.529625" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.529394" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.529376" elapsed="0.000350"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:27.529760" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:27.533109" elapsed="0.000364"/>
</kw>
<msg time="2026-04-05T00:36:27.533551" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:27.532364" elapsed="0.001296"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.534743" elapsed="0.000042"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.535895" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:27.530658" elapsed="0.005359"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:27.530039" elapsed="0.006106"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:27.466985" elapsed="0.069260"/>
</kw>
<msg time="2026-04-05T00:36:27.536337" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:27.536381" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "R "e "c "o "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:27.466324" elapsed="0.070094"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:27.536635" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:36:27.536525" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.536506" elapsed="0.000222"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.537133" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.537655" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.537728" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:27.465673" elapsed="0.072163"/>
</kw>
<msg time="2026-04-05T00:36:27.537930" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:27.537973" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "R "e "c "o "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:27.461144" elapsed="0.076866"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.538332" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.538087" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.538069" elapsed="0.000341"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:27.461002" elapsed="0.077446"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:27.460836" elapsed="0.077643"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:27.458444" elapsed="0.080090"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:27.453299" elapsed="0.085293"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:27.452886" elapsed="0.085752"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:27.450041" elapsed="0.088649"/>
</kw>
<kw name="Wait_Device_Connected" owner="NetconfKeywords">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Connected" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.550615" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.548550" elapsed="0.002091"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.551299" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.550977" elapsed="0.000348"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:27.550829" elapsed="0.000531"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.551916" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.551601" elapsed="0.000341"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:27.551454" elapsed="0.000523"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:27.550695" elapsed="0.001311"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.552303" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.552068" elapsed="0.000291"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.553109" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.552644" elapsed="0.000533"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.552382" elapsed="0.000834"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.553401" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.553241" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.552051" elapsed="0.001443"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:27.553527" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:27.553673" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:27.548088" elapsed="0.005610"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:27.553744" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:27.553884" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:27.547538" elapsed="0.006371"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.561345" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.561097" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.561799" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.561555" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:27.571787" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:27.571938" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password-unencrypted":{"username":"admin","password":"topsecret"},"host":"10.30.170.167"}}]} 
 </msg>
<msg time="2026-04-05T00:36:27.572034" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:27.564044" elapsed="0.008018"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.561909" elapsed="0.010198"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.572282" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.572133" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.561891" elapsed="0.010489"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.575769" level="INFO">{"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password-unencrypted":{"username":"admin","password":"topsecret"},"host":"10.30.170.167"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.573391" elapsed="0.002425"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.573176" elapsed="0.002675"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.573158" elapsed="0.002718"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.579225" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:27.576148" elapsed="0.003144"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.575931" elapsed="0.003412"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.575915" elapsed="0.003464"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.580197" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:27.579630" elapsed="0.000606"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.580728" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.580354" elapsed="0.000460"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.581546" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.581083" elapsed="0.000501"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.580849" elapsed="0.000787"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.580328" elapsed="0.001339"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.582439" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:27.581893" elapsed="0.000587"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:27.582983" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:27.582643" elapsed="0.000426"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.583799" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:27.583335" elapsed="0.000502"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:27.583105" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.582615" elapsed="0.001306"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:27.584137" elapsed="0.000552"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:27.585352" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:27.584928" elapsed="0.000462"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:27.585635" elapsed="0.003283"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:27.572757" elapsed="0.016224"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:27.589162" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:27.589052" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:27.589033" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:27.592047" level="INFO">${text_normalized} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password-unencrypted": {
     "password": "t...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:27.589369" elapsed="0.002706"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:27.592127" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:27.592293" level="INFO">${response_text} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password-unencrypted": {
     "password": "t...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:27.556775" elapsed="0.035544"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:27.592377" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:27.592552" level="INFO">${device_status} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password-unencrypted": {
     "password": "t...</msg>
<var>${device_status}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:27.554131" elapsed="0.038447"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-05T00:36:27.593098" level="FAIL">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password-unencrypted": {
     "password": "topsecret",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</msg>
<arg>${device_status}</arg>
<arg>connection-status": "connected"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-05T00:36:27.592735" elapsed="0.000439">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password-unencrypted": {
     "password": "topsecret",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device is accessible from Netconf.</doc>
<status status="FAIL" start="2026-04-05T00:36:27.539907" elapsed="0.053395">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password-unencrypted": {
     "password": "topsecret",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<kw name="Check_Device_Connected" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.612543" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:28.610150" elapsed="0.002427"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.613282" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:28.612957" elapsed="0.000352"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:28.612803" elapsed="0.000541"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.613898" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:28.613584" elapsed="0.000342"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:28.613437" elapsed="0.000613"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:28.612655" elapsed="0.001426"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.614449" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.614160" elapsed="0.000348"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.615259" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:28.614784" elapsed="0.000502"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:28.614534" elapsed="0.000788"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.615523" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.615347" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.614139" elapsed="0.001461"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:28.615638" elapsed="0.000039"/>
</return>
<msg time="2026-04-05T00:36:28.615801" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:28.609658" elapsed="0.006168"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:28.615873" elapsed="0.000024"/>
</return>
<msg time="2026-04-05T00:36:28.616010" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:28.609044" elapsed="0.006991"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.625174" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:28.624908" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.625639" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:28.625373" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:28.637323" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:28.637921" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3506'} 
 body={"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"negotiated-ssh-transport-parameters":{"encryption-alg":"chacha20-poly1305@openssh.com","host-key-alg":"rsa-sha2-512","mac-alg":"aead","key-exchange-alg":"sntrup761x25519-sha512"},"session-id":2,"connection-status":"connected","login-password-unencrypted":{"username":"admin","password":"topsecret"},"host":"10.30.170.167","available-capabilities":{"available-capability":[{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:notification:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:exi:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:candidate:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.0"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?revision=2014-08-18)people"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car?revision=2014-08-18)car"},{"capability-origin":"device-advertised","capability":"(ns:main?revision=2014-01-21)main"},{"capability-origin":"device-advertised","capability":"(ns:augment:main:a?revision=2014-01-21)augment-main-a"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:netconf:monitoring?revision=2022-07-18)odl-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension"},{"capability-origin":"device-advertised","capability":"(org:opendaylight:coretutorials:ncmount:example:l2fib?revision=2016-03-07)ncmount-l2fib"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people?revision=2014-08-18)car-people"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)car-purchase"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:test:netconf:crud?revision=2014-10-18)test"},{"capability-origin":"device-advertised","capability":"(https://example.com/ns/example-action?revision=2016-07-07)example-action"},{"capability":"(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:yang:extension:yang-ext?revision=2013-07-09)yang-ext"}]}}}]} 
 </msg>
<msg time="2026-04-05T00:36:28.638093" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:28.627788" elapsed="0.010334"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:28.625752" elapsed="0.012412"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.638339" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.638190" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.625733" elapsed="0.012706"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.645853" level="INFO">{"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"negotiated-ssh-transport-parameters":{"encryption-alg":"chacha20-poly1305@openssh.com","host-key-alg":"rsa-sha2-512","mac-alg":"aead","key-exchange-alg":"sntrup761x25519-sha512"},"session-id":2,"connection-status":"connected","login-password-unencrypted":{"username":"admin","password":"topsecret"},"host":"10.30.170.167","available-capabilities":{"available-capability":[{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:notification:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:exi:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:candidate:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.0"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?revision=2014-08-18)people"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car?revision=2014-08-18)car"},{"capability-origin":"device-advertised","capability":"(ns:main?revision=2014-01-21)main"},{"capability-origin":"device-advertised","capability":"(ns:augment:main:a?revision=2014-01-21)augment-main-a"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:netconf:monitoring?revision=2022-07-18)odl-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension"},{"capability-origin":"device-advertised","capability":"(org:opendaylight:coretutorials:ncmount:example:l2fib?revision=2016-03-07)ncmount-l2fib"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people?revision=2014-08-18)car-people"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)car-purchase"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:test:netconf:crud?revision=2014-10-18)test"},{"capability-origin":"device-advertised","capability":"(https://example.com/ns/example-action?revision=2016-07-07)example-action"},{"capability":"(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:yang:extension:yang-ext?revision=2013-07-09)yang-ext"}]}}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:28.640050" elapsed="0.005963"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:28.639556" elapsed="0.006537"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.639511" elapsed="0.006638"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.651764" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:28.646868" elapsed="0.004942"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:28.646274" elapsed="0.005571"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.646236" elapsed="0.005634"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.652435" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:28.652028" elapsed="0.000435"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.652760" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.652533" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.653293" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:28.652995" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:28.652841" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.652515" elapsed="0.000860"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.653899" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:28.653541" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.654221" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.653996" elapsed="0.000281"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.654784" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:28.654492" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:28.654300" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.653978" elapsed="0.000918"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:28.655051" elapsed="0.000351"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:28.655881" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:28.655578" elapsed="0.000330"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:28.656056" elapsed="0.002265"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:28.638838" elapsed="0.019555"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:28.658597" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:28.658486" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.658467" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:28.662116" level="INFO">${text_normalized} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:28.658803" elapsed="0.003342"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:28.662198" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:28.662376" level="INFO">${response_text} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:28.620622" elapsed="0.041781"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:28.662484" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:28.662634" level="INFO">${device_status} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${device_status}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:28.616255" elapsed="0.046404"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${device_status}</arg>
<arg>connection-status": "connected"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:28.662818" elapsed="0.000317"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device is accessible from Netconf.</doc>
<status status="PASS" start="2026-04-05T00:36:28.594197" elapsed="0.068999"/>
</kw>
<arg>${timeout}</arg>
<arg>${period}</arg>
<arg>Check_Device_Connected</arg>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:27.539310" elapsed="1.123937"/>
</kw>
<arg>${device_name}</arg>
<doc>Wait for the device to become connected.
It is more readable to use this keyword in a test case than to put the whole WUKS below into it.</doc>
<status status="PASS" start="2026-04-05T00:36:27.538898" elapsed="1.124410"/>
</kw>
<doc>Wait until the device becomes available through Netconf.</doc>
<status status="PASS" start="2026-04-05T00:36:27.449567" elapsed="1.213877"/>
</test>
<test id="s1-s4-s2-t15" name="Check_Modified_Device_Data_Is_Still_There" line="119">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:28.667508" elapsed="0.000221"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:28.667230" elapsed="0.000554"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:28.668784" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:28.668675" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.668655" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:28.673807" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:28.673701" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.673683" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.674887" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:28.674505" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.675362" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:28.675067" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:28.675445" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:28.675601" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:28.674098" elapsed="0.001527"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:28.681001" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:28.680896" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.680877" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:28.682359" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:28.682252" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.682234" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:28.682986" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:28.682594" elapsed="0.000419"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:28.683454" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:28.683172" elapsed="0.000309"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:28.716110" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:28.684027" elapsed="0.032266"/>
</kw>
<msg time="2026-04-05T00:36:28.716498" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:28.716545" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:28.683637" elapsed="0.032944"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:28.738597" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "M "o "d "i "f "i "e "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "S "t "i "l "l "_ "T "h "e "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:28.717153" elapsed="0.021639"/>
</kw>
<msg time="2026-04-05T00:36:28.738976" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:28.739021" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "M "o "d "i "f "i "e "d "_ "D "e "v "i "c "e "_ "D "a ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:28.716751" elapsed="0.022306"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.739354" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.739135" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.739115" elapsed="0.000363"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.740013" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "M "o "d "i "f "i "e "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "S "t "i "l "l "_ "T "h "e "r "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:28.739618" elapsed="0.000466"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.740360" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.740152" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.740133" elapsed="0.000345"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:28.740511" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:28.743853" elapsed="0.000159"/>
</kw>
<msg time="2026-04-05T00:36:28.744094" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:28.743096" elapsed="0.001109"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.745412" elapsed="0.000064"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.746581" elapsed="0.000039"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:28.741367" elapsed="0.005336"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:28.740776" elapsed="0.006053"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:28.681899" elapsed="0.065028"/>
</kw>
<msg time="2026-04-05T00:36:28.747019" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:28.747061" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "M "o "d "i "f "i "e "d "_ "D "e "v "i "c "e "_ "D "a ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:28.681214" elapsed="0.065884"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:28.747320" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:28.747212" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.747193" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.747954" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.748281" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:28.748353" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:28.680561" elapsed="0.067915"/>
</kw>
<msg time="2026-04-05T00:36:28.748569" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:28.748612" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "M "o "d "i "f "i "e "d "_ "D "e "v "i "c "e "_ "D "a ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:28.676027" elapsed="0.072621"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.748967" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.748723" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.748705" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:28.675888" elapsed="0.073178"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:28.675715" elapsed="0.073381"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:28.673331" elapsed="0.075819"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:28.668366" elapsed="0.080839"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:28.667932" elapsed="0.081317"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:28.664640" elapsed="0.084661"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.751164" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:28.750783" elapsed="0.000408"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.758627" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:28.758361" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.759066" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:28.758823" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:28.781252" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:28.781388" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '140'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:28.781525" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:28.761196" elapsed="0.020356"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:28.759181" elapsed="0.022415"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.781774" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.781623" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.759162" elapsed="0.022699"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.785324" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:28.782915" elapsed="0.002461"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:28.782697" elapsed="0.002737"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.782678" elapsed="0.002783"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.787993" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:28.785736" elapsed="0.002304"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:28.785517" elapsed="0.002558"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.785500" elapsed="0.002600"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.788656" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:28.788259" elapsed="0.000425"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.788980" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.788753" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.789567" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:28.789216" elapsed="0.000378"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:28.789062" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.788736" elapsed="0.000953"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.790205" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:28.789844" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.790546" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.790300" elapsed="0.000304"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.791073" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:28.790781" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:28.790629" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.790283" elapsed="0.000873"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:28.791299" elapsed="0.000360"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:28.792105" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:28.791820" elapsed="0.000310"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:28.792281" elapsed="0.002299"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:28.782220" elapsed="0.012423"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:28.794820" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:28.794714" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.794694" elapsed="0.000300"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.795140" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:28.795212" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:28.797653" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:28.753942" elapsed="0.043741"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:28.797745" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:28.797896" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:28.751400" elapsed="0.046523"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:28.797967" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:28.798108" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:28.750388" elapsed="0.047747"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.798456" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.798198" elapsed="0.000317"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.798737" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.798540" elapsed="0.000253"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:28.798952" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:28.798816" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.798181" elapsed="0.001150"/>
</if>
<arg>&lt;data xmlns="${ODL_NETCONF_NAMESPACE}"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</arg>
<status status="PASS" start="2026-04-05T00:36:28.750003" elapsed="0.049374"/>
</kw>
<arg>60s</arg>
<arg>1s</arg>
<arg>Check_Config_Data</arg>
<arg>&lt;data xmlns="${ODL_NETCONF_NAMESPACE}"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:28.749477" elapsed="0.049961"/>
</kw>
<doc>Get the device data and make sure it contains the created content.</doc>
<status status="PASS" start="2026-04-05T00:36:28.664005" elapsed="0.135551"/>
</test>
<test id="s1-s4-s2-t16" name="Modify_Device_Data_Again" line="127">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:28.803292" elapsed="0.000222"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:28.803033" elapsed="0.000536"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:28.804535" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:28.804410" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.804391" elapsed="0.000214"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:28.809579" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:28.809471" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.809452" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.810632" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:28.810237" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.811103" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:28.810813" elapsed="0.000315"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:28.811172" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:28.811325" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:28.809867" elapsed="0.001482"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:28.816954" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:28.816848" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.816829" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:28.818265" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:28.818160" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.818141" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:28.818901" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:28.818492" elapsed="0.000437"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:28.819353" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:28.819089" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:28.853792" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:28.819963" elapsed="0.034091"/>
</kw>
<msg time="2026-04-05T00:36:28.854326" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:28.854394" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:28.819566" elapsed="0.034914"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:28.871119" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:28.855333" elapsed="0.016075"/>
</kw>
<msg time="2026-04-05T00:36:28.871614" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:28.871661" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "A "g "a "i "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:28.854731" elapsed="0.016968"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.872003" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.871779" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.871758" elapsed="0.000349"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.872678" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:28.872248" elapsed="0.000496"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.873024" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.872812" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.872793" elapsed="0.000332"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:28.873158" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:28.876604" elapsed="0.000153"/>
</kw>
<msg time="2026-04-05T00:36:28.876833" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:28.875722" elapsed="0.001219"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.878148" elapsed="0.000043"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.879272" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:28.874035" elapsed="0.005357"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:28.873436" elapsed="0.006101"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:28.817857" elapsed="0.061781"/>
</kw>
<msg time="2026-04-05T00:36:28.879730" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:28.879774" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "A "g "a "i "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:28.817186" elapsed="0.062626"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:28.879996" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:28.879888" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.879870" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.880502" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.880836" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:28.880907" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:28.816510" elapsed="0.064504"/>
</kw>
<msg time="2026-04-05T00:36:28.881106" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:28.881149" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "A "g "a "i "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:28.811731" elapsed="0.069455"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.881528" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.881261" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.881244" elapsed="0.000379"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:28.811593" elapsed="0.070061"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:28.811402" elapsed="0.070291"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:28.809076" elapsed="0.072680"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:28.804128" elapsed="0.077723"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:28.803713" elapsed="0.078190"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:28.800646" elapsed="0.081316"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.882786" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:28.882132" elapsed="0.000682"/>
</kw>
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.916535" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:28.916128" elapsed="0.000435"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:28.917313" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:28.917053" elapsed="0.000339">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:28.917503" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:28.916724" elapsed="0.000804"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.918067" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:28.917687" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:28.918384" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:28.918548" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:28.918250" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.918969" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:28.918727" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.919959" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:28.919705" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.920444" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:28.920165" elapsed="0.000306"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.921121" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:28.920819" elapsed="0.000328"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:28.921911" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:28.921662" elapsed="0.000275"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:28.921987" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:28.922137" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:28.921330" elapsed="0.000831"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:28.922309" elapsed="0.000258"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:28.920688" elapsed="0.001920"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.923142" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:28.922847" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:28.924056" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:28.923820" elapsed="0.000262"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:28.924160" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:28.924314" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:28.923347" elapsed="0.000993"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:28.924546" elapsed="0.000227"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:28.922718" elapsed="0.002096"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:28.920519" elapsed="0.004329"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:28.924889" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:28.925043" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:28.919370" elapsed="0.005699"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:28.919080" elapsed="0.006020"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.925268" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.925125" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.919061" elapsed="0.006281"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.926122" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:28.925512" elapsed="0.000639"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:28.926200" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:28.915519" elapsed="0.010805"/>
</kw>
<msg time="2026-04-05T00:36:28.926377" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:28.902939" elapsed="0.023504"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.938622" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.950889" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.963460" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.963653" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.963853" elapsed="0.000025"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.964246" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.964097" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:28.964081" elapsed="0.000244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.964482" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.964647" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.964826" elapsed="0.000064"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:28.964051" elapsed="0.000876"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:28.963939" elapsed="0.001014"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:28.965097" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:28.965173" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:28.965291" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:28.898776" elapsed="0.066541"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.991340" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:28.990971" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:28.992087" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:28.991882" elapsed="0.000268">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:28.992242" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:28.991541" elapsed="0.000724"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.992820" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:28.992437" elapsed="0.000410"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:28.993135" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:28.993257" level="INFO">${template} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Another Modified Content&lt;/l&gt;
&lt;/cont&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:28.993003" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.993750" level="INFO">&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Another Modified Content&lt;/l&gt;
&lt;/cont&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:28.993449" elapsed="0.000348"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:28.994150" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:28.993866" elapsed="0.000342"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.994685" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:28.994373" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:28.994233" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:28.993847" elapsed="0.000920"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:28.995341" level="INFO">${final_text} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Another Modified Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:28.994907" elapsed="0.000462"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:28.995417" elapsed="0.000048"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:28.990354" elapsed="0.005231"/>
</kw>
<msg time="2026-04-05T00:36:28.995638" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:28.978008" elapsed="0.017678"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.008156" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.020512" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.032829" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.033020" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.033194" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.033566" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.033410" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:29.033396" elapsed="0.000250"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.033783" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.033946" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.034105" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:29.033366" elapsed="0.000792"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.033267" elapsed="0.000916"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.034325" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.034400" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:29.034533" level="INFO">${data} = &lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Another Modified Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:28.975220" elapsed="0.059340"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:29.035804" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:29.035574" elapsed="0.000292">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod2/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:29.035958" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:29.035216" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.036293" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.036050" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.036884" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.036551" elapsed="0.000360"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.036373" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.036033" elapsed="0.000935"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.039276" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:29.037120" elapsed="0.002182"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:29.039354" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:29.039526" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod2/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:29.034886" elapsed="0.004665"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.040920" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.040674" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.041350" level="INFO">&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Another Modified Content&lt;/l&gt;
&lt;/cont&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.041114" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.041800" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.041557" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.042223" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.041986" elapsed="0.000280"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:29.043067" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:29.042874" elapsed="0.000220"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:29.043472" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:29.043277" elapsed="0.000222"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.043673" elapsed="0.000204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.044294" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.044031" elapsed="0.000308"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:29.044380" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:29.044552" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:29.042476" elapsed="0.002101"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:29.091446" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Content-Length': '89', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;
&lt;l&gt;Another Modified Content&lt;/l&gt;
&lt;/cont&gt; 
 </msg>
<msg time="2026-04-05T00:36:29.091512" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:29.091620" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:29.046840" elapsed="0.044805"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.044647" elapsed="0.047049"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.091901" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.091726" elapsed="0.000243"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.044629" elapsed="0.047360"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.095406" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.092993" elapsed="0.002475"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.092769" elapsed="0.002734"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.092749" elapsed="0.002779"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.098104" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.095800" elapsed="0.002350"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.095583" elapsed="0.002601"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.095567" elapsed="0.002641"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.098794" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.098372" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.099180" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.098941" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.099734" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.099434" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.099261" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.098923" elapsed="0.000894"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.100327" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.099968" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.100667" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.100437" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.101190" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.100899" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.100746" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.100405" elapsed="0.000866"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:29.101417" elapsed="0.000362"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:29.102229" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.101941" elapsed="0.000314"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.102405" elapsed="0.002292"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:29.092373" elapsed="0.012386"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:29.104931" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-05T00:36:29.104824" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.104806" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.105165" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.105232" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:29.107521" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:29.039872" elapsed="0.067676"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:29.107612" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:29.107765" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:28.887824" elapsed="0.219965"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.108120" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.107887" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.107870" elapsed="0.000341"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:29.108243" elapsed="0.000026"/>
</return>
<arg>${DIRECTORY_WITH_TEMPLATE_FOLDERS}${/}datamod2</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:28.883070" elapsed="0.225296"/>
</kw>
<doc>Send a request to change the sample test data and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:28.800001" elapsed="0.308506"/>
</test>
<test id="s1-s4-s2-t17" name="Check_Device_Data_Is_Modified_Again" line="132">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:29.111966" elapsed="0.000212"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:29.111707" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.113405" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.113157" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.113139" elapsed="0.000351"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.118463" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.118341" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.118323" elapsed="0.000219"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.119522" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:29.119129" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.119995" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:29.119703" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:29.120064" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:29.120216" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:29.118762" elapsed="0.001478"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.125706" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.125598" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.125578" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.127054" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.126948" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.126930" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:29.127673" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.127262" elapsed="0.000438"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:29.128120" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:29.127855" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:29.159864" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:29.128716" elapsed="0.031330"/>
</kw>
<msg time="2026-04-05T00:36:29.160234" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:29.160280" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.128300" elapsed="0.032018"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:29.179746" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "M "o "d "i "f "i "e "d "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:29.160904" elapsed="0.019036"/>
</kw>
<msg time="2026-04-05T00:36:29.180122" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:29.180168" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "M "o "d ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.160507" elapsed="0.019698"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.180530" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.180285" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.180263" elapsed="0.000373"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.181180" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "M "o "d "i "f "i "e "d "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.180777" elapsed="0.000472"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.181543" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.181315" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.181297" elapsed="0.000349"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:29.181679" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:29.185055" elapsed="0.000151"/>
</kw>
<msg time="2026-04-05T00:36:29.185283" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:29.184377" elapsed="0.001013"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.186556" elapsed="0.000049"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.187675" elapsed="0.000040"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:29.182670" elapsed="0.005127"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:29.182046" elapsed="0.005880"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:29.126646" elapsed="0.061380"/>
</kw>
<msg time="2026-04-05T00:36:29.188120" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:29.188168" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "M "o "d ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.125922" elapsed="0.062282"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:29.188387" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:29.188282" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.188263" elapsed="0.000224"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.188888" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.189220" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.189293" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:29.125234" elapsed="0.064167"/>
</kw>
<msg time="2026-04-05T00:36:29.189533" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:29.189577" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "M "o "d ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.120620" elapsed="0.068994"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.189947" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.189690" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.189673" elapsed="0.000357"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:29.120481" elapsed="0.069572"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:29.120293" elapsed="0.069791"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:29.117983" elapsed="0.072156"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:29.112870" elapsed="0.077323"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.112381" elapsed="0.077857"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:29.109456" elapsed="0.080834"/>
</kw>
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.191570" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.191161" elapsed="0.000437"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.200915" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.200660" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.201357" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.201112" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:29.220415" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:29.220656" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '148'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Another Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:29.220804" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:29.203518" elapsed="0.017322"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.201487" elapsed="0.019412"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.221168" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.220934" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.201468" elapsed="0.019886"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.229136" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Another Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.223715" elapsed="0.005534"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.223206" elapsed="0.006121"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.223164" elapsed="0.006218"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.232367" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.230073" elapsed="0.002340"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.229545" elapsed="0.002917"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.229507" elapsed="0.002980"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.233018" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.232645" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.233343" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.233114" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.233934" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.233630" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.233438" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.233096" elapsed="0.000923"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.234548" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.234171" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.234870" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.234644" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.235402" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.235107" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.234951" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.234626" elapsed="0.000873"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:29.235646" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:29.236448" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.236149" elapsed="0.000326"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.236624" elapsed="0.002269"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:29.222169" elapsed="0.016785"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:29.239129" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-05T00:36:29.239024" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.239006" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.239360" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.239480" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:29.241942" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Another Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:29.195988" elapsed="0.045984"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:29.242030" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:29.242177" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Another Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:29.191806" elapsed="0.050397"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:29.242246" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:29.242383" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Another Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:29.190903" elapsed="0.051506"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.242685" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.242488" elapsed="0.000254"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.242954" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.242765" elapsed="0.000244"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:29.243164" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.243032" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.242472" elapsed="0.001080"/>
</if>
<arg>&lt;data xmlns="${ODL_NETCONF_NAMESPACE}"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Another Modified Content&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</arg>
<status status="PASS" start="2026-04-05T00:36:29.190520" elapsed="0.053077"/>
</kw>
<doc>Get the device data and make sure it contains the created content.</doc>
<status status="PASS" start="2026-04-05T00:36:29.108915" elapsed="0.134790"/>
</test>
<test id="s1-s4-s2-t18" name="Modify_Device_Data_Label_Via_Json" line="137">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:29.246900" elapsed="0.000203"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:29.246647" elapsed="0.000510"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.248114" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.248009" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.247991" elapsed="0.000189"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.252975" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.252872" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.252855" elapsed="0.000186"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.254047" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:29.253673" elapsed="0.000401"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.254539" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:29.254231" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:29.254609" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:29.254760" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:29.253257" elapsed="0.001528"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.260243" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.260138" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.260117" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.261556" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.261449" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.261402" elapsed="0.000221"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:29.262138" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.261760" elapsed="0.000404"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:29.262630" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:29.262352" elapsed="0.000304"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:29.293780" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:29.263204" elapsed="0.030755"/>
</kw>
<msg time="2026-04-05T00:36:29.294144" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:29.294190" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.262810" elapsed="0.031418"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:29.317394" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "V "i "a "_ "J "s "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:29.294955" elapsed="0.022648"/>
</kw>
<msg time="2026-04-05T00:36:29.317783" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:29.317829" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.294394" elapsed="0.023471"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.318159" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.317943" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.317923" elapsed="0.000338"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.318816" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "V "i "a "_ "J "s "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.318398" elapsed="0.000486"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.319159" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.318951" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.318933" elapsed="0.000327"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:29.319293" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:29.322547" elapsed="0.000148"/>
</kw>
<msg time="2026-04-05T00:36:29.322772" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:29.321853" elapsed="0.001023"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.323946" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.325055" elapsed="0.000039"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:29.320144" elapsed="0.005030"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:29.319560" elapsed="0.005739"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:29.261111" elapsed="0.064286"/>
</kw>
<msg time="2026-04-05T00:36:29.325507" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:29.325550" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.260474" elapsed="0.065112"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:29.325768" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:36:29.325662" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.325644" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.326228" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.326584" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.326690" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:29.259799" elapsed="0.067002"/>
</kw>
<msg time="2026-04-05T00:36:29.326894" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:29.326936" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "M "o "d "i "f "y "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.255143" elapsed="0.071830"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.327296" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.327049" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.327031" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:29.255007" elapsed="0.072389"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:29.254837" elapsed="0.072622"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:29.252521" elapsed="0.074995"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:29.247729" elapsed="0.079842"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.247300" elapsed="0.080316"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:29.244557" elapsed="0.083110"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.328278" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.327826" elapsed="0.000478"/>
</kw>
<kw name="Put_As_Json_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.365156" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.364788" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:29.365932" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:29.365684" elapsed="0.000323">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:29.366100" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:29.365342" elapsed="0.000782"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.366677" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:29.366280" elapsed="0.000424"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:29.366994" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:29.367143" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:29.366859" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.367580" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.367320" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.368593" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.368296" elapsed="0.000342"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.369054" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.368794" elapsed="0.000285"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.369732" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:29.369432" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:29.370525" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.370258" elapsed="0.000327"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:29.370639" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:29.370792" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:29.369949" elapsed="0.000868"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.370966" elapsed="0.000236"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:29.369290" elapsed="0.001954"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.371801" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:29.371501" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:29.372743" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.372503" elapsed="0.000266"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:29.372820" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:29.372969" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:29.372158" elapsed="0.000836"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.373145" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:29.371354" elapsed="0.002052"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:29.369126" elapsed="0.004331"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:29.373500" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:29.373655" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:29.367979" elapsed="0.005701"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.367692" elapsed="0.006021"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.373881" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.373738" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.367673" elapsed="0.006283"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.374678" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.374094" elapsed="0.000612"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:29.374755" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:29.364158" elapsed="0.010719"/>
</kw>
<msg time="2026-04-05T00:36:29.374929" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:29.351812" elapsed="0.023163"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.387264" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.399371" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.412062" elapsed="0.000062"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.412338" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.412534" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.412896" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.412757" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:29.412743" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.413111" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.413274" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.413449" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:29.412713" elapsed="0.000791"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.412612" elapsed="0.000918"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.413672" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.413746" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:29.413865" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:29.347640" elapsed="0.066250"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.439824" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/data.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.439448" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:29.440589" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson.titanium/data.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:29.440359" elapsed="0.000295">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson.titanium/data.json' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:29.440745" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:29.440029" elapsed="0.000739"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.441300" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/data.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:29.440923" elapsed="0.000403"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:29.441641" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson/data.json"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson/data.json&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:29.441768" level="INFO">${template} = {
  "test:cont": {
    "l":"Content Modified via JSON"
  }
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:29.441506" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.442182" level="INFO">{
  "test:cont": {
    "l":"Content Modified via JSON"
  }
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.441942" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:29.442589" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.442291" elapsed="0.000357"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.443104" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.442813" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.442673" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.442273" elapsed="0.000913"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.443975" level="INFO">${final_text} = {
  "test:cont": {
    "l":"Content Modified via JSON"
  }
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.443324" elapsed="0.000682"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:29.444092" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:29.438824" elapsed="0.005396"/>
</kw>
<msg time="2026-04-05T00:36:29.444272" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:29.426406" elapsed="0.017911"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.456471" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.468568" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.480659" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.480845" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.481012" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.481364" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.481228" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:29.481214" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.481594" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.481752" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.482054" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:29.481185" elapsed="0.000925"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.481085" elapsed="0.001050"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.482275" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.482350" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:29.482483" level="INFO">${data} = {
  "test:cont": {
    "l":"Content Modified via JSON"
  }
}</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:29.423822" elapsed="0.058687"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:29.483819" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:29.483576" elapsed="0.000306">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamodjson/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:29.483975" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:29.483198" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.484313" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.484070" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.484862" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.484571" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.484394" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.484052" elapsed="0.000893"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.487234" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:29.485090" elapsed="0.002171"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:29.487313" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:29.487482" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamodjson/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:29.482878" elapsed="0.004652"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.488999" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.488660" elapsed="0.000387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.489458" level="INFO">{
  "test:cont": {
    "l":"Content Modified via JSON"
  }
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.489197" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.489897" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.489652" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.490330" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.490086" elapsed="0.000287"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:29.491183" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:29.490987" elapsed="0.000222"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:29.491556" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:29.491357" elapsed="0.000225"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.491739" elapsed="0.000191"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.492523" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.492083" elapsed="0.000485"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:29.492610" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:29.492763" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:29.490589" elapsed="0.002198"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:29.533218" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Content-Length': '60', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "test:cont": {
    "l":"Content Modified via JSON"
  }
} 
 </msg>
<msg time="2026-04-05T00:36:29.533321" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:29.533556" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:29.495185" elapsed="0.038430"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.492858" elapsed="0.040859"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.534103" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.533775" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.492840" elapsed="0.041455"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.541740" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.536499" elapsed="0.005335"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.535996" elapsed="0.005918"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.535956" elapsed="0.006012"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.545798" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.542597" elapsed="0.003247"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.542090" elapsed="0.003789"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.542054" elapsed="0.003848"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.546442" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.546059" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.546766" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.546540" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.547330" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.546997" elapsed="0.000359"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.546846" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.546523" elapsed="0.000909"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.547947" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.547587" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.548268" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.548042" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.548808" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.548515" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.548348" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.548024" elapsed="0.000866"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:29.549031" elapsed="0.000340"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:29.549819" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.549544" elapsed="0.000300"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.549993" elapsed="0.002294"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:29.535179" elapsed="0.017169"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.552535" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.552414" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.552396" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:29.555139" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:29.552744" elapsed="0.002422"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:29.555214" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:29.555368" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:29.487860" elapsed="0.067532"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:29.555476" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:29.555622" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:29.336950" elapsed="0.218696"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.555972" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.555741" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.555724" elapsed="0.000379"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:29.556136" elapsed="0.000026"/>
</return>
<arg>${directory_with_template_folders}${/}datamodjson</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for JSON data, return Put_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-05T00:36:29.332750" elapsed="0.223509"/>
</kw>
<doc>Send a JSON request to change the sample test data label and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:29.243909" elapsed="0.312467"/>
</test>
<test id="s1-s4-s2-t19" name="Check_Device_Data_Label_Is_Modified_Via_Json" line="144">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:29.559673" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:29.559397" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.560906" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.560799" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.560780" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.565962" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.565857" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.565839" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.567036" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:29.566632" elapsed="0.000430"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.567535" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:29.567220" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:29.567606" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:29.567759" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:29.566248" elapsed="0.001536"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.573157" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.573048" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.573029" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.574480" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.574345" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.574326" elapsed="0.000223"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:29.575086" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.574688" elapsed="0.000425"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:29.575550" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:29.575268" elapsed="0.000309"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:29.606686" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:29.576126" elapsed="0.030746"/>
</kw>
<msg time="2026-04-05T00:36:29.607056" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:29.607101" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.575734" elapsed="0.031409"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:29.629677" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "I "s "_ "M "o "d "i "f "i "e "d "_ "V "i "a "_ "J "s "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:29.607736" elapsed="0.022145"/>
</kw>
<msg time="2026-04-05T00:36:29.630063" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:29.630108" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.607312" elapsed="0.022832"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.630480" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.630222" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.630202" elapsed="0.000421"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.631169" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ "I "s "_ "M "o "d "i "f "i "e "d "_ "V "i "a "_ "J "s "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.630770" elapsed="0.000472"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.631539" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.631310" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.631292" elapsed="0.000350"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:29.631675" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:29.635012" elapsed="0.000153"/>
</kw>
<msg time="2026-04-05T00:36:29.635242" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:29.634228" elapsed="0.001117"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.636443" elapsed="0.000040"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.637543" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:29.632553" elapsed="0.005111"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:29.631929" elapsed="0.005862"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:29.574041" elapsed="0.063849"/>
</kw>
<msg time="2026-04-05T00:36:29.637992" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:29.638037" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.573372" elapsed="0.064703"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:29.638471" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-05T00:36:29.638151" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.638133" elapsed="0.000434"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.638967" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.639317" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.639393" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:29.572707" elapsed="0.066977"/>
</kw>
<msg time="2026-04-05T00:36:29.639778" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:29.639821" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "L "a "b "e "l "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.568140" elapsed="0.071718"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.640186" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.639934" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.639916" elapsed="0.000348"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:29.568002" elapsed="0.072285"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:29.567835" elapsed="0.072481"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:29.565499" elapsed="0.074870"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:29.560517" elapsed="0.079921"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.560081" elapsed="0.080405"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:29.557304" elapsed="0.083233"/>
</kw>
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.641837" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.641453" elapsed="0.000412"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.649286" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.649037" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.649738" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.649495" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:29.669030" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:29.669221" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '149'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:29.669499" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:29.651889" elapsed="0.017671"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.649850" elapsed="0.019806"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.670039" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.669713" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.649832" elapsed="0.020439"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.678311" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.672565" elapsed="0.005893"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.672032" elapsed="0.006513"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.671992" elapsed="0.006609"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.681453" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.679172" elapsed="0.002328"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.678726" elapsed="0.002809"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.678689" elapsed="0.002870"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.682101" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.681716" elapsed="0.000412"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.682481" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.682227" elapsed="0.000313"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.683017" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.682719" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.682564" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.682204" elapsed="0.000896"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.683634" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.683257" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.683957" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.683731" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.684498" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.684189" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.684037" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.683714" elapsed="0.000867"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:29.684724" elapsed="0.000342"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:29.685571" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.685224" elapsed="0.000374"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.685750" elapsed="0.003295"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:29.671073" elapsed="0.018123"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:29.689629" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-05T00:36:29.689355" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.689312" elapsed="0.000512"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.690171" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.690332" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:36:29.695701" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:29.644687" elapsed="0.051081"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:29.695902" elapsed="0.000061"/>
</return>
<msg time="2026-04-05T00:36:29.696231" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:29.642072" elapsed="0.054218"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:29.696383" elapsed="0.000083"/>
</return>
<msg time="2026-04-05T00:36:29.696722" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:29.641162" elapsed="0.055619"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.697363" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.696919" elapsed="0.000600"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.698046" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.697574" elapsed="0.000596"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:29.698549" elapsed="0.000646"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.698222" elapsed="0.001012"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.696882" elapsed="0.002373"/>
</if>
<arg>&lt;data xmlns="${ODL_NETCONF_NAMESPACE}"&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</arg>
<status status="PASS" start="2026-04-05T00:36:29.640780" elapsed="0.058521"/>
</kw>
<doc>Get the device data label as XML and make sure it matches the content posted as JSON in the previous case.</doc>
<status status="PASS" start="2026-04-05T00:36:29.556677" elapsed="0.142730"/>
</test>
<test id="s1-s4-s2-t20" name="Create_Car_List" line="149">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:29.702672" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:29.702400" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.703910" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.703799" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.703781" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.708930" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.708824" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.708806" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.710012" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:29.709600" elapsed="0.000440"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.710517" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:29.710197" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:29.710588" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:29.710742" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:29.709215" elapsed="0.001552"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.716129" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.716022" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.716003" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.717410" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:29.717305" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.717287" elapsed="0.000222"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:29.718071" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.717648" elapsed="0.000449"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:29.718530" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:29.718252" elapsed="0.000304"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:29.751000" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:29.719099" elapsed="0.032084"/>
</kw>
<msg time="2026-04-05T00:36:29.751365" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:29.751410" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.718712" elapsed="0.032755"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:29.765613" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "r "e "a "t "e "_ "C "a "r "_ "L "i "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:29.752033" elapsed="0.013774"/>
</kw>
<msg time="2026-04-05T00:36:29.765988" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:29.766033" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "r "e "a "t "e "_ "C "a "r "_ "L "i "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m   ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.751637" elapsed="0.014433"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.766363" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.766148" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.766127" elapsed="0.000366"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.767019" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "r "e "a "t "e "_ "C "a "r "_ "L "i "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.766631" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.767352" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.767146" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.767128" elapsed="0.000341"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:29.767502" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:29.770750" elapsed="0.000277"/>
</kw>
<msg time="2026-04-05T00:36:29.771106" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:29.770036" elapsed="0.001175"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.772300" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.773392" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:29.768345" elapsed="0.005203"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:29.767752" elapsed="0.005925"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:29.717001" elapsed="0.056775"/>
</kw>
<msg time="2026-04-05T00:36:29.773867" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:29.773911" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "r "e "a "t "e "_ "C "a "r "_ "L "i "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m   ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.716341" elapsed="0.057608"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:29.774173" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:29.774060" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.774041" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.774675" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.775005" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.775077" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:29.715687" elapsed="0.059496"/>
</kw>
<msg time="2026-04-05T00:36:29.775275" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:29.775318" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "r "e "a "t "e "_ "C "a "r "_ "L "i "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m   ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.711167" elapsed="0.064189"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.775720" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.775474" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.775413" elapsed="0.000383"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:29.711030" elapsed="0.064790"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:29.710856" elapsed="0.064993"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:29.708466" elapsed="0.067434"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:29.703514" elapsed="0.072441"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:29.703079" elapsed="0.072919"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:29.700298" elapsed="0.075751"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.776798" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.776207" elapsed="0.000618"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.821804" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.821393" elapsed="0.000445"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:29.822650" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:29.822336" elapsed="0.000400">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:29.822833" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:29.822006" elapsed="0.000851"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.823404" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:29.823021" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:29.823752" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:29.824018" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:29.823609" elapsed="0.000436"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.824468" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.824198" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.825725" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.825465" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.828299" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.825924" elapsed="0.002403"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.829019" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:29.828705" elapsed="0.000340"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:29.829844" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.829569" elapsed="0.000300"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:29.829923" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:36:29.830082" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:29.829235" elapsed="0.000872"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.830259" elapsed="0.000275"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:29.828571" elapsed="0.002006"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.831114" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:29.830818" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:29.831888" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.831653" elapsed="0.000260"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:29.831963" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:29.832111" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:29.831326" elapsed="0.000810"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.832281" elapsed="0.000239"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:29.830689" elapsed="0.001873"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:29.828379" elapsed="0.004217"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:29.832638" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:29.832791" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:29.825118" elapsed="0.007698"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.824595" elapsed="0.008252"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.833040" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.832873" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.824571" elapsed="0.008546"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.833851" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.833255" elapsed="0.000624"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:29.833926" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:29.820713" elapsed="0.013336"/>
</kw>
<msg time="2026-04-05T00:36:29.834103" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:29.808035" elapsed="0.026117"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.846439" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.858642" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.870881" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.871068" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.871236" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.871614" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.871472" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:29.871456" elapsed="0.000237"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.871828" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.871990" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.872157" elapsed="0.000024"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:29.871410" elapsed="0.000812"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.871310" elapsed="0.000944"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.872401" elapsed="0.000033"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.872491" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:29.872613" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:29.792384" elapsed="0.080255"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.896980" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.896604" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:29.897729" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:29.897505" elapsed="0.000291">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:29.897887" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:29.897165" elapsed="0.000746"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.898465" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:29.898069" elapsed="0.000424"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:29.898779" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:29.898923" level="INFO">${template} = &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;KEEP&lt;/id&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:29.898647" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.899387" level="INFO">&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;KEEP&lt;/id&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.899144" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:29.899807" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.899519" elapsed="0.000347"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.900330" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.900033" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.899891" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.899501" elapsed="0.000913"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.901028" level="INFO">${final_text} = &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;KEEP&lt;/id&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:29.900588" elapsed="0.000470"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:29.901107" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:29.895975" elapsed="0.005255"/>
</kw>
<msg time="2026-04-05T00:36:29.901283" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:29.883593" elapsed="0.017737"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.913801" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.925975" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.938325" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.938526" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.938697" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.939050" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.938912" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:29.938897" elapsed="0.000232"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.939266" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.939443" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.939608" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:29.938868" elapsed="0.000792"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.938769" elapsed="0.000951"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.939867" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:29.939941" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:29.940058" level="INFO">${data} = &lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;KEEP&lt;/id&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:29.882733" elapsed="0.057353"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:29.941335" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:29.941101" elapsed="0.000297">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:29.941505" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:29.940766" elapsed="0.000764"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.941837" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.941599" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.942403" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:29.942088" elapsed="0.000361"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.941917" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.941582" elapsed="0.000924"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.944836" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:29.942652" elapsed="0.002211"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:29.944913" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:29.945065" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:29.940444" elapsed="0.004646"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.946691" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.946434" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.947126" level="INFO">&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;KEEP&lt;/id&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.946888" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.947585" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.947326" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.948010" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.947774" elapsed="0.000278"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:29.948896" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:29.948701" elapsed="0.000221"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:29.949240" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:29.949069" elapsed="0.000196"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:29.949409" elapsed="0.000214"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.950020" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.949775" elapsed="0.000289"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:29.950106" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:29.950259" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:29.948278" elapsed="0.002005"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:29.990483" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Content-Length': '145', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;car-entry&gt;
    &lt;id&gt;KEEP&lt;/id&gt;
  &lt;/car-entry&gt;
&lt;/cars&gt; 
 </msg>
<msg time="2026-04-05T00:36:29.990538" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.184:8181/rests/data/car:cars', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:29.990638" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:29.952613" elapsed="0.038051"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.950392" elapsed="0.040317"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:29.990884" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:29.990735" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.950373" elapsed="0.040600"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:29.998385" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.993112" elapsed="0.005401"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.992635" elapsed="0.005960"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.992594" elapsed="0.006055"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.002113" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:29.999276" elapsed="0.002882"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:29.998774" elapsed="0.003419"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:29.998736" elapsed="0.003480"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.002763" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.002372" elapsed="0.000417"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.003086" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.002859" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.003633" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.003321" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.003168" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.002841" elapsed="0.000884"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.004235" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.003877" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.004574" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.004328" elapsed="0.000304"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.005098" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.004809" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.004656" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.004311" elapsed="0.000870"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:30.005321" elapsed="0.000372"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:30.006130" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.005850" elapsed="0.000306"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.006305" elapsed="0.002282"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:29.991613" elapsed="0.017036"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:30.008826" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:30.008722" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.008704" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.009100" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.009169" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:30.011542" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:29.945416" elapsed="0.066152"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:30.011638" elapsed="0.000039"/>
</return>
<msg time="2026-04-05T00:36:30.011802" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:29.781608" elapsed="0.230219"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.012162" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.011932" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.011915" elapsed="0.000338"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:30.012285" elapsed="0.000026"/>
</return>
<arg>${directory_with_template_folders}${/}cars</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:29.777077" elapsed="0.235328"/>
</kw>
<doc>Send a request to create a list of cars in the sample test data label and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:29.699733" elapsed="0.312819"/>
</test>
<test id="s1-s4-s2-t21" name="Check_Car_List_Created" line="154">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:30.015683" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:30.015403" elapsed="0.000543"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.016910" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.016803" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.016785" elapsed="0.000191"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.022046" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.021939" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.021921" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.023092" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:30.022717" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.023601" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:30.023279" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:30.023671" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:30.023823" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:30.022332" elapsed="0.001515"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.029181" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.029074" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.029055" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.030522" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.030389" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.030370" elapsed="0.000220"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:30.031126" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.030730" elapsed="0.000422"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:30.031602" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:30.031305" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:30.067290" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:30.032238" elapsed="0.035257"/>
</kw>
<msg time="2026-04-05T00:36:30.067682" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:30.067728" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.031835" elapsed="0.035930"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:30.084602" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "C "a "r "_ "L "i "s "t "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:30.068330" elapsed="0.016456"/>
</kw>
<msg time="2026-04-05T00:36:30.084965" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:30.085010" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "C "a "r "_ "L "i "s "t "_ "C "r "e "a "t "e "d "[K"
...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.067933" elapsed="0.017114"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.085343" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.085126" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.085105" elapsed="0.000368"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.086005" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "C "a "r "_ "L "i "s "t "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.085613" elapsed="0.000456"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.086345" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.086136" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.086118" elapsed="0.000346"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:30.086497" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:30.089761" elapsed="0.000145"/>
</kw>
<msg time="2026-04-05T00:36:30.089982" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:30.089102" elapsed="0.000982"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.091176" elapsed="0.000041"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.092283" elapsed="0.000039"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:30.087386" elapsed="0.005017"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:30.086752" elapsed="0.005795"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:30.030060" elapsed="0.062586"/>
</kw>
<msg time="2026-04-05T00:36:30.092736" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:30.092781" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "C "a "r "_ "L "i "s "t "_ "C "r "e "a "t "e "d "[K"
...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.029392" elapsed="0.063427"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:30.093168" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:30.092896" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.092877" elapsed="0.000378"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.093678" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.094015" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.094088" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:30.028740" elapsed="0.065457"/>
</kw>
<msg time="2026-04-05T00:36:30.094328" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:30.094371" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "C "a "r "_ "L "i "s "t "_ "C "r "e "a "t "e "d "[K"
...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.024201" elapsed="0.070208"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.094773" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.094525" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.094506" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:30.024066" elapsed="0.070807"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:30.023899" elapsed="0.071003"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:30.021579" elapsed="0.073376"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:30.016522" elapsed="0.078487"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.016089" elapsed="0.078978"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:30.013325" elapsed="0.081794"/>
</kw>
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.095949" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.095565" elapsed="0.000411"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.103494" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.103228" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.103932" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.103691" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:30.130226" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:30.130375" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '282'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:30.130500" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:30.106066" elapsed="0.024460"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.104043" elapsed="0.026526"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.130744" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.130595" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.104024" elapsed="0.026815"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.134366" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.131836" elapsed="0.002582"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.131622" elapsed="0.002846"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.131604" elapsed="0.002889"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.137043" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.134785" elapsed="0.002304"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.134549" elapsed="0.002574"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.134532" elapsed="0.002618"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.137695" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.137307" elapsed="0.000416"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.138179" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.137837" elapsed="0.000403"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.138758" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.138443" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.138266" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.137818" elapsed="0.001025"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.139367" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.139007" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.139709" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.139483" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.140236" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.139944" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.139790" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.139464" elapsed="0.000854"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:30.140478" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:30.141260" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.140982" elapsed="0.000304"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.141451" elapsed="0.002261"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:30.131190" elapsed="0.012585"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:30.143949" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:30.143844" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.143826" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.144179" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.144249" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:30.146569" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:30.098558" elapsed="0.048042"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:30.146682" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:30.146833" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="...</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:30.096225" elapsed="0.050637"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:30.146905" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:30.147047" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="...</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:30.095276" elapsed="0.051798"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;id&gt;KEEP&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.147223" elapsed="0.000318"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;id&gt;SMALL&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.147696" elapsed="0.000283"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;model&gt;Isetta&lt;/model&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.148130" elapsed="0.000278"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.148575" elapsed="0.000278"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;year&gt;1953&lt;/year&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.149002" elapsed="0.000274"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;category&gt;microcar&lt;/category&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.149439" elapsed="0.000279"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;id&gt;TOYOTA&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.149910" elapsed="0.000283"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;model&gt;Camry&lt;/model&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.150346" elapsed="0.000312"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.150811" elapsed="0.000278"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;year&gt;1982&lt;/year&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.151240" elapsed="0.000294"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;category&gt;sedan&lt;/category&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.151687" elapsed="0.000277"/>
</kw>
<doc>Get the device data label as XML and make sure it matches the content posted as JSON in the previous case.</doc>
<status status="PASS" start="2026-04-05T00:36:30.012771" elapsed="0.139305"/>
</test>
<test id="s1-s4-s2-t22" name="Add_Device_Data_Item_1_Via_XML_Post" line="169">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:30.155348" elapsed="0.000224"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:30.155091" elapsed="0.000535"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.156592" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.156483" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.156464" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.161532" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.161412" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.161394" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.162596" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:30.162188" elapsed="0.000435"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.163067" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:30.162777" elapsed="0.000315"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:30.163136" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:30.163287" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:30.161817" elapsed="0.001495"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.168659" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.168552" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.168533" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.169942" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.169836" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.169818" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:30.170571" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.170150" elapsed="0.000448"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:30.171013" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:30.170753" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:30.203389" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:30.171606" elapsed="0.031975"/>
</kw>
<msg time="2026-04-05T00:36:30.203762" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:30.203808" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.171200" elapsed="0.032645"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:30.223255" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m "_ "1 "_ "V "i "a "_ "X "M "L "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:30.204406" elapsed="0.019220"/>
</kw>
<msg time="2026-04-05T00:36:30.224636" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:30.224689" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m "_ "1 "_ "V ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.204011" elapsed="0.020721"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.225273" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.224882" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.224828" elapsed="0.000566"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.226125" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m "_ "1 "_ "V "i "a "_ "X "M "L "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.225564" elapsed="0.000640"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.226512" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.226275" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.226255" elapsed="0.000362"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:30.226658" elapsed="0.000048"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:30.230289" elapsed="0.000186"/>
</kw>
<msg time="2026-04-05T00:36:30.230555" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:30.229591" elapsed="0.001084"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.231948" elapsed="0.000043"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.233236" elapsed="0.000044"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:30.227725" elapsed="0.005643"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:30.227018" elapsed="0.006506"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:30.169536" elapsed="0.064095"/>
</kw>
<msg time="2026-04-05T00:36:30.233731" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:30.233780" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m "_ "1 "_ "V ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.168872" elapsed="0.064949"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:30.234026" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-05T00:36:30.233904" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.233882" elapsed="0.000236"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.234573" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.234932" elapsed="0.000038"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.235034" elapsed="0.000020"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:30.168201" elapsed="0.066957"/>
</kw>
<msg time="2026-04-05T00:36:30.235262" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:30.235309" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m "_ "1 "_ "V ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.163688" elapsed="0.071663"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.235703" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.235449" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.235414" elapsed="0.000368"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:30.163551" elapsed="0.072255"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:30.163362" elapsed="0.072481"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:30.161056" elapsed="0.074852"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:30.156184" elapsed="0.079831"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.155771" elapsed="0.080296"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:30.152836" elapsed="0.083292"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.236947" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.236309" elapsed="0.000665"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.272614" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.272165" elapsed="0.000479"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:30.273462" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:30.273150" elapsed="0.000399">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:30.273649" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:30.272810" elapsed="0.000863"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.274280" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:30.273870" elapsed="0.000438"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:30.274629" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:30.274816" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:30.274486" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.275252" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.274995" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.276306" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.276012" elapsed="0.000347"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.276801" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.276530" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.277550" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:30.277204" elapsed="0.000372"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:30.278390" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.278098" elapsed="0.000342"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:30.278496" elapsed="0.000038"/>
</return>
<msg time="2026-04-05T00:36:30.278662" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:30.277779" elapsed="0.000908"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.278840" elapsed="0.000257"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:30.277063" elapsed="0.002078"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.279708" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:30.279390" elapsed="0.000344"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:30.280503" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.280235" elapsed="0.000295"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:30.280579" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:30.280729" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:30.279920" elapsed="0.000833"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.280949" elapsed="0.000230"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:30.279259" elapsed="0.001963"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:30.276881" elapsed="0.004375"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:30.281300" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:30.281472" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:30.275692" elapsed="0.005808"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.275370" elapsed="0.006163"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.281718" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.281559" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.275347" elapsed="0.006456"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.282771" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.281945" elapsed="0.000855"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:30.282850" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:30.271537" elapsed="0.011440"/>
</kw>
<msg time="2026-04-05T00:36:30.283033" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:30.257923" elapsed="0.025157"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.295515" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.307663" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.320059" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.320254" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.320440" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.320817" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.320672" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:30.320657" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.321035" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.321215" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.321606" elapsed="0.000025"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:30.320626" elapsed="0.001088"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.320521" elapsed="0.001223"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.321919" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.321999" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:30.322131" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:30.253004" elapsed="0.069160"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.346676" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.346282" elapsed="0.000422"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:30.347484" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:30.347225" elapsed="0.000332">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:30.347651" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:30.346890" elapsed="0.000785"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.348213" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:30.347832" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:30.348554" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:30.348778" level="INFO">${template} = &lt;car-entry xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;id&gt;SMALL&lt;/id&gt;
  &lt;model&gt;Isetta&lt;/model&gt;
  &lt;manufacturer&gt;BMW&lt;/manufacturer&gt;
  &lt;year&gt;1953&lt;/year&gt;
  &lt;categ...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:30.348394" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.349231" level="INFO">&lt;car-entry xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;id&gt;SMALL&lt;/id&gt;
  &lt;model&gt;Isetta&lt;/model&gt;
  &lt;manufacturer&gt;BMW&lt;/manufacturer&gt;
  &lt;year&gt;1953&lt;/year&gt;
  &lt;category&gt;microcar&lt;/category&gt;
&lt;/car-entry&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.348960" elapsed="0.000322"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:30.349674" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.349351" elapsed="0.000382"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.350196" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.349902" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.349760" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.349332" elapsed="0.000945"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.350881" level="INFO">${final_text} = &lt;car-entry xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;id&gt;SMALL&lt;/id&gt;
  &lt;model&gt;Isetta&lt;/model&gt;
  &lt;manufacturer&gt;BMW&lt;/manufacturer&gt;
  &lt;year&gt;1953&lt;/year&gt;
  &lt;categ...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.350417" elapsed="0.000494"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:30.350960" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:30.345675" elapsed="0.005412"/>
</kw>
<msg time="2026-04-05T00:36:30.351142" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:30.333013" elapsed="0.018285"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.363700" elapsed="0.000033"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.376393" elapsed="0.000052"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.388588" elapsed="0.000033"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.388842" elapsed="0.000040"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.389051" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.389530" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.389356" elapsed="0.000233"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:30.389334" elapsed="0.000288"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.389768" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.389931" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.390093" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:30.389283" elapsed="0.000863"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.389146" elapsed="0.001031"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.390324" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.390406" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:36:30.390614" level="INFO">${data} = &lt;car-entry xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;id&gt;SMALL&lt;/id&gt;
  &lt;model&gt;Isetta&lt;/model&gt;
  &lt;manufacturer&gt;BMW&lt;/manufacturer&gt;
  &lt;year&gt;1953&lt;/year&gt;
  &lt;categ...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:30.332146" elapsed="0.058502"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:30.392199" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:30.391871" elapsed="0.000412">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:30.392379" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:30.391390" elapsed="0.001014"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.392864" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.392563" elapsed="0.000362"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.393458" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.393141" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.392950" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.392544" elapsed="0.000999"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.395876" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:30.393693" elapsed="0.002210"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:30.395955" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:36:30.396116" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:30.391002" elapsed="0.005139"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.397927" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.397632" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.398372" level="INFO">&lt;car-entry xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;id&gt;SMALL&lt;/id&gt;
  &lt;model&gt;Isetta&lt;/model&gt;
  &lt;manufacturer&gt;BMW&lt;/manufacturer&gt;
  &lt;year&gt;1953&lt;/year&gt;
  &lt;category&gt;microcar&lt;/category&gt;
&lt;/car-entry&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.398131" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.398842" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.398586" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.399270" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.399031" elapsed="0.000282"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:30.400155" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:30.399938" elapsed="0.000243"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:30.400529" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:30.400334" elapsed="0.000220"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.400703" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.401354" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.401108" elapsed="0.000289"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:30.401459" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:30.401613" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:30.399534" elapsed="0.002104"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:30.472692" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Content-Length': '236', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;car-entry xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;
  &lt;id&gt;SMALL&lt;/id&gt;
  &lt;model&gt;Isetta&lt;/model&gt;
  &lt;manufacturer&gt;BMW&lt;/manufacturer&gt;
  &lt;year&gt;1953&lt;/year&gt;
  &lt;category&gt;microcar&lt;/category&gt;
&lt;/car-entry&gt; 
 </msg>
<msg time="2026-04-05T00:36:30.472837" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.184:8181/rests/data/car:cars/car-entry=SMALL', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:30.473103" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:30.405958" elapsed="0.067202"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.401708" elapsed="0.071569"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.473788" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.473343" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.401690" elapsed="0.072301"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.481692" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.476561" elapsed="0.005193"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.475991" elapsed="0.005895"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.475945" elapsed="0.005977"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.485536" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.482305" elapsed="0.003295"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.482000" elapsed="0.003648"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.481977" elapsed="0.003704"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.486541" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.485924" elapsed="0.000655"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.487000" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.486677" elapsed="0.000404"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.487775" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.487332" elapsed="0.000479"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.487114" elapsed="0.000748"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.486652" elapsed="0.001239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.488650" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.488102" elapsed="0.000586"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.489100" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.488784" elapsed="0.000395"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.489859" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.489446" elapsed="0.000450"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.489213" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.488759" elapsed="0.001227"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:30.490205" elapsed="0.000513"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:30.491370" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.490941" elapsed="0.000466"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.491643" elapsed="0.002835"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:30.474891" elapsed="0.019655"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:30.494738" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-05T00:36:30.494625" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.494605" elapsed="0.000236"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.494990" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.495057" elapsed="0.000014"/>
</return>
<msg time="2026-04-05T00:36:30.497384" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:30.396511" elapsed="0.101047"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:30.497638" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:30.497797" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:30.242042" elapsed="0.255779"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.498205" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.497939" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.497919" elapsed="0.000434"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:30.498387" elapsed="0.000026"/>
</return>
<arg>${directory_with_template_folders}${/}item1</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:30.237231" elapsed="0.261303"/>
</kw>
<doc>Send a request to create a data item in the test list and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:30.152267" elapsed="0.346415"/>
</test>
<test id="s1-s4-s2-t23" name="Check_Item1_Is_Created" line="174">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:30.501922" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:30.501663" elapsed="0.000536"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.503252" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.503118" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.503097" elapsed="0.000230"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.508513" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.508388" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.508369" elapsed="0.000212"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.509570" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:30.509173" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.510046" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:30.509753" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:30.510117" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:30.510269" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:30.508804" elapsed="0.001489"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.515839" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.515686" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.515666" elapsed="0.000245"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.517296" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.517169" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.517146" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:30.517926" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.517531" elapsed="0.000422"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:30.518385" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:30.518109" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:30.550826" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:30.518982" elapsed="0.032026"/>
</kw>
<msg time="2026-04-05T00:36:30.551196" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:30.551242" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.518588" elapsed="0.032691"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:30.567765" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "I "t "e "m "1 "_ "I "s "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:30.551920" elapsed="0.016036"/>
</kw>
<msg time="2026-04-05T00:36:30.568145" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:30.568201" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "I "t "e "m "1 "_ "I "s "_ "C "r "e "a "t "e "d "[K"
...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.551494" elapsed="0.016753"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.568589" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.568338" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.568315" elapsed="0.000422"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.569319" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "I "t "e "m "1 "_ "I "s "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.568882" elapsed="0.000505"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.569682" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.569472" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.569453" elapsed="0.000331"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:30.569817" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:30.573110" elapsed="0.000155"/>
</kw>
<msg time="2026-04-05T00:36:30.573344" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:30.572464" elapsed="0.001026"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.574572" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.575692" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:30.570730" elapsed="0.005095"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:30.570092" elapsed="0.005866"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:30.516853" elapsed="0.059208"/>
</kw>
<msg time="2026-04-05T00:36:30.576159" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:30.576206" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "I "t "e "m "1 "_ "I "s "_ "C "r "e "a "t "e "d "[K"
...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.516096" elapsed="0.060151"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:30.576654" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:30.576326" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.576307" elapsed="0.000434"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.577157" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.577538" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.577613" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:30.515316" elapsed="0.062405"/>
</kw>
<msg time="2026-04-05T00:36:30.577813" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:30.577855" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "I "t "e "m "1 "_ "I "s "_ "C "r "e "a "t "e "d "[K"
...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.510694" elapsed="0.067199"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.578297" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.577968" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.577951" elapsed="0.000425"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:30.510552" elapsed="0.067847"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:30.510351" elapsed="0.068099"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:30.507996" elapsed="0.070512"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:30.502828" elapsed="0.075736"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.502376" elapsed="0.076235"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:30.499541" elapsed="0.079124"/>
</kw>
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.579527" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.579095" elapsed="0.000496"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.587155" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.586904" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.587639" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.587351" elapsed="0.000334"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:30.610270" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:30.610465" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '418'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL&lt;/id&gt;&lt;model&gt;Isetta&lt;/model&gt;&lt;year&gt;1953&lt;/year&gt;&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;&lt;category&gt;microcar&lt;/category&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:30.610576" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:30.589795" elapsed="0.020807"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.587753" elapsed="0.022894"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.610826" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.610674" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.587735" elapsed="0.023176"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.614567" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL&lt;/id&gt;&lt;model&gt;Isetta&lt;/model&gt;&lt;year&gt;1953&lt;/year&gt;&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;&lt;category&gt;microcar&lt;/category&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.611966" elapsed="0.002657"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.611746" elapsed="0.002912"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.611728" elapsed="0.002955"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.617246" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.614958" elapsed="0.002334"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.614739" elapsed="0.002588"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.614723" elapsed="0.002629"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.617933" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.617536" elapsed="0.000424"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.618263" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.618030" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.618820" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.618519" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.618346" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.618012" elapsed="0.000891"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.619499" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.619060" elapsed="0.000468"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.619828" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.619599" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.620358" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.620063" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.619908" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.619580" elapsed="0.000879"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:30.620652" elapsed="0.000348"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:30.621505" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.621165" elapsed="0.000367"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.621685" elapsed="0.002314"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:30.611286" elapsed="0.012777"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:30.624240" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-05T00:36:30.624133" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.624115" elapsed="0.000214"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.624491" elapsed="0.000037"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.624580" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:30.626963" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:30.582564" elapsed="0.044430"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:30.627055" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:30.627204" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL...</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:30.579818" elapsed="0.047415"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:30.627276" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:30.627454" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL...</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:30.578829" elapsed="0.048654"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;id&gt;SMALL&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.627644" elapsed="0.000305"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;model&gt;Isetta&lt;/model&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.628104" elapsed="0.000283"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.628558" elapsed="0.000281"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;year&gt;1953&lt;/year&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.628991" elapsed="0.000277"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;category&gt;microcar&lt;/category&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.629433" elapsed="0.000281"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;id&gt;TOYOTA&lt;/id&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.629867" elapsed="0.000282"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;model&gt;Camry&lt;/model&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.630299" elapsed="0.000299"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.630749" elapsed="0.000279"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;year&gt;1982&lt;/year&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.631179" elapsed="0.000322"/>
</kw>
<kw name="Should Not Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;category&gt;sedan&lt;/category&gt;</arg>
<doc>Fails if ``container`` contains ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:30.631655" elapsed="0.000279"/>
</kw>
<doc>Get the device data as XML and make sure it matches the content posted as JSON in the previous case.</doc>
<status status="PASS" start="2026-04-05T00:36:30.498933" elapsed="0.133122"/>
</test>
<test id="s1-s4-s2-t24" name="Add_Device_Data_Item_2_Via_JSON_Post" line="188">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:30.635340" elapsed="0.000235"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:30.635053" elapsed="0.000577"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.636604" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.636496" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.636477" elapsed="0.000239"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.641747" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.641640" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.641621" elapsed="0.000306"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.642941" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:30.642563" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.643453" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:30.643123" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:30.643525" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:30.643708" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:30.642164" elapsed="0.001571"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.649085" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.648978" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.648959" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.650367" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.650261" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.650243" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:30.650985" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.650601" elapsed="0.000411"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:30.651473" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:30.651191" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:30.684153" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:30.652045" elapsed="0.032289"/>
</kw>
<msg time="2026-04-05T00:36:30.684601" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:30.684647" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.651657" elapsed="0.033027"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:30.706321" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m "_ "2 "_ "V "i "a "_ "J "S "O "N "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:30.685251" elapsed="0.021537"/>
</kw>
<msg time="2026-04-05T00:36:30.707242" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:30.707345" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m "_ "2 "_ "V ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.684853" elapsed="0.022629"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.708163" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.707665" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.707619" elapsed="0.000773"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.709654" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m "_ "2 "_ "V "i "a "_ "J "S "O "N "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.708741" elapsed="0.001068"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.710465" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.709960" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.709918" elapsed="0.000774"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:30.710805" elapsed="0.000067"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:30.714232" elapsed="0.000147"/>
</kw>
<msg time="2026-04-05T00:36:30.714507" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:30.713595" elapsed="0.001023"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.715870" elapsed="0.000041"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.716976" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:30.711887" elapsed="0.005209"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:30.711257" elapsed="0.005967"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:30.649960" elapsed="0.067364"/>
</kw>
<msg time="2026-04-05T00:36:30.717416" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:30.717476" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m "_ "2 "_ "V ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.649297" elapsed="0.068217"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:30.717700" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:36:30.717592" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.717573" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.718174" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.718529" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.718603" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:30.648644" elapsed="0.070079"/>
</kw>
<msg time="2026-04-05T00:36:30.718817" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:30.718861" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "A "d "d "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "t "e "m "_ "2 "_ "V ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.644113" elapsed="0.074785"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.719221" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.718974" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.718956" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:30.643971" elapsed="0.075351"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:30.643793" elapsed="0.075559"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:30.641265" elapsed="0.078141"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:30.636196" elapsed="0.083301"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.635776" elapsed="0.083767"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:30.632869" elapsed="0.086725"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.720192" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.719756" elapsed="0.000463"/>
</kw>
<kw name="Post_As_Json_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.764877" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.764502" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:30.765662" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:30.765393" elapsed="0.000351">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:30.765838" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:30.765065" elapsed="0.000836"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.766486" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:30.766066" elapsed="0.000448"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:30.766812" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:30.766969" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:30.766673" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.767396" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.767148" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.768411" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.768153" elapsed="0.000320"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.769072" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.768628" elapsed="0.000470"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.769785" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:30.769478" elapsed="0.000333"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:30.770638" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.770315" elapsed="0.000350"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:30.770717" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:30.770872" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:30.770001" elapsed="0.000895"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.771045" elapsed="0.000243"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:30.769328" elapsed="0.002002"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.771902" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:30.771604" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:30.772671" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.772433" elapsed="0.000264"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:30.772747" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:30.772895" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:30.772111" elapsed="0.000808"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.773062" elapsed="0.000222"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:30.771473" elapsed="0.001852"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:30.769150" elapsed="0.004209"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:30.773402" elapsed="0.000042"/>
</return>
<msg time="2026-04-05T00:36:30.773576" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:30.767831" elapsed="0.005771"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.767530" elapsed="0.006104"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.773805" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.773660" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.767509" elapsed="0.006371"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.774668" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.774020" elapsed="0.000676"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:30.774744" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:30.763875" elapsed="0.010990"/>
</kw>
<msg time="2026-04-05T00:36:30.774956" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:30.751474" elapsed="0.023533"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.787310" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.800254" elapsed="0.000035"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.812478" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.812673" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.812845" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.813216" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.813074" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:30.813057" elapsed="0.000237"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.813445" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.813609" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.813766" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:30.813027" elapsed="0.000790"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.812923" elapsed="0.000920"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.813984" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.814058" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:30.814206" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:30.747312" elapsed="0.066920"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.838934" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/post_data.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.838557" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:30.839686" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2.titanium/post_data.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:30.839454" elapsed="0.000304">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2.titanium/post_data.json' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:30.839892" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:30.839117" elapsed="0.000800"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.840478" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/post_data.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:30.840077" elapsed="0.000429"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:30.840798" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2/post_data.json"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2/post_data.json&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:30.840942" level="INFO">${template} = {
  "car:car-entry": {
    "car:id":"TOYOTA",
    "car:model":"Camry",
    "car:manufacturer":"Toyota",
    "car:year":"1982",
    "car:category":"sedan"
  }
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:30.840661" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.841363" level="INFO">{
  "car:car-entry": {
    "car:id":"TOYOTA",
    "car:model":"Camry",
    "car:manufacturer":"Toyota",
    "car:year":"1982",
    "car:category":"sedan"
  }
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.841120" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:30.841785" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.841491" elapsed="0.000352"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.842351" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.842047" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.841868" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.841472" elapsed="0.000982"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.843035" level="INFO">${final_text} = {
  "car:car-entry": {
    "car:id":"TOYOTA",
    "car:model":"Camry",
    "car:manufacturer":"Toyota",
    "car:year":"1982",
    "car:category":"sedan"
  }
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.842595" elapsed="0.000467"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:30.843110" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:30.837899" elapsed="0.005336"/>
</kw>
<msg time="2026-04-05T00:36:30.843287" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:30.825435" elapsed="0.017898"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.855505" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.867724" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.879924" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.880114" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.880352" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.880729" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.880589" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:30.880573" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.880942" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.881102" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.881262" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:30.880544" elapsed="0.000769"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.880442" elapsed="0.000897"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.881492" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.881568" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:30.881697" level="INFO">${data} = {
  "car:car-entry": {
    "car:id":"TOYOTA",
    "car:model":"Camry",
    "car:manufacturer":"Toyota",
    "car:year":"1982",
    "car:category":"sedan"
  }
}</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:30.824535" elapsed="0.057188"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:30.882955" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:30.882726" elapsed="0.000292">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item2/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:30.883109" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:30.882377" elapsed="0.000755"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.883452" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.883201" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.883992" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.883704" elapsed="0.000313"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.883533" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.883183" elapsed="0.000889"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.886356" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:30.884217" elapsed="0.002165"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:30.886447" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:30.886600" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item2/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:30.882060" elapsed="0.004564"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.888138" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.887892" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.888606" level="INFO">{
  "car:car-entry": {
    "car:id":"TOYOTA",
    "car:model":"Camry",
    "car:manufacturer":"Toyota",
    "car:year":"1982",
    "car:category":"sedan"
  }
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.888329" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.889061" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.888812" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.889797" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.889441" elapsed="0.000413"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:30.890731" level="INFO">${accumulator} = {'Content-Type': 'application/json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:30.890524" elapsed="0.000268"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:30.891126" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:30.890948" elapsed="0.000204"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.891298" elapsed="0.000215"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.891915" level="INFO">{'Content-Type': 'application/json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.891666" elapsed="0.000294"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:30.892002" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:30.892160" level="INFO">${headers} = {'Content-Type': 'application/json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:30.890084" elapsed="0.002100"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:30.941231" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Content-Length': '159', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
  "car:car-entry": {
    "car:id":"TOYOTA",
    "car:model":"Camry",
    "car:manufacturer":"Toyota",
    "car:year":"1982",
    "car:category":"sedan"
  }
} 
 </msg>
<msg time="2026-04-05T00:36:30.941383" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 status=201, reason=Created 
 headers={'Location': 'http://10.30.170.184:8181/rests/data/car:cars/car-entry=TOYOTA', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:30.941641" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:30.894512" elapsed="0.047186"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.892255" elapsed="0.049545"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.942209" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.941859" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.892237" elapsed="0.050180"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.949358" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.944734" elapsed="0.004711"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.944225" elapsed="0.005272"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.944185" elapsed="0.005347"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.953129" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:30.949914" elapsed="0.003303"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.949611" elapsed="0.003669"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.949587" elapsed="0.003738"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.954388" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.953659" elapsed="0.000811"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.954981" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.954612" elapsed="0.000452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.955760" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.955313" elapsed="0.000483"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.955098" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.954575" elapsed="0.001299"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.956620" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.956087" elapsed="0.000569"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.957065" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.956752" elapsed="0.000391"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.958040" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:30.957459" elapsed="0.000618"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:30.957216" elapsed="0.000913"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.956728" elapsed="0.001444"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:30.958399" elapsed="0.000372"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:30.959264" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:30.958976" elapsed="0.000314"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.959456" elapsed="0.002455"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:30.943231" elapsed="0.018764"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.962214" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.962084" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.962062" elapsed="0.000238"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:30.965791" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:30.962497" elapsed="0.003332"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:30.965897" elapsed="0.000052"/>
</return>
<msg time="2026-04-05T00:36:30.966127" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:30.886958" elapsed="0.079202"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:30.966258" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:36:30.966486" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:30.736233" elapsed="0.230288"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:30.967026" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:30.966670" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.966645" elapsed="0.000509"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:30.967200" elapsed="0.000034"/>
</return>
<arg>${directory_with_template_folders}${/}item2</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.</doc>
<status status="PASS" start="2026-04-05T00:36:30.731945" elapsed="0.235420"/>
</kw>
<doc>Send a JSON request to change the sample test data and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:30.632276" elapsed="0.335288"/>
</test>
<test id="s1-s4-s2-t25" name="Check_Item2_Is_Created" line="193">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:30.972707" elapsed="0.000379"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:30.972311" elapsed="0.000858"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.974663" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.974503" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.974474" elapsed="0.000288"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.981668" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.981513" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.981485" elapsed="0.000284"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.983183" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:30.982648" elapsed="0.000572"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:30.983884" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:30.983462" elapsed="0.000459"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:30.983983" elapsed="0.000041"/>
</return>
<msg time="2026-04-05T00:36:30.984200" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:30.982096" elapsed="0.002140"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.991958" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.991805" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.991777" elapsed="0.000279"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:30.993692" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:30.993581" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:30.993561" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:30.994302" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:30.993905" elapsed="0.000424"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:30.994879" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:30.994596" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:31.027071" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:30.995482" elapsed="0.031796"/>
</kw>
<msg time="2026-04-05T00:36:31.027494" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:31.027542" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.995062" elapsed="0.032517"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:31.044157" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "I "t "e "m "2 "_ "I "s "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:31.028180" elapsed="0.016646"/>
</kw>
<msg time="2026-04-05T00:36:31.045320" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:31.045484" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "I "t "e "m "2 "_ "I "s "_ "C "r "e "a "t "e "d "[K"
...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.027760" elapsed="0.017816"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.046498" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.045808" elapsed="0.000920"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.045741" elapsed="0.001059"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.048286" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "I "t "e "m "2 "_ "I "s "_ "C "r "e "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.047167" elapsed="0.001321"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.049212" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.048677" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.048630" elapsed="0.000897"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:31.049617" elapsed="0.000089"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:31.054768" elapsed="0.000161"/>
</kw>
<msg time="2026-04-05T00:36:31.055008" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.054062" elapsed="0.001060"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.056348" elapsed="0.000042"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.057526" elapsed="0.000039"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:31.051713" elapsed="0.005937"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:31.050347" elapsed="0.007447"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:30.993227" elapsed="0.064668"/>
</kw>
<msg time="2026-04-05T00:36:31.057994" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:31.058039" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "I "t "e "m "2 "_ "I "s "_ "C "r "e "a "t "e "d "[K"
...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.992251" elapsed="0.065828"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:31.058507" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-05T00:36:31.058311" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.058286" elapsed="0.000324"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.059233" elapsed="0.000032"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.059702" elapsed="0.000030"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.059786" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:30.991316" elapsed="0.068602"/>
</kw>
<msg time="2026-04-05T00:36:31.060034" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:31.060084" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "I "t "e "m "2 "_ "I "s "_ "C "r "e "a "t "e "d "[K"
...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.984887" elapsed="0.075244"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.060793" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.060225" elapsed="0.000634"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.060205" elapsed="0.000683"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:30.984682" elapsed="0.076236"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:30.984404" elapsed="0.076558"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:30.980955" elapsed="0.080082"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:30.974072" elapsed="0.087036"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:30.973393" elapsed="0.087772"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:30.968873" elapsed="0.092358"/>
</kw>
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.062250" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.061810" elapsed="0.000471"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.074261" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.074004" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.074721" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.074474" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:31.097292" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:31.097477" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '554'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL&lt;/id&gt;&lt;model&gt;Isetta&lt;/model&gt;&lt;year&gt;1953&lt;/year&gt;&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;&lt;category&gt;microcar&lt;/category&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;TOYOTA&lt;/id&gt;&lt;model&gt;Camry&lt;/model&gt;&lt;year&gt;1982&lt;/year&gt;&lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;&lt;category&gt;sedan&lt;/category&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt; 
 </msg>
<msg time="2026-04-05T00:36:31.097596" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:31.076869" elapsed="0.020753"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.074833" elapsed="0.022831"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.097873" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.097690" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.074814" elapsed="0.023222"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.101465" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL&lt;/id&gt;&lt;model&gt;Isetta&lt;/model&gt;&lt;year&gt;1953&lt;/year&gt;&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;&lt;category&gt;microcar&lt;/category&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;TOYOTA&lt;/id&gt;&lt;model&gt;Camry&lt;/model&gt;&lt;year&gt;1982&lt;/year&gt;&lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;&lt;category&gt;sedan&lt;/category&gt;&lt;/car-entry&gt;&lt;/cars&gt;&lt;cont xmlns="urn:opendaylight:test:netconf:crud"&gt;&lt;l&gt;Content Modified via JSON&lt;/l&gt;&lt;/cont&gt;&lt;/data&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.099056" elapsed="0.002467"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.098839" elapsed="0.002720"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.098821" elapsed="0.002762"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.104141" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.101855" elapsed="0.002342"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.101638" elapsed="0.002614"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.101621" elapsed="0.002662"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.104868" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.104478" elapsed="0.000417"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.105209" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.104963" elapsed="0.000316"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.105781" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.105484" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.105308" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.104946" elapsed="0.000916"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.106366" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.106012" elapsed="0.000381"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.106702" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.106477" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.107223" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.106934" elapsed="0.000314"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.106783" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.106460" elapsed="0.000843"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.107463" elapsed="0.000342"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:31.108288" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.107964" elapsed="0.000349"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.108482" elapsed="0.002268"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:31.098401" elapsed="0.012411"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:31.110984" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-05T00:36:31.110879" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.110861" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.111216" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.111286" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:31.113620" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:31.066138" elapsed="0.047512"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:31.113711" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:31.113896" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL...</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:31.062866" elapsed="0.051058"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:31.113967" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:31.114107" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;&lt;cars xmlns="urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car"&gt;&lt;car-entry&gt;&lt;id&gt;KEEP&lt;/id&gt;&lt;/car-entry&gt;&lt;car-entry&gt;&lt;id&gt;SMALL...</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:31.061473" elapsed="0.052661"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;id&gt;SMALL&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:31.114289" elapsed="0.000322"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;model&gt;Isetta&lt;/model&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:31.114764" elapsed="0.000284"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;manufacturer&gt;BMW&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:31.115199" elapsed="0.000294"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;year&gt;1953&lt;/year&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:31.115646" elapsed="0.000275"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;category&gt;microcar&lt;/category&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:31.116070" elapsed="0.000285"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;id&gt;TOYOTA&lt;/id&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:31.116525" elapsed="0.000274"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;model&gt;Camry&lt;/model&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:31.116947" elapsed="0.000287"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;manufacturer&gt;Toyota&lt;/manufacturer&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:31.117395" elapsed="0.000289"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;year&gt;1982&lt;/year&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:31.117833" elapsed="0.000270"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>&lt;category&gt;sedan&lt;/category&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:31.118283" elapsed="0.000300"/>
</kw>
<doc>Get the device data as XML and make sure it matches the content posted as JSON in the previous case.</doc>
<status status="PASS" start="2026-04-05T00:36:30.968066" elapsed="0.150638"/>
</test>
<test id="s1-s4-s2-t26" name="Delete_Device_Data" line="207">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:31.122146" elapsed="0.000204"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:31.121889" elapsed="0.000515"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.123373" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.123265" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.123246" elapsed="0.000210"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.128313" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.128182" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.128156" elapsed="0.000224"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.129356" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:31.128985" elapsed="0.000397"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.129841" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:31.129551" elapsed="0.000316"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:31.129910" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:31.130060" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:31.128619" elapsed="0.001464"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.135505" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.135385" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.135366" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.136884" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.136779" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.136761" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:31.137510" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.137088" elapsed="0.000534"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:31.138050" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:31.137782" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:31.169548" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:31.138683" elapsed="0.031055"/>
</kw>
<msg time="2026-04-05T00:36:31.169917" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:31.169963" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.138260" elapsed="0.031739"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:31.184687" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "l "e "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:31.170576" elapsed="0.014297"/>
</kw>
<msg time="2026-04-05T00:36:31.185052" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:31.185097" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "l "e "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "[K"
[?1l&gt;[?2004l[?1h...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.170166" elapsed="0.014968"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.185452" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.185211" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.185191" elapsed="0.000366"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.186082" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "l "e "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.185695" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.186436" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.186212" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.186193" elapsed="0.000346"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:31.186572" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:31.189791" elapsed="0.000146"/>
</kw>
<msg time="2026-04-05T00:36:31.190013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.189094" elapsed="0.001024"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.191205" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.192318" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:31.187406" elapsed="0.005045"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:31.186823" elapsed="0.005758"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:31.136479" elapsed="0.056199"/>
</kw>
<msg time="2026-04-05T00:36:31.192767" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:31.192810" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "l "e "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "[K"
[?1l&gt;[?2004l[?1h...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.135716" elapsed="0.057132"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:31.193028" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:36:31.192923" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.192905" elapsed="0.000204"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.193528" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.193854" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.193959" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:31.135055" elapsed="0.059013"/>
</kw>
<msg time="2026-04-05T00:36:31.194159" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:31.194201" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "l "e "t "e "_ "D "e "v "i "c "e "_ "D "a "t "a "[K"
[?1l&gt;[?2004l[?1h...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.130505" elapsed="0.063733"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.194743" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.194312" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.194295" elapsed="0.000525"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:31.130350" elapsed="0.064494"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:31.130142" elapsed="0.064732"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:31.127805" elapsed="0.067121"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:31.122983" elapsed="0.071997"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.122566" elapsed="0.072457"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:31.119626" elapsed="0.075450"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.195709" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.195236" elapsed="0.000499"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.237746" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.237316" elapsed="0.000459"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:31.238574" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:31.238264" elapsed="0.000391">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:31.238749" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:31.237934" elapsed="0.000839"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.239314" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:31.238933" elapsed="0.000422"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:31.239686" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/datamod1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:31.239839" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:31.239545" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.240266" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/test:cont
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.240016" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.241262" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.241002" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.241737" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.241475" elapsed="0.000288"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.242405" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:31.242107" elapsed="0.000338"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:31.243163" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.242946" elapsed="0.000278"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:31.243282" elapsed="0.000057"/>
</return>
<msg time="2026-04-05T00:36:31.243489" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:31.242632" elapsed="0.000883"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.243664" elapsed="0.000231"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:31.241977" elapsed="0.001959"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.244490" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:31.244175" elapsed="0.000341"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:31.245215" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.245006" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:31.245290" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:31.245453" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:31.244697" elapsed="0.000782"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.245625" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:31.244047" elapsed="0.001838"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:31.241810" elapsed="0.004109"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:31.245962" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:31.246116" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:31.240686" elapsed="0.005455"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.240379" elapsed="0.005793"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.246340" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.246197" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.240360" elapsed="0.006056"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.247144" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.246572" elapsed="0.000600"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:31.247221" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:31.236708" elapsed="0.010652"/>
</kw>
<msg time="2026-04-05T00:36:31.247434" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.224088" elapsed="0.023395"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.259901" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.272218" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/datamod1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.284436" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.284671" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.284843" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.285203" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.285063" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:31.285049" elapsed="0.000232"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.285416" elapsed="0.000036"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.285598" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.285758" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:31.285019" elapsed="0.000792"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.284918" elapsed="0.000918"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.285978" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.286053" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:31.286172" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:31.219869" elapsed="0.066329"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.287313" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.287056" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:31.319102" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:31.319229" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/test:cont 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:31.319508" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:31.289455" elapsed="0.030116"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.287445" elapsed="0.032226"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.320102" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.319734" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.287409" elapsed="0.032891"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.328021" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.322765" elapsed="0.005304"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.322212" elapsed="0.005896"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.322168" elapsed="0.005967"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.330707" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.328443" elapsed="0.002330"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.328195" elapsed="0.002614"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.328177" elapsed="0.002656"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.331406" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.331008" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.331756" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.331526" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.332352" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.331991" elapsed="0.000387"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.331835" elapsed="0.000579"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.331508" elapsed="0.000944"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.332968" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.332605" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.333289" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.333063" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.333835" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.333539" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.333369" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.333046" elapsed="0.000871"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.334062" elapsed="0.000511"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:31.335050" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.334751" elapsed="0.000324"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.335226" elapsed="0.002446"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:31.321192" elapsed="0.016544"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:31.337783" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:36:31.340064" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:36:31.286476" elapsed="0.053615"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:31.340146" elapsed="0.000027"/>
</return>
<arg>${directory_with_template_folders}${/}datamod1</arg>
<arg>${mapping}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:36:31.195955" elapsed="0.144315"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.381942" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.381570" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:31.382793" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:31.382491" elapsed="0.000380">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:31.382965" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:31.382129" elapsed="0.000860"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.383548" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:31.383150" elapsed="0.000425"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:31.383868" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/item1/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:31.384015" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:31.383733" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.384489" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.384205" elapsed="0.000330"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.385518" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.385227" elapsed="0.000335"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.386032" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.385758" elapsed="0.000300"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.386765" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:31.386462" elapsed="0.000328"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:31.387518" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.387286" elapsed="0.000258"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:31.387594" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:31.387744" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:31.386974" elapsed="0.000794"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.387915" elapsed="0.000224"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:31.386287" elapsed="0.001896"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.388740" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:31.388437" elapsed="0.000329"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:31.389642" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.389414" elapsed="0.000255"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:31.389719" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:31.389868" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:31.388947" elapsed="0.000946"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.390037" elapsed="0.000221"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:31.388296" elapsed="0.002003"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:31.386110" elapsed="0.004224"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:31.390392" elapsed="0.000047"/>
</return>
<msg time="2026-04-05T00:36:31.390569" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:31.384891" elapsed="0.005703"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.384602" elapsed="0.006023"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.390795" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.390651" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.384584" elapsed="0.006288"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.391588" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.391012" elapsed="0.000603"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:31.391665" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:31.380944" elapsed="0.010845"/>
</kw>
<msg time="2026-04-05T00:36:31.391843" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.368444" elapsed="0.023446"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.404249" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.416464" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD/../../../variables/netconf/CRUD/item1/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.428562" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.428751" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.428918" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.429278" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.429138" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:31.429123" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.429506" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.429671" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.429831" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:31.429093" elapsed="0.000790"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.428992" elapsed="0.000916"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.430048" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.430148" elapsed="0.000021"/>
</return>
<msg time="2026-04-05T00:36:31.430307" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:31.364221" elapsed="0.066118"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.431485" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.431199" elapsed="0.000332"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:31.464030" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:31.464095" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/car:cars 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:31.464237" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:31.433599" elapsed="0.030681"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.431598" elapsed="0.032752"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.464622" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.464387" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.431581" elapsed="0.033157"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.469780" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.466177" elapsed="0.003663"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.465845" elapsed="0.004058"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.465819" elapsed="0.004118"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.473510" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.470313" elapsed="0.003261"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.470014" elapsed="0.003609"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.469992" elapsed="0.003664"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.474439" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.473974" elapsed="0.000494"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.474766" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.474538" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.475299" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.475000" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.474847" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.474521" elapsed="0.000860"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.475909" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.475549" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.476232" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.476004" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.476780" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.476485" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.476313" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.475987" elapsed="0.000876"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.477007" elapsed="0.000350"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:31.477809" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.477532" elapsed="0.000303"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.478013" elapsed="0.002335"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:31.465240" elapsed="0.015172"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:31.480473" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:36:31.482702" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:36:31.430621" elapsed="0.052107"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:31.482821" elapsed="0.000029"/>
</return>
<arg>${directory_with_template_folders}${/}item1</arg>
<arg>${mapping}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:36:31.340510" elapsed="0.142438"/>
</kw>
<doc>Send a request to delete the sample test data on the device and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:31.119025" elapsed="0.364052"/>
</test>
<test id="s1-s4-s2-t27" name="Check_Device_Data_Is_Deleted" line="213">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:31.486442" elapsed="0.000212"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:31.486167" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.487687" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.487579" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.487561" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.492589" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.492483" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.492465" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.493648" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:31.493250" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.494147" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:31.493843" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:31.494217" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:31.494369" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:31.492878" elapsed="0.001516"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.499960" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.499854" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.499835" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.501395" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.501290" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.501271" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:31.502033" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.501627" elapsed="0.000433"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:31.502515" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:31.502216" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:31.534078" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:31.503089" elapsed="0.031168"/>
</kw>
<msg time="2026-04-05T00:36:31.534457" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:31.534504" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.502697" elapsed="0.031845"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:31.552778" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "D "e "l "e "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:31.535104" elapsed="0.017863"/>
</kw>
<msg time="2026-04-05T00:36:31.553147" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:31.553192" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "D "e "l ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.534708" elapsed="0.018520"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.553565" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.553306" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.553286" elapsed="0.000386"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.554199" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "D "e "l "e "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.553811" elapsed="0.000455"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.554561" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.554332" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.554314" elapsed="0.000350"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:31.554697" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:31.558059" elapsed="0.000150"/>
</kw>
<msg time="2026-04-05T00:36:31.558287" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.557282" elapsed="0.001113"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.559504" elapsed="0.000040"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.560616" elapsed="0.000039"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:31.555598" elapsed="0.005138"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:31.554953" elapsed="0.005916"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:31.500990" elapsed="0.059979"/>
</kw>
<msg time="2026-04-05T00:36:31.561062" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:31.561106" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "D "e "l ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.500182" elapsed="0.060962"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:31.561389" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-05T00:36:31.561260" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.561240" elapsed="0.000271"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.561911" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.562244" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.562317" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:31.499518" elapsed="0.063097"/>
</kw>
<msg time="2026-04-05T00:36:31.562715" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:31.562759" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "D "e "l ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.494831" elapsed="0.067966"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.563123" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.562876" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.562858" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:31.494690" elapsed="0.068534"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:31.494514" elapsed="0.068741"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:31.492116" elapsed="0.071194"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:31.487277" elapsed="0.076089"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.486855" elapsed="0.076557"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:31.484021" elapsed="0.079462"/>
</kw>
<kw name="Regexp Escape" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.563970" level="INFO">${escaped} = urn:ietf:params:xml:ns:netconf:base:1\.0</msg>
<var>${escaped}</var>
<arg>${ODL_NETCONF_NAMESPACE}</arg>
<doc>Returns each argument escaped for use as a regular expression.</doc>
<status status="PASS" start="2026-04-05T00:36:31.563643" elapsed="0.000353"/>
</kw>
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.565565" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${device_name}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.564910" elapsed="0.000684"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.573080" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.572823" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.573576" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.573279" elapsed="0.000342"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:31.589561" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:31.589706" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '55'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt; 
 </msg>
<msg time="2026-04-05T00:36:31.589801" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:31.575715" elapsed="0.014111"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.573691" elapsed="0.016178"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.590041" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.589894" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.573673" elapsed="0.016488"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.597723" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.592341" elapsed="0.005489"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.591867" elapsed="0.006040"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.591825" elapsed="0.006137"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.600622" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.598360" elapsed="0.002307"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.598085" elapsed="0.002617"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.598048" elapsed="0.002678"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.601272" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.600888" elapsed="0.000411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.601620" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.601370" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.602154" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.601857" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.601702" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.601352" elapsed="0.000885"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.602763" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.602389" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.603082" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.602858" elapsed="0.000281"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.603636" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.603322" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.603163" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.602841" elapsed="0.000876"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.603861" elapsed="0.000341"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:31.604659" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.604360" elapsed="0.000325"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.604833" elapsed="0.002407"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:31.590902" elapsed="0.016401"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:31.607501" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:31.607374" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.607356" elapsed="0.000231"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.607730" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.607800" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:31.610091" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:31.568392" elapsed="0.041726"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:31.610178" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:36:31.610334" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:31.565812" elapsed="0.044548"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:31.610402" elapsed="0.000040"/>
</return>
<msg time="2026-04-05T00:36:31.610560" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:31.564646" elapsed="0.045940"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-04-05T00:36:31.610829" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.610649" elapsed="0.000547"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.611408" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.611258" elapsed="0.000225"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.611647" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.611507" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.610632" elapsed="0.001090"/>
</if>
<arg>&lt;data xmlns\="${escaped}"(\/&gt;|&gt;&lt;\/data&gt;)</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-05T00:36:31.564203" elapsed="0.047565"/>
</kw>
<doc>Get the device data and make sure it is empty again.</doc>
<status status="PASS" start="2026-04-05T00:36:31.483479" elapsed="0.128396"/>
</test>
<test id="s1-s4-s2-t28" name="Deconfigure_Device_From_Netconf" line="218">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:31.615155" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:31.614898" elapsed="0.000517"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.616387" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.616280" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.616262" elapsed="0.000209"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.621292" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.621186" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.621167" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.622334" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:31.621963" elapsed="0.000397"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.622822" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:31.622530" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:31.622892" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:31.623042" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:31.621595" elapsed="0.001471"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.628571" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.628462" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.628442" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.629871" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.629767" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.629748" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:31.630487" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.630076" elapsed="0.000438"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:31.630923" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:31.630668" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:31.663142" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:31.631506" elapsed="0.031833"/>
</kw>
<msg time="2026-04-05T00:36:31.663654" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:31.663702" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.631103" elapsed="0.032635"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:31.696404" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:31.664316" elapsed="0.032300"/>
</kw>
<msg time="2026-04-05T00:36:31.696798" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:31.696843" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.663911" elapsed="0.032968"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.697209" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.696991" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.696970" elapsed="0.000342"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.697872" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.697481" elapsed="0.000459"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.698219" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.698008" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.697990" elapsed="0.000334"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:31.698357" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:31.701609" elapsed="0.000145"/>
</kw>
<msg time="2026-04-05T00:36:31.701829" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.700918" elapsed="0.001014"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.703000" elapsed="0.000039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.704091" elapsed="0.000039"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:31.699210" elapsed="0.005006"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:31.698628" elapsed="0.005714"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:31.629466" elapsed="0.074998"/>
</kw>
<msg time="2026-04-05T00:36:31.704567" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:31.704612" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.628786" elapsed="0.075862"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:31.704832" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:36:31.704725" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.704707" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.705294" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.705654" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.705726" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:31.628108" elapsed="0.077725"/>
</kw>
<msg time="2026-04-05T00:36:31.705926" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:31.705969" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.623438" elapsed="0.082566"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.706321" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.706078" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.706061" elapsed="0.000336"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:31.623287" elapsed="0.083165"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:31.623118" elapsed="0.083366"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:31.620798" elapsed="0.085739"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:31.615997" elapsed="0.090594"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.615579" elapsed="0.091057"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:31.612809" elapsed="0.093878"/>
</kw>
<kw name="Remove_Device_From_Netconf" owner="NetconfKeywords">
<kw name="Pop From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:31.707560" level="INFO">${device_type} = full-uri-device</msg>
<var>${device_type}</var>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<doc>Pops the given ``key`` from the ``dictionary`` and returns its value.</doc>
<status status="PASS" start="2026-04-05T00:36:31.707302" elapsed="0.000284"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.708171" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.707747" elapsed="0.000450"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:31.729733" elapsed="0.000426"/>
</kw>
<msg time="2026-04-05T00:36:31.730215" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.729350" elapsed="0.000918"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:31.728955" elapsed="0.001390"/>
</kw>
<msg time="2026-04-05T00:36:31.730388" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.720114" elapsed="0.010336"/>
</kw>
<msg time="2026-04-05T00:36:31.730556" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:31.719732" elapsed="0.010848"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.772331" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.771935" elapsed="0.000425"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:31.773115" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:31.772870" elapsed="0.000323">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:31.773285" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:31.772539" elapsed="0.000770"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.773865" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:31.773484" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:31.774185" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:31.774358" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:31.774049" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.774796" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.774551" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.775788" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.775531" elapsed="0.000301"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.776266" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.775986" elapsed="0.000305"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.776961" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:31.776662" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:31.778069" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.777781" elapsed="0.000315"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:31.778147" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:31.778301" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:31.777323" elapsed="0.001041"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.778546" elapsed="0.000233"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:31.776529" elapsed="0.002291"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.779359" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:31.779062" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:31.780148" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.779895" elapsed="0.000279"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:31.780231" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:31.780386" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:31.779585" elapsed="0.000847"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.780618" elapsed="0.000233"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:31.778933" elapsed="0.001958"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:31.776341" elapsed="0.004586"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:31.780969" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:31.781122" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:31.775198" elapsed="0.005949"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.774911" elapsed="0.006268"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.781350" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.781204" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.774890" elapsed="0.006551"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.782147" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.781583" elapsed="0.000592"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:31.782224" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:31.771315" elapsed="0.011034"/>
</kw>
<msg time="2026-04-05T00:36:31.782402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.758983" elapsed="0.023494"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.805312" elapsed="0.000073"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.817629" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.829781" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.830566" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.830753" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.831168" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.831020" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:31.831002" elapsed="0.000249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.831391" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.831571" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.831732" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:31.830959" elapsed="0.000825"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.830839" elapsed="0.000995"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.831982" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.832062" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:36:31.832230" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:31.754789" elapsed="0.077469"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.833477" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.833160" elapsed="0.000368"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:31.845380" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:31.845478" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:31.845627" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:31.835851" elapsed="0.009814"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.833595" elapsed="0.012128"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.845980" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.845762" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.833577" elapsed="0.012524"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.851062" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.847574" elapsed="0.003552"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.847234" elapsed="0.003945"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.847208" elapsed="0.004006"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.855182" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.851638" elapsed="0.003613"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.851296" elapsed="0.004006"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.851271" elapsed="0.004067"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.856191" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.855608" elapsed="0.000623"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.856695" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.856333" elapsed="0.000447"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.857536" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.857048" elapsed="0.000527"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.856817" elapsed="0.000882"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.856308" elapsed="0.001425"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.858534" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.857969" elapsed="0.000605"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.859022" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.858678" elapsed="0.000430"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.859870" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.859380" elapsed="0.000530"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.859144" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.858652" elapsed="0.001344"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.860215" elapsed="0.000537"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:31.861408" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:31.860990" elapsed="0.000474"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.861677" elapsed="0.003168"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:31.846637" elapsed="0.018272"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:31.864957" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:36:31.867187" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:36:31.832542" elapsed="0.034672"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:31.867269" elapsed="0.000027"/>
</return>
<arg>${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>${mapping}</arg>
<arg>session=${session}</arg>
<arg>location=${location}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:36:31.730800" elapsed="0.136592"/>
</kw>
<arg>${device_name}</arg>
<doc>Tell Netconf to deconfigure the specified device</doc>
<status status="PASS" start="2026-04-05T00:36:31.706942" elapsed="0.160530"/>
</kw>
<doc>Make request to deconfigure the testtool device on Netconf connector.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:31.612154" elapsed="0.255433"/>
</test>
<test id="s1-s4-s2-t29" name="Check_Device_Going_To_Be_Gone_After_Deconfiguring" line="224">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:31.871592" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:31.871302" elapsed="0.000555"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.872852" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.872742" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.872722" elapsed="0.000199"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.877987" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.877880" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.877862" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.879051" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:31.878670" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.879555" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:31.879234" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:31.879628" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:31.879784" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:31.878278" elapsed="0.001531"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.885213" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.885106" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.885087" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.886657" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:31.886550" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.886531" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:31.887256" level="INFO">${karaf_connection_index} = 11</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:31.886867" elapsed="0.000415"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:31.887745" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:31.887455" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:31.921226" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:31.888322" elapsed="0.033090"/>
</kw>
<msg time="2026-04-05T00:36:31.921617" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:31.921666" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.887928" elapsed="0.033776"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:31.950806" level="INFO">"s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "G "o "i "n "g "_ "T "o "_ "B "e "_ "G "o "n "e "_ "A "f "t "e "r "_ "D "e "c "o "n "f "i "g "u "r "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:31.922292" elapsed="0.028998"/>
</kw>
<msg time="2026-04-05T00:36:31.951698" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:31.951769" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "G "o "i "n "g "_ "T "o "_ "B "e ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.921880" elapsed="0.029946"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.952445" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.951991" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.951941" elapsed="0.000665"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.953507" level="INFO"> "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "G "o "i "n "g "_ "T "o "_ "B "e "_ "G "o "n "e "_ "A "f "t "e "r "_ "D "e "c "o "n "f "i "g "u "r "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.952827" elapsed="0.000796"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.954041" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.953725" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.953697" elapsed="0.000494"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:31.954246" elapsed="0.000053"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:31.959547" elapsed="0.000225"/>
</kw>
<msg time="2026-04-05T00:36:31.959889" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:31.958370" elapsed="0.001676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.961711" elapsed="0.000056"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.963400" elapsed="0.000078"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:31.955702" elapsed="0.007900"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:31.954712" elapsed="0.009085"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:31.886128" elapsed="0.077819"/>
</kw>
<msg time="2026-04-05T00:36:31.964092" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:31.964159" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "G "o "i "n "g "_ "T "o "_ "B "e ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.885445" elapsed="0.078773"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:31.964843" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-05T00:36:31.964673" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.964306" elapsed="0.000663"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.965588" elapsed="0.000165"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.966227" elapsed="0.000036"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.966333" elapsed="0.000024"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:31.884771" elapsed="0.081749"/>
</kw>
<msg time="2026-04-05T00:36:31.966662" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:31.966727" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D ". "C "R "U "D ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "G "o "i "n "g "_ "T "o "_ "B "e ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.880169" elapsed="0.086612"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.967295" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.966893" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.966867" elapsed="0.000541"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:31.880031" elapsed="0.087436"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:31.879862" elapsed="0.087652"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:31.877516" elapsed="0.090078"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:31.872448" elapsed="0.095232"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:31.872007" elapsed="0.095741"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:31.869186" elapsed="0.098642"/>
</kw>
<kw name="Wait_Device_Fully_Removed" owner="NetconfKeywords">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Completely_Gone" owner="NetconfKeywords">
<kw name="Check_Device_Has_No_Netconf_Connector" owner="NetconfKeywords">
<kw name="Count_Netconf_Connectors_For_Device" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.980989" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.978785" elapsed="0.002231"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.981342" elapsed="0.000021"/>
</kw>
<var name="${nv}"/>
<status status="NOT RUN" start="2026-04-05T00:36:31.981192" elapsed="0.000208"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="NOT RUN" start="2026-04-05T00:36:31.981072" elapsed="0.000368"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.981739" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.981505" elapsed="0.000292"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.982536" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:31.982049" elapsed="0.000514"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.981821" elapsed="0.000780"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:31.982786" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:31.982626" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.981488" elapsed="0.001375"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:31.982898" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:31.983056" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:31.978321" elapsed="0.004761"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:31.983129" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:31.983271" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:31.977836" elapsed="0.005461"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.990651" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.990380" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:31.991117" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:31.990849" elapsed="0.000419"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:32.002522" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:32.002745" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1181'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-05T00:36:32.002904" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:31.993369" elapsed="0.009573"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:31.991340" elapsed="0.011663"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:32.003255" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:32.003040" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:31.991321" elapsed="0.012055"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.024552" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:32.004812" elapsed="0.019796"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:32.004507" elapsed="0.020136"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:32.004481" elapsed="0.020188"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.043156" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:32.024943" elapsed="0.018261"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:32.024724" elapsed="0.018515"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:32.024708" elapsed="0.018556"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.043970" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:32.043583" elapsed="0.000413"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:32.044296" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:32.044066" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.044878" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:32.044550" elapsed="0.000354"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:32.044378" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:32.044049" elapsed="0.000912"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.045519" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:32.045113" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:32.045841" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:32.045615" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.046393" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:32.046073" elapsed="0.000389"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:32.045921" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:32.045597" elapsed="0.000957"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:32.046730" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:32.047858" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:32.047240" elapsed="0.000644"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:32.048036" elapsed="0.002946"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:32.003897" elapsed="0.047150"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:32.051223" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:32.051117" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:32.051098" elapsed="0.000193"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:32.054486" level="INFO">${text_normalized} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:32.051452" elapsed="0.003064"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:32.054577" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:32.054734" level="INFO">${response_text} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:31.986064" elapsed="0.068696"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:32.054817" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:32.054963" level="INFO">${mounts} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${mounts}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:31.983531" elapsed="0.071457"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.055394" level="INFO">{
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topology-parameters": {
       "encryption": {
        "encryption-alg": [
         "AEAD_AES_128_GCM",
         "AEAD_AES_256_GCM",
         "aes128-cbc",
         "aes128-ctr",
         "aes192-cbc",
         "aes192-ctr",
         "aes256-cbc",
         "aes256-ctr",
         "chacha20-poly1305"
        ]
       },
       "host-key": {
        "host-key-alg": [
         "ecdsa-sha2-nistp256",
         "ecdsa-sha2-nistp384",
         "ecdsa-sha2-nistp521",
         "rsa-sha2-256",
         "rsa-sha2-512",
         "ssh-ed25519",
         "ssh-rsa"
        ]
       },
       "key-exchange": {
        "key-exchange-alg": [
         "curve25519-sha256",
         "curve448-sha512",
         "diffie-hellman-group-exchange-sha256",
         "diffie-hellman-group14-sha256",
         "diffie-hellman-group15-sha512",
         "diffie-hellman-group16-sha512",
         "diffie-hellman-group17-sha512",
         "diffie-hellman-group18-sha512",
         "ecdh-sha2-nistp256",
         "ecdh-sha2-nistp384",
         "ecdh-sha2-nistp521",
         "mlkem1024nistp384-sha384",
         "mlkem768nistp256-sha256",
         "mlkem768x25519-sha256",
         "sntrup761x25519-sha512"
        ]
       },
       "mac": {
        "mac-alg": [
         "hmac-sha1",
         "hmac-sha2-256",
         "hmac-sha2-512"
        ]
       }
      }
     }
    }
   },
   {
    "topology-id": "flow:1"
   },
   {
    "topology-id": "hwvtep:1"
   },
   {
    "topology-id": "ovsdb:1"
   }
  ]
 }
}
</msg>
<arg>${mounts}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:32.055145" elapsed="0.000386"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.056067" level="INFO">${actual_count} = 0</msg>
<var>${actual_count}</var>
<arg>len('''${mounts}'''.split('"node-id": "${device_name}"'))-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:32.055681" elapsed="0.000412"/>
</kw>
<return>
<value>${actual_count}</value>
<status status="PASS" start="2026-04-05T00:36:32.056138" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:32.056287" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Count all instances of the specified device in the Netconf topology (usually 0 or 1).</doc>
<status status="PASS" start="2026-04-05T00:36:31.970183" elapsed="0.086129"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.056739" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${count}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:32.056482" elapsed="0.000312"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Check that there are no instances of the specified device in the Netconf topology.</doc>
<status status="PASS" start="2026-04-05T00:36:31.969739" elapsed="0.087113"/>
</kw>
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.067048" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:32.064996" elapsed="0.002079"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.067744" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:32.067407" elapsed="0.000404"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:32.067259" elapsed="0.000591"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.068389" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:32.068075" elapsed="0.000340"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:32.067931" elapsed="0.000535"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:32.067129" elapsed="0.001366"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.069248" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:32.068789" elapsed="0.000486"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:32.068559" elapsed="0.000752"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:32.069512" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:32.069336" elapsed="0.000233"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:32.069741" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:32.069592" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:32.068541" elapsed="0.001274"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:32.069848" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:32.069993" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:32.064544" elapsed="0.005474"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:32.070065" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:32.070204" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>config</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:32.063867" elapsed="0.006363"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:32.079979" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node01hrj7za0heold3qhjwmnlqxi84.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:32.080089" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-05T00:36:32.080183" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:32.071016" elapsed="0.009192"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-05T00:36:32.089874" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-05T00:36:32.080288" elapsed="0.009718"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:32.080269" elapsed="0.009792"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:32.090451" elapsed="0.000054"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:32.090817" elapsed="0.000044"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config in default using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-05T00:36:32.070620" elapsed="0.020369"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device has no Netconf connectors nor associated data.</doc>
<status status="PASS" start="2026-04-05T00:36:31.969188" elapsed="0.121926"/>
</kw>
<arg>${timeout}</arg>
<arg>${period}</arg>
<arg>Check_Device_Completely_Gone</arg>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:31.968616" elapsed="0.122600"/>
</kw>
<arg>${device_name}</arg>
<doc>Wait until all netconf connectors for the device with the given name disappear.
Call of Remove_Device_From_Netconf returns before netconf gets
around deleting the device's connector. To ensure the device is
really gone from netconf, use this keyword to make sure all
connectors disappear. If a call to Remove_Device_From_Netconf
is not made before using this keyword, the wait will fail.
Using this keyword is more readable than putting the WUKS below
into a test case.</doc>
<status status="PASS" start="2026-04-05T00:36:31.968132" elapsed="0.123146"/>
</kw>
<doc>Check that the device is really going to be gone. Fail
if found after one minute. This is an expected behavior as the
delete request is sent to the config subsystem which then triggers
asynchronous destruction of the netconf connector referring to the
device and the device's data. This test makes sure this
asynchronous operation does not take unreasonable amount of time
by making sure that both the netconf connector and the device's
data is gone before reporting success.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:31.867921" elapsed="0.223530"/>
</test>
<kw name="Teardown_Everything" type="TEARDOWN">
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:32.092298" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-05T00:36:32.092225" elapsed="0.000166"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Stop_Testtool" owner="NetconfKeywords">
<kw name="Write_Bare_Ctrl_C" owner="RemoteBash">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.093720" level="INFO">${ctrl_c} = </msg>
<var>${ctrl_c}</var>
<arg>chr(int(3))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:32.093398" elapsed="0.000354"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>${ctrl_c}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:32.093900" elapsed="0.000265"/>
</kw>
<doc>Construct ctrl+c character and SSH-write it (without endline) to the current SSH connection.
Do not read anything yet.</doc>
<status status="PASS" start="2026-04-05T00:36:32.093196" elapsed="0.001036"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-05T00:36:32.429129" level="INFO">[?2004l^C[?2004h[jenkins@releng-10549-81-1-docker-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-05T00:36:32.094780" elapsed="0.334556"/>
</kw>
<kw name="Get File" owner="SSHLibrary">
<msg time="2026-04-05T00:36:32.484879" level="INFO">'testtool--netconf-userfeatures-txt-CRUD-CRUD.1775349379.227.log' -&gt; '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/testtool--netconf-userfeatures-txt-CRUD-CRUD.1775349379.227.log'</msg>
<arg>${testtool_log}</arg>
<doc>Downloads file(s) from the remote machine to the local machine.</doc>
<status status="PASS" start="2026-04-05T00:36:32.429752" elapsed="0.055273"/>
</kw>
<doc>Stop testtool and download its log.</doc>
<status status="PASS" start="2026-04-05T00:36:32.092946" elapsed="0.392233"/>
</kw>
<arg>NetconfKeywords.Stop_Testtool</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:32.092564" elapsed="0.392735"/>
</kw>
<doc>Teardown the test infrastructure, perform cleanup and release all resources.</doc>
<status status="PASS" start="2026-04-05T00:36:32.092014" elapsed="0.393458"/>
</kw>
<doc>netconf-connector CRUD test suite.

Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html


Perform basic operations (Create, Read, Update and Delete or CRUD) on device
data mounted onto a netconf connector and see if they work.

FIXME: Replace the BuiltIn.Should_[Not_]Contain instances in the test cases
that check the car list related data with calls to keywords of a Resource
aimed at getting interesting pieces of data from the XML files and checking
them against expected data sets. See MDSAL/northbound.robot suite for
additional information.</doc>
<status status="PASS" start="2026-04-05T00:36:16.382287" elapsed="16.103268"/>
</suite>
<status status="PASS" start="2026-04-05T00:35:42.839526" elapsed="49.648291"/>
</suite>
<suite id="s1-s5" name="CRUD-ACTION" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION">
<suite id="s1-s5-s1" name="CRUD-ACTION" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/CRUD-ACTION.robot">
<kw name="Setup_Everything" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.580344" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:32.576070" elapsed="0.004324"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-05T00:36:32.575841" elapsed="0.004635"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.585353" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-05T00:36:32.581588" elapsed="0.003793"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-05T00:36:32.585611" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:32.585485" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:32.585458" elapsed="0.000224"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.586184" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:32.585833" elapsed="0.000394"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.586710" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-05T00:36:32.586385" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-05T00:36:32.587250" elapsed="0.000301"/>
</kw>
<msg time="2026-04-05T00:36:32.587685" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:32.587734" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:32.586898" elapsed="0.000859"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.588322" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:32.587924" elapsed="0.000424"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.589338" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:32.589059" elapsed="0.000306"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.589778" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:32.589524" elapsed="0.000280"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.590301" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:32.590005" elapsed="0.000323"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:32.593541" elapsed="0.000217"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.594252" level="INFO">${member_ip} = 10.30.170.184</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:32.593916" elapsed="0.000362"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:32.594442" elapsed="0.000246"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.595495" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:32.595178" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:36:32.595585" elapsed="0.000042"/>
</return>
<msg time="2026-04-05T00:36:32.595757" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:36:32.594886" elapsed="0.000896"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:32.596538" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4cd1a6250&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:36:32.595933" elapsed="0.000746"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:32.596843" elapsed="0.000192"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-05T00:36:32.592961" elapsed="0.004197"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:32.592771" elapsed="0.004433"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-05T00:36:32.590468" elapsed="0.006773"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.597828" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:32.597404" elapsed="0.000472"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.598447" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.184'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:32.598035" elapsed="0.000456"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.599032" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:32.598649" elapsed="0.000426"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-05T00:36:32.588615" elapsed="0.010517"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-05T00:36:32.581226" elapsed="0.017963"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:32.599368" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:32.599254" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:32.599235" elapsed="0.000217"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.602599" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:32.602153" elapsed="0.000473"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.603070" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:32.602779" elapsed="0.000316"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:32.603140" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:32.603298" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:32.601833" elapsed="0.001489"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:32.604321" level="INFO">${member_ip} = 10.30.170.184</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:32.604054" elapsed="0.000293"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:32.605051" level="INFO">index=13
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:32.605191" level="INFO">${current_connection} = index=13
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:32.604924" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:32.609063" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:32.608285" elapsed="0.000896"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:32.608236" elapsed="0.001027"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:32.609965" level="INFO">index=13
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:32.610279" level="INFO">${current_ssh_connection} = index=13
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:32.609584" elapsed="0.000815"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.611407" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.184" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:32.610720" elapsed="0.000966"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:32.612862" level="INFO">${conn_id} = 15</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:32.611986" elapsed="0.000995"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.614530" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:36:32.614611" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:36:32.614206" elapsed="0.000429"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:32.614840" elapsed="0.001896"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:36:32.617659" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:36:32.965870" 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 Apr  5 00:36:16 UTC 2026

  System load:  0.59               Processes:             128
  Usage of /:   11.1% of 77.35GB   Users logged in:       1
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:36:18 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:36:32.617320" elapsed="0.348706"/>
</kw>
<msg time="2026-04-05T00:36:32.966115" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:32.616957" elapsed="0.349245"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:36:32.613375" elapsed="0.353110"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:32.967383" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-05T00:36:32.980334" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-05T00:36:32.981048" level="INFO">${stdout} = </msg>
<msg time="2026-04-05T00:36:32.981403" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:32.966870" elapsed="0.014870"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:36:32.982387" elapsed="0.001252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:32.986398" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:32.985050" elapsed="0.001899"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-05T00:36:32.987988" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:32.987301" elapsed="0.000862"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:32.987187" elapsed="0.001145"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-05T00:36:32.989310" elapsed="0.000180"/>
</return>
<status status="PASS" start="2026-04-05T00:36:32.988693" elapsed="0.000964"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:32.988598" elapsed="0.001605"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-05T00:36:32.990325" elapsed="0.000018"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:32.994617" elapsed="0.000152"/>
</kw>
<msg time="2026-04-05T00:36:32.994813" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:32.993901" elapsed="0.001013"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:32.995174" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:32.995572" elapsed="0.000039"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:32.991012" elapsed="0.004722"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-05T00:36:32.607075" elapsed="0.388938"/>
</kw>
<msg time="2026-04-05T00:36:32.996132" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:32.606365" elapsed="0.389820"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:36:32.605890" elapsed="0.390377"/>
</kw>
<msg time="2026-04-05T00:36:32.996308" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:32.605369" elapsed="0.390984"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:32.999813" elapsed="0.000167"/>
</kw>
<msg time="2026-04-05T00:36:33.000022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:32.999231" elapsed="0.000852"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:33.000236" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:33.000394" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:32.996656" elapsed="0.003838"/>
</kw>
<msg time="2026-04-05T00:36:33.000584" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-05T00:36:32.604575" elapsed="0.396033"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:33.001035" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:33.000785" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:36:33.001118" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-05T00:36:32.603704" elapsed="0.397537"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:32.603526" elapsed="0.397751"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:32.603372" elapsed="0.397943"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-05T00:36:32.599726" elapsed="0.401646"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-05T00:36:33.001559" elapsed="0.000216"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:33.022348" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:33.022128" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:33.022071" elapsed="0.000390"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:33.022866" level="INFO">index=13
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:33.022996" level="INFO">${current_ssh_connection_object} = index=13
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:33.022690" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:33.023542" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:33.023182" elapsed="0.000406"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:33.024309" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:33.024052" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:33.025200" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-05T00:36:33.024957" elapsed="0.000356">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-05T00:36:33.025469" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-05T00:36:33.025518" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:33.024537" elapsed="0.001005"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:33.025850" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:33.025621" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:33.025602" elapsed="0.000347"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:33.026745" level="INFO">${ip_address} = 10.30.170.184</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:33.026473" elapsed="0.000299"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-05T00:36:33.026820" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:36:33.026986" level="INFO">${odl_ip} = 10.30.170.184</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-05T00:36:33.026175" elapsed="0.000836"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:33.027163" elapsed="0.000454"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:33.027890" level="INFO">index=16
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:33.027990" level="INFO">${karaf_connection_object} = index=16
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:33.027781" elapsed="0.000235"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:33.028160" elapsed="0.002517"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-05T00:36:33.031105" level="INFO">Logging into '10.30.170.184:8101' as 'karaf'.</msg>
<msg time="2026-04-05T00:36:33.184274" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-05T00:36:33.030841" elapsed="0.153528"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:33.188256" elapsed="0.000243"/>
</kw>
<msg time="2026-04-05T00:36:33.188668" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:33.187628" elapsed="0.001114"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:33.188898" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:33.189056" elapsed="0.000019"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:33.185347" elapsed="0.003790"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:33.184726" elapsed="0.004458"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-05T00:36:33.021215" elapsed="0.168021"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:33.002511" elapsed="0.186773"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:33.002128" elapsed="0.187268"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:33.001988" elapsed="0.187467"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-05T00:36:33.001836" elapsed="0.187658"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-05T00:36:32.580778" elapsed="0.608779"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:33.192198" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:33.192080" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:33.192056" elapsed="0.000228"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:33.197530" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:33.197405" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:33.197387" elapsed="0.000212"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:33.198547" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:33.198145" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:33.199025" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:33.198730" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:33.199094" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:33.199250" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:33.197822" elapsed="0.001453"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:33.204669" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:33.204563" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:33.204544" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:33.206043" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:33.205863" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:33.205845" elapsed="0.000339"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:33.206765" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:33.206325" elapsed="0.000481"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:33.207276" level="INFO">${current_connection_index} = 13</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:33.207038" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:33.243138" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "n "e "t "[78Cc "[A[78Co</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:33.208964" elapsed="0.034312"/>
</kw>
<msg time="2026-04-05T00:36:33.243468" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:33.243542" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:33.207556" elapsed="0.036036"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:33.309391" level="INFO">"n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "n "e "t "c "o "n "f "/ "C "R "U "D "- "A "C "T "I "O "N "/ "C "[78CR "[A[78CU
 "D "- "A "C "T "I "O "N ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:33.245238" elapsed="0.064331"/>
</kw>
<msg time="2026-04-05T00:36:33.309721" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:33.309793" level="INFO">${message_wait} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:33.243868" elapsed="0.065975"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:33.310334" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:33.310008" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:33.309986" elapsed="0.000547"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:33.311269" level="INFO"> "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "n "e "t "c "o "n "f "/ "C "R "U "D "- "A "C "T "I "O "N "/ "C "[78CR "[A[78CU
 "D "- "A "C "T "I "O "N ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:33.310719" elapsed="0.000672"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:33.311848" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:33.311535" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:33.311515" elapsed="0.000537"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:33.312087" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:33.314486" elapsed="0.000151"/>
</kw>
<msg time="2026-04-05T00:36:33.314682" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:33.313951" elapsed="0.000795"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:33.314962" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:33.315163" elapsed="0.000022"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:33.313269" elapsed="0.002062"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:33.312353" elapsed="0.003132"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:33.205516" elapsed="0.110075"/>
</kw>
<msg time="2026-04-05T00:36:33.315682" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:33.315726" level="INFO">${message} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:33.204884" elapsed="0.110879"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:33.316137" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:33.315840" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:33.315821" elapsed="0.000404"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:33.316837" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:33.317228" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:33.317301" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:33.204248" elapsed="0.113162"/>
</kw>
<msg time="2026-04-05T00:36:33.317520" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:33.317564" level="INFO">${output} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:33.199668" elapsed="0.117932"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:33.317923" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:33.317676" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:33.317658" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:33.199527" elapsed="0.118496"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:33.199333" elapsed="0.118719"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:33.197108" elapsed="0.120996"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-05T00:36:33.190148" elapsed="0.128010"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:33.189709" elapsed="0.128490"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-05T00:36:32.575476" elapsed="0.742776"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:33.318717" level="INFO">Creating Session using : alias=operational, url=http://10.30.170.184:8181/rests/data, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4cce74f50&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>operational</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}${REST_API}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:36:33.318400" elapsed="0.000532"/>
</kw>
<kw name="Setup_NetconfKeywords" owner="NetconfKeywords">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:33.319836" level="INFO">${tmp} = {}</msg>
<var>${tmp}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:33.319552" elapsed="0.000324"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:33.323821" level="INFO">${NetconfKeywords__mounted_device_types} = {}</msg>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${tmp}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:33.320038" elapsed="0.003860"/>
</kw>
<if>
<branch type="IF" condition="${create_session_for_templated_requests}">
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:33.328225" level="INFO">Creating Session using : alias=default, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4ccafd310&gt;, timeout=2, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:36:33.327837" elapsed="0.000509"/>
</kw>
<arg>timeout=2</arg>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-05T00:36:33.327356" elapsed="0.001060"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:33.323973" elapsed="0.004493"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:33.323954" elapsed="0.004538"/>
</if>
<kw name="Initialize_Artifact_Deployment_And_Usage" owner="NexusKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:33.333596" level="INFO">${odl_connection} = 17</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:33.333181" elapsed="0.000442"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:36:33.335269" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:36:33.335348" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:36:33.334984" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:33.335543" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:36:33.336758" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:36:33.670845" 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 Apr  5 00:36:16 UTC 2026

  System load:  0.59               Processes:             128
  Usage of /:   11.1% of 77.35GB   Users logged in:       1
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:36:32 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:36:33.336437" elapsed="0.334521"/>
</kw>
<msg time="2026-04-05T00:36:33.671030" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:33.336061" elapsed="0.335043"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:36:33.334556" elapsed="0.336652"/>
</kw>
<msg time="2026-04-05T00:36:33.671258" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:33.334137" elapsed="0.337168"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:36:33.333808" elapsed="0.337573"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-05T00:36:33.671445" elapsed="0.000044"/>
</return>
<msg time="2026-04-05T00:36:33.671648" level="INFO">${odl} = 17</msg>
<var>${odl}</var>
<doc>Open a connection to the ODL system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:36:33.332888" elapsed="0.338786"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-05T00:36:33.682200" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-05T00:36:33.690237" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../../tools/deployment/search.sh' -&gt; '/home/jenkins//search.sh'</msg>
<arg>/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../../tools/deployment/search.sh</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-05T00:36:33.671866" elapsed="0.018500"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:36:33.690752" elapsed="0.000543"/>
</kw>
<if>
<branch type="IF" condition="not (${tools_system_connect})">
<return>
<status status="NOT RUN" start="2026-04-05T00:36:33.691691" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:33.691492" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:33.691455" elapsed="0.000332"/>
</if>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:33.699144" level="INFO">${tools_connection} = 18</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:33.698592" elapsed="0.000693"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:36:33.701743" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:36:33.701852" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:36:33.701336" elapsed="0.000549"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:33.702131" elapsed="0.000488"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:36:33.703726" level="INFO">Logging into '10.30.170.167:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:36:34.002328" 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 Apr  5 00:35:44 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:36:18 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-1-docker-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:36:33.703364" elapsed="0.299085"/>
</kw>
<msg time="2026-04-05T00:36:34.002520" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:33.702850" elapsed="0.299738"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:36:33.700734" elapsed="0.301953"/>
</kw>
<msg time="2026-04-05T00:36:34.002738" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:33.700118" elapsed="0.302666"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-05T00:36:33.699640" elapsed="0.303221"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-05T00:36:34.002904" elapsed="0.000038"/>
</return>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:36:33.697901" elapsed="0.305157"/>
</kw>
<doc>Places search utility to ODL system, which will be needed for version detection.
By default also initialize a SSH connection to Tools system,
as following Keywords assume a working connection towards target system.</doc>
<status status="PASS" start="2026-04-05T00:36:33.328749" elapsed="0.674364"/>
</kw>
<doc>Setup the environment for the other keywords of this Resource to work properly.</doc>
<status status="PASS" start="2026-04-05T00:36:33.319190" elapsed="0.683976"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.003842" level="INFO">${DEVICE_TYPE_RPC} = rpc-device</msg>
<var>${DEVICE_TYPE_RPC}</var>
<arg>"""${USE_NETCONF_CONNECTOR}""" == """True"""</arg>
<arg>default</arg>
<arg>${DEVICE_TYPE_RPC}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:34.003361" elapsed="0.000508"/>
</kw>
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:34.004534" level="INFO" html="true">File '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/customaction/customaction.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/customaction/customaction.xml&lt;/a&gt;' exists.</msg>
<arg>${RPC_FILE}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="PASS" start="2026-04-05T00:36:34.004029" elapsed="0.000559"/>
</kw>
<kw name="Install_And_Start_Testtool" owner="NetconfKeywords">
<kw name="Deploy_Test_Tool" owner="NexusKeywords">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.025104" level="INFO">${name_prefix} = netconf-testtool-</msg>
<var>${name_prefix}</var>
<arg>${artifact}-</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:34.024773" elapsed="0.000359"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.025653" level="INFO">${extension} = jar</msg>
<var>${extension}</var>
<arg>'${component}'=='odl-micro'</arg>
<arg>tar</arg>
<arg>jar</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:34.025294" elapsed="0.000386"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.026263" level="INFO">${name_suffix} = -executable.jar</msg>
<var>${name_suffix}</var>
<arg>"${suffix}" != ""</arg>
<arg>-${suffix}.${extension}</arg>
<arg>.${extension}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:34.025844" elapsed="0.000445"/>
</kw>
<kw name="Deploy_Artifact" owner="NexusKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_url}""" != ""</arg>
<arg>Deploy_From_Url</arg>
<arg>${explicit_url}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.027536" elapsed="0.000308"/>
</kw>
<kw name="Fetch From Left" owner="String">
<msg time="2026-04-05T00:36:34.028212" level="INFO">${urlbase} = https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot</msg>
<var>${urlbase}</var>
<arg>${BUNDLE_URL}</arg>
<arg>/org/opendaylight</arg>
<doc>Returns contents of the ``string`` before the first occurrence of ``marker``.</doc>
<status status="PASS" start="2026-04-05T00:36:34.028004" elapsed="0.000234"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.028802" level="INFO">${urlbase} = https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot</msg>
<var>${urlbase}</var>
<arg>'${urlbase}' != '${BUNDLE_URL}'</arg>
<arg>${urlbase}</arg>
<arg>${fallback_url}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:34.028395" elapsed="0.000434"/>
</kw>
<kw name="Run_Keyword_If_At_Most_Magnesium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_At_Most" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &lt;= ${Stream_dict}[${upper_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.046941" elapsed="0.000403"/>
</kw>
<arg>magnesium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${upper_bound} to titanium and in case titanium is at most ${upper_bound},
run Collections.Remove_Values_From_List [['mdsal', 'odlparent', 'yangtools', 'carpeople', 'netconf', 'bgpcep'], 'carpeople'] {} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:36:34.046535" elapsed="0.000878"/>
</kw>
<msg time="2026-04-05T00:36:34.047476" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_At_Most</arg>
<arg>magnesium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.038139" elapsed="0.009387"/>
</kw>
<arg>Collections.Remove_Values_From_List</arg>
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>carpeople</arg>
<doc>Compare magnesium to titanium and in case titanium is at most magnesium,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:36:34.037792" elapsed="0.009811"/>
</kw>
<kw name="Run_Keyword_If_At_Most_Aluminium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_At_Most" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &lt;= ${Stream_dict}[${upper_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.065973" elapsed="0.000404"/>
</kw>
<arg>aluminium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${upper_bound} to titanium and in case titanium is at most ${upper_bound},
run Collections.Remove_Values_From_List [['mdsal', 'odlparent', 'yangtools', 'carpeople', 'netconf', 'bgpcep'], 'netconf'] {} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:36:34.065564" elapsed="0.000900"/>
</kw>
<msg time="2026-04-05T00:36:34.066511" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_At_Most</arg>
<arg>aluminium</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.056715" elapsed="0.009845"/>
</kw>
<arg>Collections.Remove_Values_From_List</arg>
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>netconf</arg>
<doc>Compare aluminium to titanium and in case titanium is at most aluminium,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:36:34.056355" elapsed="0.010279"/>
</kw>
<kw name="Run_Keyword_If_At_Most_Silicon" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_At_Most" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &lt;= ${Stream_dict}[${upper_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.084558" elapsed="0.000398"/>
</kw>
<arg>silicon</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${upper_bound} to titanium and in case titanium is at most ${upper_bound},
run Collections.Remove_Values_From_List [['mdsal', 'odlparent', 'yangtools', 'carpeople', 'netconf', 'bgpcep'], 'bgpcep'] {} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:36:34.084112" elapsed="0.000912"/>
</kw>
<msg time="2026-04-05T00:36:34.085069" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_At_Most</arg>
<arg>silicon</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.075756" elapsed="0.009361"/>
</kw>
<arg>Collections.Remove_Values_From_List</arg>
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>bgpcep</arg>
<doc>Compare silicon to titanium and in case titanium is at most silicon,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-04-05T00:36:34.075409" elapsed="0.009780"/>
</kw>
<if>
<branch type="IF" condition="'${build_version}'=='${EMPTY}'">
<kw name="NexusKeywords__Detect_Version_To_Pull" owner="NexusKeywords">
<kw name="NexusKeywords__Get_Items_To_Look_At" owner="NexusKeywords">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${COMPONENT_MAPPING}</arg>
<arg>${component}</arg>
<arg>Component not supported by NexusKeywords version detection: ${component}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:34.088028" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${COMPONENT_MAPPING}</arg>
<arg>${component}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:34.088802" elapsed="0.000177"/>
</kw>
<msg time="2026-04-05T00:36:34.089024" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Collections.Get_From_Dictionary</arg>
<arg>${COMPONENT_MAPPING}</arg>
<arg>${component}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.088460" elapsed="0.000613"/>
</kw>
<msg time="2026-04-05T00:36:34.089172" level="INFO">${itemlist} = netconf-api</msg>
<var>${itemlist}</var>
<arg>${component}</arg>
<doc>Get a list of items that might contain the version number that we are looking for.</doc>
<status status="PASS" start="2026-04-05T00:36:34.087769" elapsed="0.001427"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:34.089501" level="INFO">index=18
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:34.089604" level="INFO">${current_ssh_connection} = index=18
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:34.089355" elapsed="0.000275"/>
</kw>
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:34.094336" level="INFO">${odl_connection} = 19</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:34.093959" elapsed="0.000404"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.096201" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:36:34.096279" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:36:34.095700" elapsed="0.000663"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.096550" elapsed="0.000585"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:36:34.098679" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:36:34.421046" 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 Apr  5 00:36:16 UTC 2026

  System load:  0.59               Processes:             128
  Usage of /:   11.1% of 77.35GB   Users logged in:       1
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:36:33 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:36:34.097904" elapsed="0.323306"/>
</kw>
<msg time="2026-04-05T00:36:34.421416" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.097302" elapsed="0.324232"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:36:34.095258" elapsed="0.326393"/>
</kw>
<msg time="2026-04-05T00:36:34.421704" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.094878" elapsed="0.326876"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:36:34.094554" elapsed="0.327279"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-05T00:36:34.421882" elapsed="0.000046"/>
</return>
<doc>Open a connection to the ODL system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:36:34.093667" elapsed="0.328386"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:34.422558" level="INFO">Executing command 'sh search.sh /tmp/karaf-0.22.2-SNAPSHOT/system netconf-api'.</msg>
<msg time="2026-04-05T00:36:34.465954" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:34.466667" level="INFO">${version} = 9.0.2
org/opendaylight/netconf</msg>
<msg time="2026-04-05T00:36:34.466858" level="INFO">${result} = 0</msg>
<var>${version}</var>
<var>${result}</var>
<arg>sh search.sh ${WORKSPACE}/${BUNDLEFOLDER}/system ${itemlist}</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:34.422262" elapsed="0.044659"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:36:34.467646" elapsed="0.001155"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:34.476080" elapsed="0.000180"/>
</kw>
<msg time="2026-04-05T00:36:34.476312" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.474914" elapsed="0.001489"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:34.476622" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:34.476805" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:34.469797" elapsed="0.007102"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.477344" level="INFO">9.0.2
org/opendaylight/netconf</msg>
<arg>${version}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:34.477064" elapsed="0.000326"/>
</kw>
<if>
<branch type="IF" condition="${result}!=0">
<kw name="Fail" owner="BuiltIn">
<arg>Component "${component}": searching for "${itemlist}" found no version, cannot locate test tool.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:34.477833" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:34.477544" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:34.477486" elapsed="0.000470"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-05T00:36:34.478469" level="INFO">${version} = 9.0.2</msg>
<msg time="2026-04-05T00:36:34.478522" level="INFO">${location} = org/opendaylight/netconf</msg>
<var>${version}</var>
<var>${location}</var>
<arg>${version}</arg>
<arg>max_split=1</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-05T00:36:34.478123" elapsed="0.000423"/>
</kw>
<return>
<value>${version}</value>
<value>${location}</value>
<status status="PASS" start="2026-04-05T00:36:34.478609" elapsed="0.000056"/>
</return>
<msg time="2026-04-05T00:36:34.478845" level="INFO">${version} = 9.0.2</msg>
<msg time="2026-04-05T00:36:34.478889" level="INFO">${location} = org/opendaylight/netconf</msg>
<var>${version}</var>
<var>${location}</var>
<arg>${component}</arg>
<doc>Determine the exact Nexus directory to be used as a source for a particular test tool
Figure out what version of the tool needs to be pulled out of the
Nexus by looking at the version directory of the subsystem from
which the tool is being pulled. This code is REALLY UGLY but there
is no way around it until the bug
https://bugs.opendaylight.org/show_bug.cgi?id=5206 gets fixed.
I also don't want to depend on maven-metadata-local.xml and other
bits and pieces of ODL distribution which are not required for ODL
to function properly.</doc>
<status status="PASS" start="2026-04-05T00:36:34.087391" elapsed="0.391521"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:34.085269" elapsed="0.393817"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${version}</var>
<var>${location}</var>
<arg>${build_version}</arg>
<arg>${build_location}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:34.479335" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:34.479132" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:34.085246" elapsed="0.394210"/>
</if>
<if>
<branch type="IF" condition="'SNAPSHOT' in '${version}'">
<kw name="Remove Values From List" owner="Collections">
<arg>${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>netconf</arg>
<arg>bgpcep</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:34.479773" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:34.479522" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:34.479505" elapsed="0.000355"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.480467" level="INFO">${is_staged} = "FALSE"</msg>
<var>${is_staged}</var>
<arg>"opendaylight.release" not in '${urlbase}' and "opendaylight.snapshot" not in '${urlbase}'</arg>
<arg>"TRUE"</arg>
<arg>"FALSE"</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:34.480014" elapsed="0.000489"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.481277" level="INFO">${is_mri_component} = "TRUE"</msg>
<var>${is_mri_component}</var>
<arg>'${component}' in ${RELEASE_INTEGRATED_COMPONENTS}</arg>
<arg>"TRUE"</arg>
<arg>"FALSE"</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:34.480730" elapsed="0.000580"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.482059" level="INFO">${urlbase} = https://nexus.opendaylight.org/content/repositories/opendaylight.release</msg>
<var>${urlbase}</var>
<arg>${is_mri_component} == "TRUE" and ${is_staged} == "FALSE"</arg>
<arg>${NEXUS_RELEASE_BASE_URL}</arg>
<arg>${urlbase}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:34.481558" elapsed="0.000529"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.482677" level="INFO">${url} = https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/netconf/netconf-testtool/9.0.2</msg>
<var>${url}</var>
<arg>${urlbase}/${location}/${artifact}/${version}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:34.482248" elapsed="0.000459"/>
</kw>
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:34.484892" level="INFO">Executing command 'curl -L https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml'.</msg>
<msg time="2026-04-05T00:36:34.569045" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:34.569383" level="INFO">${stdout} = &lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.rel...</msg>
<msg time="2026-04-05T00:36:34.569552" level="INFO">${stderr} =   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0   ...</msg>
<msg time="2026-04-05T00:36:34.569652" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:34.484683" elapsed="0.085021"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.573029" level="INFO">Length is 316.</msg>
<msg time="2026-04-05T00:36:34.573277" level="FAIL">'  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100  1080    0  1080    0     0  16720      0 --:--:-- --:--:-- --:--:-- 16875' should be empty.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-05T00:36:34.572132" elapsed="0.001374">'  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100  1080    0  1080    0     0  16720      0 --:--:-- --:--:-- --:--:-- 16875' should be empty.</status>
</kw>
<msg time="2026-04-05T00:36:34.573757" level="INFO">${emptiness_status} = FAIL</msg>
<msg time="2026-04-05T00:36:34.573983" level="INFO">${result} = '  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0  ...</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:34.570159" elapsed="0.003889"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.575560" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:34.574598" elapsed="0.001001"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.577283" level="INFO">&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/title&gt;
    &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&gt;

    &lt;link rel="icon" type="image/png" href="https://nexus.opendaylight.org/favicon.png"&gt;
    &lt;!--[if IE]&gt;
    &lt;link rel="SHORTCUT ICON" href="https://nexus.opendaylight.org/favicon.ico"/&gt;
    &lt;![endif]--&gt;

    &lt;link rel="stylesheet" href="https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02" type="text/css" media="screen" title="no title" charset="utf-8"&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/h1&gt;
    &lt;p&gt;Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/p&gt;
  &lt;/body&gt;
&lt;/html&gt;</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:34.576905" elapsed="0.000484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.577975" level="INFO">  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100  1080    0  1080    0     0  16720      0 --:--:-- --:--:-- --:--:-- 16875</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:34.577628" elapsed="0.000512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.578848" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:34.578377" elapsed="0.000539"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-05T00:36:34.576364" elapsed="0.002632"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:34.575728" elapsed="0.003319"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:34.575692" elapsed="0.003395"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-05T00:36:34.579314" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:34.579168" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:34.579144" elapsed="0.000270"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-05T00:36:34.579638" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-05T00:36:34.579511" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:34.579489" elapsed="0.000271"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:34.580022" elapsed="0.000078"/>
</kw>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-05T00:36:34.484057" elapsed="0.096190"/>
</kw>
<msg time="2026-04-05T00:36:34.580336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.483391" elapsed="0.097015"/>
</kw>
<msg time="2026-04-05T00:36:34.580646" level="INFO">${metadata} = &lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.rel...</msg>
<var>${metadata}</var>
<arg>curl -L ${url}/maven-metadata.xml</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="PASS" start="2026-04-05T00:36:34.482989" elapsed="0.097697"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:34.584298" level="INFO">Executing command 'echo "&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/title&gt;
    &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&gt;

    &lt;link rel="icon" type="image/png" href="https://nexus.opendaylight.org/favicon.png"&gt;
    &lt;!--[if IE]&gt;
    &lt;link rel="SHORTCUT ICON" href="https://nexus.opendaylight.org/favicon.ico"/&gt;
    &lt;![endif]--&gt;

    &lt;link rel="stylesheet" href="https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02" type="text/css" media="screen" title="no title" charset="utf-8"&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/h1&gt;
    &lt;p&gt;Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/p&gt;
  &lt;/body&gt;
&lt;/html&gt;" | grep value | head -n 1 | cut -d '&gt;' -f 2 | cut -d '&lt;' -f 1'.</msg>
<msg time="2026-04-05T00:36:34.622144" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:34.622572" level="INFO">${stdout} = &lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.rel...</msg>
<msg time="2026-04-05T00:36:34.622689" level="INFO">${stderr} = bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text...</msg>
<msg time="2026-04-05T00:36:34.622786" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:34.584031" elapsed="0.038808"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.625641" level="INFO">Length is 253.</msg>
<msg time="2026-04-05T00:36:34.626037" level="FAIL">'bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory' should be empty.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-05T00:36:34.624358" elapsed="0.001926">'bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory' should be empty.</status>
</kw>
<msg time="2026-04-05T00:36:34.626638" level="INFO">${emptiness_status} = FAIL</msg>
<msg time="2026-04-05T00:36:34.626745" level="INFO">${result} = 'bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=tex...</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:34.623285" elapsed="0.003517"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.628462" level="INFO">${success} = False</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:34.627315" elapsed="0.001432"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.631358" level="INFO">&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;404 - Path /org/opendaylight/netconf/netconf-testtool/9.0.2/maven-metadata.xml not found in local storage of repository &amp;quot;opendaylight.release&amp;quot; [id=opendaylight.release]&lt;/title&gt;
    &lt;meta http-equiv=Content-Type content=text/html</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:34.630692" elapsed="0.000720"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.632049" level="INFO">bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:34.631597" elapsed="0.000500"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.632737" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:34.632248" elapsed="0.000535"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-05T00:36:34.629981" elapsed="0.002859"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:34.628957" elapsed="0.003920"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:34.628894" elapsed="0.004012"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-05T00:36:34.633071" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:34.632965" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:34.632948" elapsed="0.000192"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-05T00:36:34.633279" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:34.633192" elapsed="0.000129"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:34.633176" elapsed="0.000167"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.633899" level="FAIL">Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</msg>
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-05T00:36:34.633511" elapsed="0.000459">Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</status>
</kw>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="FAIL" start="2026-04-05T00:36:34.583130" elapsed="0.051012">Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</status>
</kw>
<msg time="2026-04-05T00:36:34.634209" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-05T00:36:34.582180" elapsed="0.052083"/>
</kw>
<arg>echo "${metadata}" | grep value | head -n 1 | cut -d '&gt;' -f 2 | cut -d '&lt;' -f 1</arg>
<arg>stderr_must_be_empty=${True}</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="FAIL" start="2026-04-05T00:36:34.581597" elapsed="0.053062">Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonatype-content.css?2.14.20-02 type=text/css media=screen title=no: No such file or directory</status>
</kw>
<msg time="2026-04-05T00:36:34.634777" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-05T00:36:34.634822" level="INFO">${namepart} = Got rc: 0 or stderr was not empty: bash: line 8: ICON href=https://nexus.opendaylight.org/favicon.ico/&gt;
    &lt;![endif]--&gt;

    &lt;link rel=stylesheet href=https://nexus.opendaylight.org/static/css/Sonaty...</msg>
<var>${status}</var>
<var>${namepart}</var>
<arg>SSHKeywords.Execute_Command_Should_Pass</arg>
<arg>echo "${metadata}" | grep value | head -n 1 | cut -d '&gt;' -f 2 | cut -d '&lt;' -f 1</arg>
<arg>stderr_must_be_empty=${True}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:34.580911" elapsed="0.053937"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.635295" level="INFO">Length is 288.</msg>
<msg time="2026-04-05T00:36:34.635372" level="INFO">${length} = 288</msg>
<var>${length}</var>
<arg>${namepart}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:36:34.635014" elapsed="0.000382"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.635976" level="INFO">${namepart} = 9.0.2</msg>
<var>${namepart}</var>
<arg>"${status}" != "PASS" or ${length} == 0</arg>
<arg>${version}</arg>
<arg>${namepart}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:34.635577" elapsed="0.000425"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.636536" level="INFO">${filename} = netconf-testtool-9.0.2-executable.jar</msg>
<var>${filename}</var>
<arg>${name_prefix}${namepart}${name_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:34.636159" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.636989" level="INFO">netconf-testtool-9.0.2-executable.jar</msg>
<arg>${filename}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:34.636742" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.637508" level="INFO">${url} = https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/netconf/netconf-testtool/9.0.2/netconf-testtool-9.0.2-executable.jar</msg>
<var>${url}</var>
<arg>${url}/${filename}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:34.637180" elapsed="0.000394"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:34.637925" level="INFO">Executing command 'wget -q -N 'https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/netconf/netconf-testtool/9.0.2/netconf-testtool-9.0.2-executable.jar' 2&gt;&amp;1'.</msg>
<msg time="2026-04-05T00:36:34.698575" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:34.698889" level="INFO">${response} = </msg>
<msg time="2026-04-05T00:36:34.698990" level="INFO">${result} = 0</msg>
<var>${response}</var>
<var>${result}</var>
<arg>wget -q -N '${url}' 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:34.637740" elapsed="0.061310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.700188" level="INFO"/>
<arg>${response}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:34.699544" elapsed="0.000739"/>
</kw>
<if>
<branch type="IF" condition="${result} == 0">
<return>
<value>${filename}</value>
<status status="PASS" start="2026-04-05T00:36:34.700764" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-05T00:36:34.700486" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:34.700403" elapsed="0.000576"/>
</if>
<kw name="Replace String Using Regexp" owner="String">
<var>${release_url}</var>
<arg>${url}</arg>
<arg>autorelease-[0-9]{4}</arg>
<arg>opendaylight.release</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:34.701314" elapsed="0.000049"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${response}</var>
<var>${result}</var>
<arg>wget -q -N '${release_url}' 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:34.701777" elapsed="0.000050"/>
</kw>
<if>
<branch type="IF" condition="${result} != 0">
<kw name="Fail" owner="BuiltIn">
<arg>Artifact "${artifact}" in component "${component}" could not be downloaded from ${release_url} nor ${url}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:34.702297" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:34.701992" elapsed="0.000419"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:34.701952" elapsed="0.000544"/>
</if>
<return>
<value>${filename}</value>
<status status="NOT RUN" start="2026-04-05T00:36:34.702569" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:34.702897" level="INFO">${filename} = netconf-testtool-9.0.2-executable.jar</msg>
<var>${filename}</var>
<arg>${component}</arg>
<arg>${artifact}</arg>
<arg>${name_prefix}</arg>
<arg>${name_suffix}</arg>
<arg>${fallback_url}</arg>
<arg>${explicit_url}</arg>
<arg>${build_version}</arg>
<arg>${build_location}</arg>
<doc>Deploy the specified artifact from Nexus to the cwd of the machine to which the active SSHLibrary connection points.
netconf is a name part of an artifact present in system/ of ODl installation with the same version as netconf-testtool should have.
Must have https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/karaf/0.22.2-SNAPSHOT/karaf-0.22.2-20260401.071003-721.zip variable set to the URL from which the
tested ODL distribution was downloaded and this place must be
inside a repository created by a standard distribution
construction job. If this is detected to ne be the case, fallback URL is used.
If  is non-empty, Deploy_From_Utrl is called instead.
TODO: Allow deploying to a specific directory, we have SSHKeywords.Execute_Command_At_Cwd_Should_Pass now.</doc>
<status status="PASS" start="2026-04-05T00:36:34.026918" elapsed="0.676036"/>
</kw>
<return>
<value>${filename}</value>
<status status="PASS" start="2026-04-05T00:36:34.703112" elapsed="0.000061"/>
</return>
<msg time="2026-04-05T00:36:34.703484" level="INFO">${filename} = netconf-testtool-9.0.2-executable.jar</msg>
<var>${filename}</var>
<arg>netconf</arg>
<arg>netconf-testtool</arg>
<doc>Deploy a test tool.
The test tools have naming convention of the form
"&lt;repository_url&gt;/some/dir/somewhere/&lt;tool-name&gt;/&lt;tool-name&gt;-&lt;version-tag&gt;-${suffix}.jar"
where "&lt;tool-name&gt;" is the name of the tool and "&lt;version-tag&gt;" is
the version tag that is digged out of the maven metadata. This
keyword calculates ${name_prefix} and ${name_suffix} for
"Deploy_Artifact" and then calls "Deploy_Artifact" to do the real
work of deploying the artifact.</doc>
<status status="PASS" start="2026-04-05T00:36:34.018896" elapsed="0.684648"/>
</kw>
<kw name="Start_Testtool" owner="NetconfKeywords">
<kw name="NetconfKeywords__Deploy_Additional_Schemas" owner="NetconfKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:34.706712" level="INFO">Executing command 'rm -rf schemas 2&gt;&amp;1'.</msg>
<msg time="2026-04-05T00:36:34.750369" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:34.750634" level="INFO">${response} = </msg>
<var>${response}</var>
<arg>rm -rf schemas 2&gt;&amp;1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:34.706567" elapsed="0.044123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.751909" level="INFO"/>
<arg>${response}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:34.751064" elapsed="0.000954"/>
</kw>
<if>
<branch type="IF" condition="'${schemas}' == 'none'">
<return>
<value>${EMPTY}</value>
<status status="NOT RUN" start="2026-04-05T00:36:34.752506" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:34.752203" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:34.752151" elapsed="0.000510"/>
</if>
<kw name="Put Directory" owner="SSHLibrary">
<msg time="2026-04-05T00:36:34.799835" level="INFO">[chan 5] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-05T00:36:34.906982" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas/yang-ext@2013-07-09.yang' -&gt; '/home/jenkins/./schemas/yang-ext@2013-07-09.yang'</msg>
<msg time="2026-04-05T00:36:34.907101" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas/example-action@2016-07-07.yang' -&gt; '/home/jenkins/./schemas/example-action@2016-07-07.yang'</msg>
<msg time="2026-04-05T00:36:34.907144" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas/car@2014-08-18.yang' -&gt; '/home/jenkins/./schemas/car@2014-08-18.yang'</msg>
<msg time="2026-04-05T00:36:34.907182" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas/car-purchase@2014-08-18.yang' -&gt; '/home/jenkins/./schemas/car-purchase@2014-08-18.yang'</msg>
<msg time="2026-04-05T00:36:34.907218" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas/ncmount-l2fib@2016-03-07.yang' -&gt; '/home/jenkins/./schemas/ncmount-l2fib@2016-03-07.yang'</msg>
<msg time="2026-04-05T00:36:34.907255" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas/augment-main-a@2014-01-21.yang' -&gt; '/home/jenkins/./schemas/augment-main-a@2014-01-21.yang'</msg>
<msg time="2026-04-05T00:36:34.907402" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas/ietf-netconf-monitoring@2010-10-04.yang' -&gt; '/home/jenkins/./schemas/ietf-netconf-monitoring@2010-10-04.yang'</msg>
<msg time="2026-04-05T00:36:34.907477" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas/ietf-netconf-monitoring-extension@2013-12-10.yang' -&gt; '/home/jenkins/./schemas/ietf-netconf-monitoring-extension@2013-12-10.yang'</msg>
<msg time="2026-04-05T00:36:34.907516" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas/people@2014-08-18.yang' -&gt; '/home/jenkins/./schemas/people@2014-08-18.yang'</msg>
<msg time="2026-04-05T00:36:34.907554" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas/test@2014-10-18.yang' -&gt; '/home/jenkins/./schemas/test@2014-10-18.yang'</msg>
<msg time="2026-04-05T00:36:34.907590" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas/car-people@2014-08-18.yang' -&gt; '/home/jenkins/./schemas/car-people@2014-08-18.yang'</msg>
<msg time="2026-04-05T00:36:34.907626" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas/ietf-inet-types@2010-09-24.yang' -&gt; '/home/jenkins/./schemas/ietf-inet-types@2010-09-24.yang'</msg>
<msg time="2026-04-05T00:36:34.907661" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas/main@2014-01-21.yang' -&gt; '/home/jenkins/./schemas/main@2014-01-21.yang'</msg>
<arg>${schemas}</arg>
<arg>destination=./schemas</arg>
<doc>Uploads a directory, including its content, from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-05T00:36:34.752982" elapsed="0.154784"/>
</kw>
<kw name="List Directory" owner="SSHLibrary">
<msg time="2026-04-05T00:36:34.912206" level="INFO">13 items:
augment-main-a@2014-01-21.yang
car-people@2014-08-18.yang
car-purchase@2014-08-18.yang
car@2014-08-18.yang
example-action@2016-07-07.yang
ietf-inet-types@2010-09-24.yang
ietf-netconf-monitoring-extension@2013-12-10.yang
ietf-netconf-monitoring@2010-10-04.yang
main@2014-01-21.yang
ncmount-l2fib@2016-03-07.yang
people@2014-08-18.yang
test@2014-10-18.yang
yang-ext@2013-07-09.yang</msg>
<arg>./schemas</arg>
<doc>Returns and logs items in the remote ``path``, optionally filtered with ``pattern``.</doc>
<status status="PASS" start="2026-04-05T00:36:34.908124" elapsed="0.004167"/>
</kw>
<return>
<value>--schemas-dir ./schemas</value>
<status status="PASS" start="2026-04-05T00:36:34.912362" elapsed="0.000100"/>
</return>
<msg time="2026-04-05T00:36:34.912659" level="INFO">${schemas_option} = --schemas-dir ./schemas</msg>
<var>${schemas_option}</var>
<arg>${schemas}</arg>
<doc>Internal keyword for Install_And_Start_TestTool
This deploys the additional schemas if any and returns a
command line argument to be added to the testtool commandline
to tell it to load them. While this code could be integrated
into its only user, I considered the resulting code to be too
unreadable as the actions are quite different in the two
possibilities (additional schemas present versus no additional
schemas present), therefore a separate keyword is used.</doc>
<status status="PASS" start="2026-04-05T00:36:34.706152" elapsed="0.206545"/>
</kw>
<kw name="NetconfKeywords__Deploy_Custom_RPC" owner="NetconfKeywords">
<if>
<branch type="IF" condition="'${rpc_config}' == 'none'">
<return>
<value>${EMPTY}</value>
<status status="NOT RUN" start="2026-04-05T00:36:34.913668" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:34.913485" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:34.913454" elapsed="0.000312"/>
</if>
<kw name="Copy_File_To_Tools_System" owner="SSHKeywords">
<kw name="Copy_File_To_Remote_System" owner="SSHKeywords">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:34.916458" level="INFO">index=18
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:34.916603" level="INFO">${current_connection} = index=18
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:34.916259" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Unsafe_Copy_File_To_Remote_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:34.933154" elapsed="0.000474"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:36:34.934792" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:36:34.934910" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:36:34.934217" elapsed="0.000719"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.935124" elapsed="0.000741"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:36:34.938041" level="INFO">Logging into '10.30.170.167:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:36:35.240263" 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 Apr  5 00:35:44 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:36:33 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-1-docker-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:36:34.937461" elapsed="0.303048"/>
</kw>
<msg time="2026-04-05T00:36:35.240644" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.936093" elapsed="0.304735"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:36:34.933827" elapsed="0.307268"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-05T00:36:35.249513" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-05T00:36:35.257781" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/customaction/customaction.xml' -&gt; '/tmp/customaction.xml'</msg>
<arg>${source}</arg>
<arg>${destination}</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-05T00:36:35.241346" elapsed="0.016520"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:36:35.258094" elapsed="0.000401"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Copy the ${source} file to the ${destination} file on the remote ${system}. The keyword opens and closes a single
ssh connection and does not rely on any existing ssh connection that may be open.</doc>
<status status="PASS" start="2026-04-05T00:36:34.932672" elapsed="0.325907"/>
</kw>
<msg time="2026-04-05T00:36:35.258639" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:34.916858" elapsed="0.341856"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:35.263830" elapsed="0.000243"/>
</kw>
<msg time="2026-04-05T00:36:35.264133" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:35.262769" elapsed="0.001450"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:35.264458" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:35.264952" elapsed="0.000037"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:35.259181" elapsed="0.005900"/>
</kw>
<arg>SSHKeywords.Unsafe_Copy_File_To_Remote_System</arg>
<arg>${system}</arg>
<arg>${source}</arg>
<arg>${destination}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>${prompt}</arg>
<arg>${prompt_timeout}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-05T00:36:34.915579" elapsed="0.349584"/>
</kw>
<arg>${system}</arg>
<arg>${source}</arg>
<arg>${destination}</arg>
<arg>${TOOLS_SYSTEM_USER}</arg>
<arg>${TOOLS_SYSTEM_PASSWORD}</arg>
<arg>${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Copy the /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/customaction/customaction.xml file to the /tmp file on the remote 10.30.170.167. Any pre-existing active
ssh connection will be retained.</doc>
<status status="PASS" start="2026-04-05T00:36:34.914734" elapsed="0.350533"/>
</kw>
<arg>${TOOLS_SYSTEM_1_IP}</arg>
<arg>${rpc_config}</arg>
<arg>/tmp</arg>
<doc>Wrapper keyword to make it easier to copy a file to an Tools specific system</doc>
<status status="PASS" start="2026-04-05T00:36:34.914024" elapsed="0.351337"/>
</kw>
<return>
<value>--rpc-config /tmp/customaction.xml</value>
<status status="PASS" start="2026-04-05T00:36:35.265467" elapsed="0.000056"/>
</return>
<msg time="2026-04-05T00:36:35.265721" level="INFO">${rpc_config_option} = --rpc-config /tmp/customaction.xml</msg>
<var>${rpc_config_option}</var>
<arg>${rpc_config}</arg>
<doc>Internal keyword for Install_And_Start_TestTool
This deploys the optional custom rpc file.
Drop out of the keyword, returning no command line argument when there
is no rpc file to deploy.</doc>
<status status="PASS" start="2026-04-05T00:36:34.913141" elapsed="0.352622"/>
</kw>
<kw name="Compose_Full_Java_Command" owner="NexusKeywords">
<kw name="Compose_Base_Java_Command" owner="NexusKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${openjdk}""" == "openjdk8"</arg>
<arg>Compose_Dilemma_Filepath</arg>
<arg>${JAVA_8_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_8_HOME_UBUNTU}/bin/java</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:35.267639" elapsed="0.002617"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${openjdk}""" == "openjdk11"</arg>
<arg>Compose_Dilemma_Filepath</arg>
<arg>${JAVA_11_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_11_HOME_UBUNTU}/bin/java</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:35.270436" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${openjdk}""" == "openjdk17"</arg>
<arg>Compose_Dilemma_Filepath</arg>
<arg>${JAVA_17_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_17_HOME_UBUNTU}/bin/java</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:35.270910" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Compose_Dilemma_Filepath" owner="NexusKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:35.272396" level="INFO">Executing command 'ls -lA /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2&gt;&amp;1'.</msg>
<msg time="2026-04-05T00:36:35.285352" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:35.285544" level="INFO">${out} = -rwxr-xr-x 1 root root 14456 Jan 22 23:45 /usr/lib/jvm/java-21-openjdk-amd64/bin/java</msg>
<msg time="2026-04-05T00:36:35.285605" level="INFO">${rc} = 0</msg>
<var>${out}</var>
<var>${rc}</var>
<arg>ls -lA ${specific_path} 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:35.272211" elapsed="0.013426"/>
</kw>
<if>
<branch type="IF" condition="${rc} == 0">
<return>
<value>${specific_path}</value>
<status status="PASS" start="2026-04-05T00:36:35.285920" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-05T00:36:35.285761" elapsed="0.000243"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:35.285727" elapsed="0.000312"/>
</if>
<return>
<value>${default_path}</value>
<status status="NOT RUN" start="2026-04-05T00:36:35.286088" elapsed="0.000020"/>
</return>
<arg>${JAVA_21_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_21_HOME_UBUNTU}/bin/java</arg>
<doc>Query active SSH connection, return specific path if it exists else default path.</doc>
<status status="PASS" start="2026-04-05T00:36:35.271875" elapsed="0.014364"/>
</kw>
<msg time="2026-04-05T00:36:35.286298" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>"""${openjdk}""" == "openjdk21"</arg>
<arg>Compose_Dilemma_Filepath</arg>
<arg>${JAVA_21_HOME_CENTOS}/bin/java</arg>
<arg>${JAVA_21_HOME_UBUNTU}/bin/java</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:35.271367" elapsed="0.014994"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${out}</var>
<var>${rc}</var>
<arg>java -version 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:35.286662" elapsed="0.000031"/>
</kw>
<if>
<branch type="IF" condition="${rc} == 0">
<return>
<value>java</value>
<status status="NOT RUN" start="2026-04-05T00:36:35.286841" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:35.286792" elapsed="0.000104"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:35.286769" elapsed="0.000156"/>
</if>
<kw name="Execute Command" owner="SSHLibrary">
<var>${java}</var>
<arg>echo $JAVA_HOME/bin/java 2&gt;&amp;1</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:35.287116" elapsed="0.000028"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${out}</var>
<var>${rc}</var>
<arg>${java} -version 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:35.287345" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="${rc} == 0">
<return>
<value>${java}</value>
<status status="NOT RUN" start="2026-04-05T00:36:35.287569" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:35.287521" elapsed="0.000105"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:35.287498" elapsed="0.000158"/>
</if>
<kw name="Get Environment Variable" owner="OperatingSystem">
<var>${JAVA_HOME}</var>
<arg>JAVA_HOME</arg>
<arg>${EMPTY}</arg>
<doc>Returns the value of an environment variable with the given name.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:35.287852" elapsed="0.000029"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${java}</var>
<arg>"""${JAVA_HOME}"""!=""</arg>
<arg>${JAVA_HOME}/bin/java</arg>
<arg>false</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:35.288092" elapsed="0.000028"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${out}</var>
<var>${rc}</var>
<arg>${java} -version 2&gt;&amp;1</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:35.288341" elapsed="0.000034"/>
</kw>
<if>
<branch type="IF" condition="${rc} == 0">
<return>
<value>${java}</value>
<status status="NOT RUN" start="2026-04-05T00:36:35.288576" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:35.288519" elapsed="0.000113"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:35.288490" elapsed="0.000171"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unable to find Java; specify \${JDKVERSION}, put it to your PATH or set JAVA_HOME environment variable.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:35.288842" elapsed="0.000028"/>
</kw>
<msg time="2026-04-05T00:36:35.289009" level="INFO">${base_command} = /usr/lib/jvm/java-21-openjdk-amd64/bin/java</msg>
<var>${base_command}</var>
<arg>openjdk=${openjdk}</arg>
<doc>Return string suitable for launching Java programs over SSHLibrary, depending on JRE version needed.
This requires that the SSH connection on which the command is going to be used is active as it is needed for querying files.
Commands composed for one SSH connection shall not be reused on other SSH connections as the two connections may have different Java setups.
Not directly related to Nexus, but versioned Java tools may need this.</doc>
<status status="PASS" start="2026-04-05T00:36:35.267149" elapsed="0.021894"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:35.289729" level="INFO">${full_command} = /usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas --rpc-confi...</msg>
<var>${full_command}</var>
<arg>${base_command} ${options}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:35.289247" elapsed="0.000520"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:35.290309" level="INFO">/usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas --rpc-config /tmp/customaction.xml --md-sal true</msg>
<arg>${full_command}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:35.289972" elapsed="0.000399"/>
</kw>
<return>
<value>${full_command}</value>
<status status="PASS" start="2026-04-05T00:36:35.290448" elapsed="0.000041"/>
</return>
<msg time="2026-04-05T00:36:35.290658" level="INFO">${command} = /usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas --rpc-confi...</msg>
<var>${command}</var>
<arg>${java_options} -jar ${filename} ${tool_options} --device-count ${device-count} --debug ${debug} ${schemas_option} ${rpc_config_option} --md-sal ${mdsal}</arg>
<doc>Return full Bash command to run Java with given options.
This requires that the SSH connection on which the command is going to be used is active as it is needed for querying files.
The options may include JVM options, application command line arguments, Bash redirects and other constructs.</doc>
<status status="PASS" start="2026-04-05T00:36:35.266104" elapsed="0.024590"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:35.291248" level="INFO">Running testtool: /usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas --rpc-config /tmp/customaction.xml --md-sal true</msg>
<arg>Running testtool: ${command}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:35.290903" elapsed="0.000410"/>
</kw>
<kw name="Get Log File Name" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:35.295051" level="INFO">${name} = netconf-userfeatures-txt-CRUD-ACTION-CRUD-ACTION</msg>
<var>${name}</var>
<arg>"""${SUITE_NAME}""".replace(" ","-").replace("/","-").replace(".","-")</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:35.294550" elapsed="0.000538"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:35.298701" level="INFO">${suffix} = </msg>
<var>${suffix}</var>
<arg>'${testcase}' != ''</arg>
<arg>--${testcase}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:35.295309" elapsed="0.003430"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-05T00:36:35.299199" level="INFO">${date} = 2026-04-05 00:36:35.299</msg>
<var>${date}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-05T00:36:35.298964" elapsed="0.000271"/>
</kw>
<kw name="Convert Date" owner="DateTime">
<msg time="2026-04-05T00:36:35.299942" level="INFO">${timestamp} = 1775349395.299</msg>
<var>${timestamp}</var>
<arg>${date}</arg>
<arg>epoch</arg>
<doc>Converts between supported `date formats`.</doc>
<status status="PASS" start="2026-04-05T00:36:35.299526" elapsed="0.000453"/>
</kw>
<return>
<value>${testtool}--${name}${suffix}.${timestamp}.log</value>
<status status="PASS" start="2026-04-05T00:36:35.300045" elapsed="0.000040"/>
</return>
<msg time="2026-04-05T00:36:35.300441" level="INFO">${logfile} = testtool--netconf-userfeatures-txt-CRUD-ACTION-CRUD-ACTION.1775349395.299.log</msg>
<var>${logfile}</var>
<arg>testtool</arg>
<doc>Get the name of the suite sanitized to be usable as a part of filename.
These names are used to constructs names of the log files produced
by the testing tools so two suites using a tool wont overwrite the
log files if they happen to run in one job.</doc>
<status status="PASS" start="2026-04-05T00:36:35.291696" elapsed="0.008791"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:35.306481" level="INFO">${testtool_log} = testtool--netconf-userfeatures-txt-CRUD-ACTION-CRUD-ACTION.1775349395.299.log</msg>
<arg>${testtool_log}</arg>
<arg>${logfile}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:35.300730" elapsed="0.005825"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:35.330177" level="INFO">/usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xmx1G -Djava.security.egd=file:/dev/./urandom -jar netconf-testtool-9.0.2-executable.jar  --device-count 1 --debug true --schemas-dir ./schemas --rpc-config /tmp/customaction.xml --md-sal true &gt;testtool--netconf-userfeatures-txt-CRUD-ACTION-CRUD-ACTION.1775349395.299.log 2&gt;&amp;1</msg>
<arg>${command} &gt;${logfile} 2&gt;&amp;1</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:35.306734" elapsed="0.023506"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:35.334256" level="INFO">${NetconfKeywords__testtool_device_count} = 1</msg>
<arg>${NetconfKeywords__testtool_device_count}</arg>
<arg>${device-count}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:35.330406" elapsed="0.003896"/>
</kw>
<kw name="Perform_Operation_On_Each_Device" owner="NetconfKeywords">
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-05T00:36:35.335086" level="INFO">${current_Date} = 2026-04-05 00:36:35.335</msg>
<var>${current_Date}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-05T00:36:35.334930" elapsed="0.000182"/>
</kw>
<kw name="Add Time To Date" owner="DateTime">
<msg time="2026-04-05T00:36:35.335615" level="INFO">${deadline_Date} = 2026-04-05 01:21:35.335</msg>
<var>${deadline_Date}</var>
<arg>${current_Date}</arg>
<arg>${timeout}</arg>
<doc>Adds time to date and returns the resulting date.</doc>
<status status="PASS" start="2026-04-05T00:36:35.335269" elapsed="0.000373"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:35.340336" level="INFO">${current_port} = 17830</msg>
<arg>${current_port}</arg>
<arg>${BASE_NETCONF_DEVICE_PORT}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:35.335802" elapsed="0.004581"/>
</kw>
<kw name="Repeat Keyword" owner="BuiltIn">
<msg time="2026-04-05T00:36:35.340874" level="INFO">Repeating keyword, round 1/1.</msg>
<kw name="NetconfKeywords__Perform_Operation_With_Checking_On_Next_Device" owner="NetconfKeywords">
<kw name="NetconfKeywords__Check_Netconf_Test_Timeout_Not_Expired" owner="NetconfKeywords">
<if>
<branch type="IF" condition="not ${ENABLE_NETCONF_TEST_TIMEOUT}">
<return>
<status status="NOT RUN" start="2026-04-05T00:36:35.341898" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:35.341787" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:35.341768" elapsed="0.000195"/>
</if>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-05T00:36:35.342255" level="INFO">${current_Date} = 2026-04-05 00:36:35.342</msg>
<var>${current_Date}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-05T00:36:35.342104" elapsed="0.000176"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<msg time="2026-04-05T00:36:35.342752" level="INFO">${ellapsed_seconds} = 2699.993</msg>
<var>${ellapsed_seconds}</var>
<arg>${deadline_Date}</arg>
<arg>${current_Date}</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="PASS" start="2026-04-05T00:36:35.342442" elapsed="0.000336"/>
</kw>
<if>
<branch type="IF" condition="${ellapsed_seconds}&lt;0">
<kw name="Fail" owner="BuiltIn">
<arg>The global time out period expired</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:35.343094" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:35.342847" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:35.342829" elapsed="0.000359"/>
</if>
<arg>${deadline_Date}</arg>
<status status="PASS" start="2026-04-05T00:36:35.341596" elapsed="0.001640"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:35.343766" level="INFO">${number} = 1</msg>
<var>${number}</var>
<arg>${current_port}-${BASE_NETCONF_DEVICE_PORT}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:35.343381" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="NetconfKeywords__Wait_Device_Is_Up_And_Running" owner="NetconfKeywords">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:35.345144" level="INFO">${number} = 1</msg>
<var>${number}</var>
<arg>'${device_name}'.split('-').pop()</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:35.344807" elapsed="0.000363"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Up_And_Running" owner="NetconfKeywords">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:35.346833" level="INFO">${device-port} = 17830</msg>
<var>${device-port}</var>
<arg>${FIRST_TESTTOOL_PORT}+${device-number}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:35.346192" elapsed="0.000742"/>
</kw>
<kw name="NetconfKeywords__Check_Device_Is_Up" owner="NetconfKeywords">
<kw name="Count_Port_Occurences" owner="SSHKeywords">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Check_And_Install_Netstat" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:35.349951" level="INFO">Executing command 'netstat --version'.</msg>
<msg time="2026-04-05T00:36:35.362541" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:35.362754" level="INFO">${netstat_installed} = net-tools 2.10-alpha
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others
+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX
AF: (inet) +UNIX +INET...</msg>
<var>${netstat_installed}</var>
<arg>netstat --version</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:35.349857" elapsed="0.012955"/>
</kw>
<if>
<branch type="IF" condition="'${netstat_installed}' is not string and '${netstat_installed}' != '0'">
<kw name="Install_Netstat" owner="SSHKeywords">
<doc>Install netstat if it is not already installed.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:35.363730" elapsed="0.000056"/>
</kw>
<msg time="2026-04-05T00:36:35.363864" level="FAIL">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</msg>
<status status="FAIL" start="2026-04-05T00:36:35.362970" elapsed="0.001101">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</branch>
<status status="FAIL" start="2026-04-05T00:36:35.362926" elapsed="0.001246">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</if>
<doc>Check if netstat is installed and install it if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:35.349643" elapsed="0.014843">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</kw>
<arg>Check_And_Install_Netstat</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:35.349223" elapsed="0.015410"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:35.365868" level="INFO">Executing command 'netstat -punta 2&gt; /dev/null | grep -E ":17830 .+ LISTEN .+java" | wc -l'.</msg>
<msg time="2026-04-05T00:36:35.419703" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:35.419910" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${NETSTAT_COMMAND} 2&gt; /dev/null | grep -E ":${port} .+ ${state} .+${name}" | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:35.365019" elapsed="0.054945"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:36:35.420114" elapsed="0.000074"/>
</return>
<msg time="2026-04-05T00:36:35.420857" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${last-port}</arg>
<arg>LISTEN</arg>
<arg>java</arg>
<doc>Run 'netstat' on the remote machine and count occurences of given port in the given state connected to process with the given name.</doc>
<status status="PASS" start="2026-04-05T00:36:35.348696" elapsed="0.072261"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-05T00:36:35.424550" level="FAIL">0 != 1</msg>
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="FAIL" start="2026-04-05T00:36:35.423108" elapsed="0.001730">0 != 1</status>
</kw>
<arg>${device-port}</arg>
<status status="FAIL" start="2026-04-05T00:36:35.347275" elapsed="0.077848">0 != 1</status>
</kw>
<arg>${number}</arg>
<doc>Query netstat on remote machine whether testtool device with the specified number has its port open and fail if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:35.345851" elapsed="0.079750">0 != 1</status>
</kw>
<kw name="Check_Device_Up_And_Running" owner="NetconfKeywords">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:36.429306" level="INFO">${device-port} = 17830</msg>
<var>${device-port}</var>
<arg>${FIRST_TESTTOOL_PORT}+${device-number}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:36.427734" elapsed="0.001828"/>
</kw>
<kw name="NetconfKeywords__Check_Device_Is_Up" owner="NetconfKeywords">
<kw name="Count_Port_Occurences" owner="SSHKeywords">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Check_And_Install_Netstat" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:36.436408" level="INFO">Executing command 'netstat --version'.</msg>
<msg time="2026-04-05T00:36:36.450078" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:36.450297" level="INFO">${netstat_installed} = net-tools 2.10-alpha
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others
+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX
AF: (inet) +UNIX +INET...</msg>
<var>${netstat_installed}</var>
<arg>netstat --version</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:36.436171" elapsed="0.014184"/>
</kw>
<if>
<branch type="IF" condition="'${netstat_installed}' is not string and '${netstat_installed}' != '0'">
<kw name="Install_Netstat" owner="SSHKeywords">
<doc>Install netstat if it is not already installed.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:36.451317" elapsed="0.000058"/>
</kw>
<msg time="2026-04-05T00:36:36.451659" level="FAIL">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</msg>
<status status="FAIL" start="2026-04-05T00:36:36.450578" elapsed="0.001282">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</branch>
<status status="FAIL" start="2026-04-05T00:36:36.450522" elapsed="0.001442">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</if>
<doc>Check if netstat is installed and install it if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:36.435652" elapsed="0.016601">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</kw>
<arg>Check_And_Install_Netstat</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:36.434693" elapsed="0.017706"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:36.453309" level="INFO">Executing command 'netstat -punta 2&gt; /dev/null | grep -E ":17830 .+ LISTEN .+java" | wc -l'.</msg>
<msg time="2026-04-05T00:36:36.497982" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:36.498189" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${NETSTAT_COMMAND} 2&gt; /dev/null | grep -E ":${port} .+ ${state} .+${name}" | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:36.452819" elapsed="0.045425"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:36:36.498400" elapsed="0.000120"/>
</return>
<msg time="2026-04-05T00:36:36.499253" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${last-port}</arg>
<arg>LISTEN</arg>
<arg>java</arg>
<doc>Run 'netstat' on the remote machine and count occurences of given port in the given state connected to process with the given name.</doc>
<status status="PASS" start="2026-04-05T00:36:36.433412" elapsed="0.065942"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-05T00:36:36.502939" level="FAIL">0 != 1</msg>
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="FAIL" start="2026-04-05T00:36:36.501535" elapsed="0.001684">0 != 1</status>
</kw>
<arg>${device-port}</arg>
<status status="FAIL" start="2026-04-05T00:36:36.430290" elapsed="0.073252">0 != 1</status>
</kw>
<arg>${number}</arg>
<doc>Query netstat on remote machine whether testtool device with the specified number has its port open and fail if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:36.426565" elapsed="0.077528">0 != 1</status>
</kw>
<kw name="Check_Device_Up_And_Running" owner="NetconfKeywords">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:37.507792" level="INFO">${device-port} = 17830</msg>
<var>${device-port}</var>
<arg>${FIRST_TESTTOOL_PORT}+${device-number}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:37.506116" elapsed="0.002189"/>
</kw>
<kw name="NetconfKeywords__Check_Device_Is_Up" owner="NetconfKeywords">
<kw name="Count_Port_Occurences" owner="SSHKeywords">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Check_And_Install_Netstat" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:37.514536" level="INFO">Executing command 'netstat --version'.</msg>
<msg time="2026-04-05T00:36:37.527887" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:37.528036" level="INFO">${netstat_installed} = net-tools 2.10-alpha
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others
+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX
AF: (inet) +UNIX +INET...</msg>
<var>${netstat_installed}</var>
<arg>netstat --version</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:37.514335" elapsed="0.013739"/>
</kw>
<if>
<branch type="IF" condition="'${netstat_installed}' is not string and '${netstat_installed}' != '0'">
<kw name="Install_Netstat" owner="SSHKeywords">
<doc>Install netstat if it is not already installed.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:37.528863" elapsed="0.000056"/>
</kw>
<msg time="2026-04-05T00:36:37.528998" level="FAIL">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</msg>
<status status="FAIL" start="2026-04-05T00:36:37.528188" elapsed="0.001022">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</branch>
<status status="FAIL" start="2026-04-05T00:36:37.528154" elapsed="0.001158">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</if>
<doc>Check if netstat is installed and install it if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:37.514023" elapsed="0.015610">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</kw>
<arg>Check_And_Install_Netstat</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:37.512983" elapsed="0.016800"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:37.530732" level="INFO">Executing command 'netstat -punta 2&gt; /dev/null | grep -E ":17830 .+ LISTEN .+java" | wc -l'.</msg>
<msg time="2026-04-05T00:36:37.578553" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:37.578803" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${NETSTAT_COMMAND} 2&gt; /dev/null | grep -E ":${port} .+ ${state} .+${name}" | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:37.530180" elapsed="0.048680"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:36:37.579020" elapsed="0.000079"/>
</return>
<msg time="2026-04-05T00:36:37.579930" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${last-port}</arg>
<arg>LISTEN</arg>
<arg>java</arg>
<doc>Run 'netstat' on the remote machine and count occurences of given port in the given state connected to process with the given name.</doc>
<status status="PASS" start="2026-04-05T00:36:37.512174" elapsed="0.067864"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-05T00:36:37.583878" level="FAIL">0 != 1</msg>
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="FAIL" start="2026-04-05T00:36:37.582244" elapsed="0.001903">0 != 1</status>
</kw>
<arg>${device-port}</arg>
<status status="FAIL" start="2026-04-05T00:36:37.509225" elapsed="0.075360">0 != 1</status>
</kw>
<arg>${number}</arg>
<doc>Query netstat on remote machine whether testtool device with the specified number has its port open and fail if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:37.504995" elapsed="0.080089">0 != 1</status>
</kw>
<kw name="Check_Device_Up_And_Running" owner="NetconfKeywords">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:38.588623" level="INFO">${device-port} = 17830</msg>
<var>${device-port}</var>
<arg>${FIRST_TESTTOOL_PORT}+${device-number}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:38.587025" elapsed="0.001834"/>
</kw>
<kw name="NetconfKeywords__Check_Device_Is_Up" owner="NetconfKeywords">
<kw name="Count_Port_Occurences" owner="SSHKeywords">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Check_And_Install_Netstat" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:38.594635" level="INFO">Executing command 'netstat --version'.</msg>
<msg time="2026-04-05T00:36:38.617565" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:38.617792" level="INFO">${netstat_installed} = net-tools 2.10-alpha
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others
+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX
AF: (inet) +UNIX +INET...</msg>
<var>${netstat_installed}</var>
<arg>netstat --version</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:38.594521" elapsed="0.023331"/>
</kw>
<if>
<branch type="IF" condition="'${netstat_installed}' is not string and '${netstat_installed}' != '0'">
<kw name="Install_Netstat" owner="SSHKeywords">
<doc>Install netstat if it is not already installed.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:38.618790" elapsed="0.000058"/>
</kw>
<msg time="2026-04-05T00:36:38.618925" level="FAIL">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</msg>
<status status="FAIL" start="2026-04-05T00:36:38.618032" elapsed="0.001101">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</branch>
<status status="FAIL" start="2026-04-05T00:36:38.617980" elapsed="0.001255">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</if>
<doc>Check if netstat is installed and install it if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:38.594278" elapsed="0.025272">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</kw>
<arg>Check_And_Install_Netstat</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:38.593856" elapsed="0.025843"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:38.620673" level="INFO">Executing command 'netstat -punta 2&gt; /dev/null | grep -E ":17830 .+ LISTEN .+java" | wc -l'.</msg>
<msg time="2026-04-05T00:36:38.676250" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:38.676519" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>${NETSTAT_COMMAND} 2&gt; /dev/null | grep -E ":${port} .+ ${state} .+${name}" | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:38.620091" elapsed="0.056488"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:36:38.676777" elapsed="0.000086"/>
</return>
<msg time="2026-04-05T00:36:38.677575" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${last-port}</arg>
<arg>LISTEN</arg>
<arg>java</arg>
<doc>Run 'netstat' on the remote machine and count occurences of given port in the given state connected to process with the given name.</doc>
<status status="PASS" start="2026-04-05T00:36:38.592776" elapsed="0.084904"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-04-05T00:36:38.681353" level="FAIL">0 != 1</msg>
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="FAIL" start="2026-04-05T00:36:38.679858" elapsed="0.001817">0 != 1</status>
</kw>
<arg>${device-port}</arg>
<status status="FAIL" start="2026-04-05T00:36:38.589663" elapsed="0.092300">0 != 1</status>
</kw>
<arg>${number}</arg>
<doc>Query netstat on remote machine whether testtool device with the specified number has its port open and fail if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:38.585977" elapsed="0.096394">0 != 1</status>
</kw>
<kw name="Check_Device_Up_And_Running" owner="NetconfKeywords">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.686829" level="INFO">${device-port} = 17830</msg>
<var>${device-port}</var>
<arg>${FIRST_TESTTOOL_PORT}+${device-number}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:39.685143" elapsed="0.001923"/>
</kw>
<kw name="NetconfKeywords__Check_Device_Is_Up" owner="NetconfKeywords">
<kw name="Count_Port_Occurences" owner="SSHKeywords">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Check_And_Install_Netstat" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:39.692057" level="INFO">Executing command 'netstat --version'.</msg>
<msg time="2026-04-05T00:36:39.705534" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:39.705758" level="INFO">${netstat_installed} = net-tools 2.10-alpha
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others
+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX
AF: (inet) +UNIX +INET...</msg>
<var>${netstat_installed}</var>
<arg>netstat --version</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:39.691941" elapsed="0.013876"/>
</kw>
<if>
<branch type="IF" condition="'${netstat_installed}' is not string and '${netstat_installed}' != '0'">
<kw name="Install_Netstat" owner="SSHKeywords">
<doc>Install netstat if it is not already installed.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:39.706808" elapsed="0.000057"/>
</kw>
<msg time="2026-04-05T00:36:39.706944" level="FAIL">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</msg>
<status status="FAIL" start="2026-04-05T00:36:39.705998" elapsed="0.001162">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</branch>
<status status="FAIL" start="2026-04-05T00:36:39.705945" elapsed="0.001321">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</if>
<doc>Check if netstat is installed and install it if not.</doc>
<status status="FAIL" start="2026-04-05T00:36:39.691719" elapsed="0.015867">Invalid IF condition: Evaluating expression "'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' is not string and 'net-tools 2.10-alpha\nFred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others\n+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N +SELINUX\nAF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE -BLUETOOTH\nHW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64 ' != '0'" failed: SyntaxError: unterminated string literal (detected at line 1) (&lt;string&gt;, line 1)

Variables in the original expression "'${netstat_installed}' is not string and '${netstat_installed}' != '0'" were resolved before the expression was evaluated. Try using "$netstat_installed is not string and $netstat_installed != '0'" syntax to avoid that. See Evaluating Expressions appendix in Robot Framework User Guide for more details.</status>
</kw>
<arg>Check_And_Install_Netstat</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:39.691275" elapsed="0.016459"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:39.708665" level="INFO">Executing command 'netstat -punta 2&gt; /dev/null | grep -E ":17830 .+ LISTEN .+java" | wc -l'.</msg>
<msg time="2026-04-05T00:36:39.754327" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:39.754577" level="INFO">${output} = 1</msg>
<var>${output}</var>
<arg>${NETSTAT_COMMAND} 2&gt; /dev/null | grep -E ":${port} .+ ${state} .+${name}" | wc -l</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:39.708123" elapsed="0.046511"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:36:39.754814" elapsed="0.000087"/>
</return>
<msg time="2026-04-05T00:36:39.755590" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>${last-port}</arg>
<arg>LISTEN</arg>
<arg>java</arg>
<doc>Run 'netstat' on the remote machine and count occurences of given port in the given state connected to process with the given name.</doc>
<status status="PASS" start="2026-04-05T00:36:39.690733" elapsed="0.064968"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-04-05T00:36:39.757920" elapsed="0.001232"/>
</kw>
<arg>${device-port}</arg>
<status status="PASS" start="2026-04-05T00:36:39.687845" elapsed="0.071480"/>
</kw>
<arg>${number}</arg>
<doc>Query netstat on remote machine whether testtool device with the specified number has its port open and fail if not.</doc>
<status status="PASS" start="2026-04-05T00:36:39.683308" elapsed="0.076314"/>
</kw>
<arg>${TESTTOOL_BOOT_TIMEOUT}</arg>
<arg>1s</arg>
<arg>Check_Device_Up_And_Running</arg>
<arg>${number}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:35.345330" elapsed="4.414400"/>
</kw>
<arg>${DEVICE_NAME_BASE}-${number}</arg>
<arg>log_response=${log_response}</arg>
<status status="PASS" start="2026-04-05T00:36:35.344396" elapsed="4.415462"/>
</kw>
<arg>${operation}</arg>
<arg>${DEVICE_NAME_BASE}-${number}</arg>
<arg>log_response=${log_response}</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="PASS" start="2026-04-05T00:36:35.343946" elapsed="4.416011"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.761149" level="INFO">${next} = 17831</msg>
<var>${next}</var>
<arg>${current_port}+1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:39.760304" elapsed="0.000905"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.762554" level="INFO">${current_port} = 17831</msg>
<arg>${current_port}</arg>
<arg>${next}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:39.761605" elapsed="0.001060"/>
</kw>
<arg>${operation}</arg>
<arg>${deadline_Date}</arg>
<arg>log_response=${log_response}</arg>
<status status="PASS" start="2026-04-05T00:36:35.341070" elapsed="4.421728"/>
</kw>
<arg>${count} times</arg>
<arg>NetconfKeywords__Perform_Operation_With_Checking_On_Next_Device</arg>
<arg>${operation}</arg>
<arg>${deadline_Date}</arg>
<arg>log_response=${log_response}</arg>
<doc>Executes the specified keyword multiple times.</doc>
<status status="PASS" start="2026-04-05T00:36:35.340558" elapsed="4.422315"/>
</kw>
<arg>NetconfKeywords__Wait_Device_Is_Up_And_Running</arg>
<arg>log_response=${log_response}</arg>
<status status="PASS" start="2026-04-05T00:36:35.334525" elapsed="4.428435"/>
</kw>
<arg>${filename}</arg>
<arg>${device-count}</arg>
<arg>${debug}</arg>
<arg>${schemas}</arg>
<arg>${rpc_config}</arg>
<arg>${tool_options}</arg>
<arg>${java_options}</arg>
<arg>${mdsal}</arg>
<arg>log_response=${log_response}</arg>
<doc>Arrange to collect tool's output into a log file.
Will use specific /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas unless argument resolves to 'none',
which signifies that there are no additional schemas to be deployed.
If so the directory for the additional schemas is deleted on the
remote machine and the additional schemas argument is left out.</doc>
<status status="PASS" start="2026-04-05T00:36:34.704225" elapsed="5.058807"/>
</kw>
<arg>device-count=1</arg>
<arg>schemas=/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/schemas</arg>
<arg>rpc_config=${RPC_FILE}</arg>
<arg>mdsal=true</arg>
<doc>Install and run testtool.</doc>
<status status="PASS" start="2026-04-05T00:36:34.004824" elapsed="5.824783"/>
</kw>
<doc>Initialize SetupUtils. Setup everything needed for the test cases.</doc>
<status status="PASS" start="2026-04-05T00:36:32.575156" elapsed="7.254607"/>
</kw>
<test id="s1-s5-s1-t1" name="Check_Device_Is_Not_Configured_At_Beginning" line="44">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:39.836405" elapsed="0.000333"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:39.836036" elapsed="0.000780"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:39.838332" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:39.838160" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.838130" elapsed="0.000325"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:39.846338" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:39.846186" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.846159" elapsed="0.000295"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.847471" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:39.847071" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.847953" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:39.847657" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:39.848022" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:36:39.848181" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:39.846700" elapsed="0.001505"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:39.853604" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:39.853491" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.853471" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:39.854910" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:39.854804" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.854786" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:39.855511" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:39.855127" elapsed="0.000410"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:39.855943" level="INFO">${current_connection_index} = 18</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:39.855693" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:39.889938" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:39.856520" elapsed="0.033601"/>
</kw>
<msg time="2026-04-05T00:36:39.890349" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:39.890404" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:39.856121" elapsed="0.034341"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:39.916119" level="INFO">"s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "I "s "_ "N "o "t "_ "C "o "n "f "i "g "u "r "e "d "_ "A "t "_ "B "e "g "i "n "n "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:39.891032" elapsed="0.025263"/>
</kw>
<msg time="2026-04-05T00:36:39.916486" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:39.916533" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:39.890638" elapsed="0.025929"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:39.916938" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:39.916713" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.916692" elapsed="0.000348"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.917579" level="INFO"> "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "I "s "_ "N "o "t "_ "C "o "n "f "i "g "u "r "e "d "_ "A "t "_ "B "e "g "i "n "n "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:39.917182" elapsed="0.000471"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:39.917949" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:39.917736" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.917717" elapsed="0.000331"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:39.918081" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:39.921519" elapsed="0.000169"/>
</kw>
<msg time="2026-04-05T00:36:39.921762" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:39.920536" elapsed="0.001330"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:39.922895" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:39.924013" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:39.918956" elapsed="0.005175"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:39.918358" elapsed="0.005888"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:39.854504" elapsed="0.069841"/>
</kw>
<msg time="2026-04-05T00:36:39.924451" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:39.924496" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:39.853830" elapsed="0.070701"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:39.924716" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:39.924608" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.924589" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:39.925201" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:39.925569" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:39.925641" elapsed="0.000028"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:39.853140" elapsed="0.072622"/>
</kw>
<msg time="2026-04-05T00:36:39.925855" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:39.925898" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:39.848604" elapsed="0.077329"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:39.926254" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:39.926007" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.925990" elapsed="0.000340"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:39.848462" elapsed="0.077891"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:39.848267" elapsed="0.078116"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:39.845631" elapsed="0.080825"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:39.837652" elapsed="0.088862"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:39.837017" elapsed="0.089543"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:39.831739" elapsed="0.094919"/>
</kw>
<kw name="Check_Device_Has_No_Netconf_Connector" owner="NetconfKeywords">
<kw name="Count_Netconf_Connectors_For_Device" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.937869" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:39.935790" elapsed="0.002105"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:39.938219" elapsed="0.000021"/>
</kw>
<var name="${nv}"/>
<status status="NOT RUN" start="2026-04-05T00:36:39.938071" elapsed="0.000204"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="NOT RUN" start="2026-04-05T00:36:39.937951" elapsed="0.000348"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:39.938613" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:39.938361" elapsed="0.000309"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.939386" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:39.938918" elapsed="0.000495"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:39.938694" elapsed="0.000771"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:39.939649" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:39.939490" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.938344" elapsed="0.001380"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:39.939756" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:39.939901" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:39.935313" elapsed="0.004613"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:39.939970" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:39.940109" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:39.934830" elapsed="0.005304"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.947418" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:39.947169" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.947875" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:39.947632" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:39.960189" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:39.960369" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0fyqmiouh9jkowe7q8s5abeyd5.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 04-Apr-2026 00:36:39 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1181'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-05T00:36:39.960524" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:39.950216" elapsed="0.010334"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:39.947984" elapsed="0.012609"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:39.960768" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:39.960620" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.947966" elapsed="0.012886"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.966837" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:39.961953" elapsed="0.005007"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:39.961733" elapsed="0.005305"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.961714" elapsed="0.005379"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.972919" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:39.967739" elapsed="0.005282"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:39.967218" elapsed="0.005880"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.967182" elapsed="0.005969"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.974452" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:39.973531" elapsed="0.000962"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:39.974796" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:39.974564" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.975326" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:39.975030" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:39.974877" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.974546" elapsed="0.000863"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.975939" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:39.975579" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:39.976258" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:39.976035" elapsed="0.000280"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.976802" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:39.976510" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:39.976338" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.976017" elapsed="0.000866"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:39.977026" elapsed="0.000342"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:39.977863" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:39.977552" elapsed="0.000336"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:39.978040" elapsed="0.002423"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:39.961255" elapsed="0.019271"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:39.980701" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:39.980596" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.980578" elapsed="0.000190"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:39.983894" level="INFO">${text_normalized} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:39.980910" elapsed="0.003012"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:39.983973" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:39.984130" level="INFO">${response_text} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:39.942919" elapsed="0.041236"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:39.984244" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:39.984394" level="INFO">${mounts} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${mounts}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:39.940349" elapsed="0.044085"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.984841" level="INFO">{
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topology-parameters": {
       "encryption": {
        "encryption-alg": [
         "AEAD_AES_128_GCM",
         "AEAD_AES_256_GCM",
         "aes128-cbc",
         "aes128-ctr",
         "aes192-cbc",
         "aes192-ctr",
         "aes256-cbc",
         "aes256-ctr",
         "chacha20-poly1305"
        ]
       },
       "host-key": {
        "host-key-alg": [
         "ecdsa-sha2-nistp256",
         "ecdsa-sha2-nistp384",
         "ecdsa-sha2-nistp521",
         "rsa-sha2-256",
         "rsa-sha2-512",
         "ssh-ed25519",
         "ssh-rsa"
        ]
       },
       "key-exchange": {
        "key-exchange-alg": [
         "curve25519-sha256",
         "curve448-sha512",
         "diffie-hellman-group-exchange-sha256",
         "diffie-hellman-group14-sha256",
         "diffie-hellman-group15-sha512",
         "diffie-hellman-group16-sha512",
         "diffie-hellman-group17-sha512",
         "diffie-hellman-group18-sha512",
         "ecdh-sha2-nistp256",
         "ecdh-sha2-nistp384",
         "ecdh-sha2-nistp521",
         "mlkem1024nistp384-sha384",
         "mlkem768nistp256-sha256",
         "mlkem768x25519-sha256",
         "sntrup761x25519-sha512"
        ]
       },
       "mac": {
        "mac-alg": [
         "hmac-sha1",
         "hmac-sha2-256",
         "hmac-sha2-512"
        ]
       }
      }
     }
    }
   },
   {
    "topology-id": "flow:1"
   },
   {
    "topology-id": "hwvtep:1"
   },
   {
    "topology-id": "ovsdb:1"
   }
  ]
 }
}
</msg>
<arg>${mounts}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:39.984593" elapsed="0.000305"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.985450" level="INFO">${actual_count} = 0</msg>
<var>${actual_count}</var>
<arg>len('''${mounts}'''.split('"node-id": "${device_name}"'))-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:39.985048" elapsed="0.000429"/>
</kw>
<return>
<value>${actual_count}</value>
<status status="PASS" start="2026-04-05T00:36:39.985547" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:39.985700" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Count all instances of the specified device in the Netconf topology (usually 0 or 1).</doc>
<status status="PASS" start="2026-04-05T00:36:39.927272" elapsed="0.058452"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.986130" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${count}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:39.985877" elapsed="0.000306"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<doc>Check that there are no instances of the specified device in the Netconf topology.</doc>
<status status="PASS" start="2026-04-05T00:36:39.926872" elapsed="0.059368"/>
</kw>
<doc>Sanity check making sure our device is not there. Fail if found.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:39.829932" elapsed="0.156421"/>
</test>
<test id="s1-s5-s1-t2" name="Configure_Device_On_Netconf" line="49">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:39.989888" elapsed="0.000203"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:39.989631" elapsed="0.000513"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:39.991107" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:39.990999" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.990980" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:39.996061" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:39.995958" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:39.995940" elapsed="0.000187"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.997103" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:39.996728" elapsed="0.000401"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:39.997619" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:39.997283" elapsed="0.000362"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:39.997689" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:39.997841" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:39.996344" elapsed="0.001521"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.003413" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:40.003308" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.003289" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.004699" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:40.004595" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.004577" elapsed="0.000223"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:40.005302" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.004945" elapsed="0.000384"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:40.005761" level="INFO">${current_connection_index} = 18</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:40.005512" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:40.041665" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:40.006324" elapsed="0.035569"/>
</kw>
<msg time="2026-04-05T00:36:40.042119" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:40.042168" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:40.005943" elapsed="0.036265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:40.064709" level="INFO">"s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "O "n "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:40.043034" elapsed="0.021856"/>
</kw>
<msg time="2026-04-05T00:36:40.065060" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:40.065104" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "o "n "f "i "g "u "r "e "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:40.042526" elapsed="0.022614"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.065549" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.065229" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.065203" elapsed="0.000451"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.066181" level="INFO"> "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "O "n "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.065799" elapsed="0.000468"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.066576" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.066339" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.066320" elapsed="0.000358"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:40.066714" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:40.069927" elapsed="0.000151"/>
</kw>
<msg time="2026-04-05T00:36:40.070149" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:40.069160" elapsed="0.001093"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.071187" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.072134" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:40.067637" elapsed="0.004613"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:40.067009" elapsed="0.005355"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:40.004267" elapsed="0.068232"/>
</kw>
<msg time="2026-04-05T00:36:40.072593" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:40.072636" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "o "n "f "i "g "u "r "e "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:40.003645" elapsed="0.069030"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:40.072860" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:40.072753" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.072734" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.073369" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.073770" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.073842" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:40.002970" elapsed="0.070982"/>
</kw>
<msg time="2026-04-05T00:36:40.074047" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:40.074090" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "o "n "f "i "g "u "r "e "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:39.998222" elapsed="0.075905"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.074464" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.074203" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.074185" elapsed="0.000357"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:39.998083" elapsed="0.076482"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:39.997918" elapsed="0.076679"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:39.995606" elapsed="0.079046"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:39.990717" elapsed="0.083989"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:39.990287" elapsed="0.084464"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:39.987439" elapsed="0.087365"/>
</kw>
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:40.094254" elapsed="0.000436"/>
</kw>
<msg time="2026-04-05T00:36:40.094740" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:40.093898" elapsed="0.000892"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:40.093517" elapsed="0.001347"/>
</kw>
<msg time="2026-04-05T00:36:40.094905" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:40.084988" elapsed="0.009961"/>
</kw>
<msg time="2026-04-05T00:36:40.095050" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:40.084667" elapsed="0.010407"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.095965" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.095234" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.127953" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.127580" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:40.128737" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:40.128475" elapsed="0.000339">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:40.128906" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:40.128136" elapsed="0.000794"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.129560" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:40.129126" elapsed="0.000462"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:40.129884" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:40.130043" level="INFO">${template} = $RESTCONF_ROOT/operations/netconf-node-topology:create-device
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:40.129747" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.130478" level="INFO">$RESTCONF_ROOT/operations/netconf-node-topology:create-device
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.130219" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.131637" level="INFO">mapping: {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.131344" elapsed="0.000340"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.132101" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.131840" elapsed="0.000287"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.133015" level="INFO">${value} = 10.30.170.167</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:40.132508" elapsed="0.000533"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:40.134227" level="INFO">${encoded} = 10.30.170.167</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.133733" elapsed="0.000534"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:40.134382" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:40.134628" level="INFO">${encoded_value} = 10.30.170.167</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:40.133266" elapsed="0.001388"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.134804" elapsed="0.000518"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.167</var>
<status status="PASS" start="2026-04-05T00:36:40.132360" elapsed="0.003003"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.136122" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:40.135626" elapsed="0.000522"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:40.137270" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.136780" elapsed="0.000530"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:40.137438" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:40.137661" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:40.136329" elapsed="0.001358"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.137832" elapsed="0.000469"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:40.135496" elapsed="0.002845"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.139103" level="INFO">${value} = 17830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:40.138613" elapsed="0.000516"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:40.140222" level="INFO">${encoded} = 17830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.139755" elapsed="0.000506"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:40.140372" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:40.140608" level="INFO">${encoded_value} = 17830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:40.139309" elapsed="0.001324"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.140780" elapsed="0.000482"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">17830</var>
<status status="PASS" start="2026-04-05T00:36:40.138485" elapsed="0.002819"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.142052" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:40.141560" elapsed="0.000517"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:40.143231" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.142760" elapsed="0.000511"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:40.143417" elapsed="0.000047"/>
</return>
<msg time="2026-04-05T00:36:40.143658" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:40.142256" elapsed="0.001428"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.143830" elapsed="0.000472"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:36:40.141414" elapsed="0.002930"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.145092" level="INFO">${value} = topsecret</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:40.144599" elapsed="0.000519"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:40.146247" level="INFO">${encoded} = topsecret</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.145773" elapsed="0.000515"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:40.146402" elapsed="0.000136"/>
</return>
<msg time="2026-04-05T00:36:40.146734" level="INFO">${encoded_value} = topsecret</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:40.145322" elapsed="0.001437"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.146905" elapsed="0.002129"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">topsecret</var>
<status status="PASS" start="2026-04-05T00:36:40.144469" elapsed="0.004609"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.149860" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:40.149344" elapsed="0.000542"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:40.151058" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.150585" elapsed="0.000514"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:40.151213" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:40.151450" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:40.150069" elapsed="0.001407"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.151624" elapsed="0.000472"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:36:40.149212" elapsed="0.002925"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.152887" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:40.152376" elapsed="0.000538"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:40.154027" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.153554" elapsed="0.000513"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:40.154179" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:40.154401" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:40.153095" elapsed="0.001439"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.154685" elapsed="0.000469"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:36:40.152247" elapsed="0.002948"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.155940" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:40.155449" elapsed="0.000517"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:40.157065" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.156589" elapsed="0.000516"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:40.157254" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:36:40.157501" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:40.156148" elapsed="0.001378"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.157673" elapsed="0.000474"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:40.155305" elapsed="0.002884"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:40.132180" elapsed="0.026043"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:40.158265" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:40.158495" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:40.130879" elapsed="0.027645"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.130591" elapsed="0.027965"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.158770" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.158621" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.130572" elapsed="0.028274"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.159675" level="INFO">${final_text} = /rests/operations/netconf-node-topology:create-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:40.158984" elapsed="0.000719"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:40.159750" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:40.126959" elapsed="0.032920"/>
</kw>
<msg time="2026-04-05T00:36:40.159930" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:40.114185" elapsed="0.045792"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.172767" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.226690" elapsed="0.000058"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.239450" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.239662" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.239844" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.240252" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.240105" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:40.240086" elapsed="0.000250"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.240490" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.240656" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.240819" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:40.240046" elapsed="0.000826"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.239931" elapsed="0.000969"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.241080" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.241160" elapsed="0.000018"/>
</return>
<msg time="2026-04-05T00:36:40.241299" level="INFO">${uri} = /rests/operations/netconf-node-topology:create-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:40.110003" elapsed="0.131323"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.266125" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.265739" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:40.266936" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:40.266654" elapsed="0.000358">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:40.267106" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:40.266311" elapsed="0.000819"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.267690" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:40.267289" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:40.268015" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:40.268188" level="INFO">${template} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
   &lt;host&gt;$DEVICE_IP&lt;/host&gt;
   &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;$DEVICE_USER&lt;/usern...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:40.267875" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.268634" level="INFO">&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
   &lt;host&gt;$DEVICE_IP&lt;/host&gt;
   &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;$DEVICE_USER&lt;/username&gt;
     &lt;password&gt;$DEVICE_PASSWORD&lt;/password&gt;
   &lt;/login-password&gt;
   &lt;tcp-only&gt;false&lt;/tcp-only&gt;
   &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
 &lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.268369" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:40.269058" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.268753" elapsed="0.000367"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.269600" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.269287" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.269145" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.268734" elapsed="0.000950"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.270546" level="INFO">${final_text} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
   &lt;host&gt;10.30.170.167&lt;/host&gt;
   &lt;port&gt;17830&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;admin&lt;/username&gt;...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:40.269826" elapsed="0.000751"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:40.270627" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:40.265118" elapsed="0.005635"/>
</kw>
<msg time="2026-04-05T00:36:40.270808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:40.252411" elapsed="0.018444"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.283619" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.295919" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.308189" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.308379" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.308565" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.308950" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.308800" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:40.308785" elapsed="0.000247"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.309171" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.309331" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.309518" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:40.308742" elapsed="0.000829"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.308641" elapsed="0.000956"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.309739" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.309813" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:40.309934" level="INFO">${data} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
   &lt;host&gt;10.30.170.167&lt;/host&gt;
   &lt;port&gt;17830&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;admin&lt;/username&gt;...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:40.251505" elapsed="0.058458"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:40.311192" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:40.310962" elapsed="0.000293">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-create-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:40.311346" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:40.310624" elapsed="0.000746"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.311695" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.311454" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.312238" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.311941" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.311775" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.311435" elapsed="0.000884"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.314674" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:40.312481" elapsed="0.002219"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:40.314784" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:40.314940" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-create-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:40.310287" elapsed="0.004677"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.316485" level="INFO">/rests/operations/netconf-node-topology:create-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.316221" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.316944" level="INFO">&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
   &lt;host&gt;10.30.170.167&lt;/host&gt;
   &lt;port&gt;17830&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;admin&lt;/username&gt;
     &lt;password&gt;topsecret&lt;/password&gt;
   &lt;/login-password&gt;
   &lt;tcp-only&gt;false&lt;/tcp-only&gt;
   &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
 &lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.316692" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.317383" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.317141" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.317826" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.317589" elapsed="0.000280"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:40.318673" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:40.318474" elapsed="0.000224"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:40.319017" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:40.318847" elapsed="0.000195"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.319186" elapsed="0.000208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.319806" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.319560" elapsed="0.000289"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:40.319890" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:40.320041" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:40.318063" elapsed="0.002003"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.322379" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.320135" elapsed="0.002326"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:40.338482" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/operations/netconf-node-topology:create-device 
 path_url=/rests/operations/netconf-node-topology:create-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0fyqmiouh9jkowe7q8s5abeyd5.node0', 'Content-Length': '337', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
   &lt;host&gt;10.30.170.167&lt;/host&gt;
   &lt;port&gt;17830&lt;/port&gt;
   &lt;login-password&gt;
     &lt;username&gt;admin&lt;/username&gt;
     &lt;password&gt;topsecret&lt;/password&gt;
   &lt;/login-password&gt;
   &lt;tcp-only&gt;false&lt;/tcp-only&gt;
   &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
 &lt;/input&gt; 
 </msg>
<msg time="2026-04-05T00:36:40.338602" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/operations/netconf-node-topology:create-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:40.338825" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:40.322627" elapsed="0.016253"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.322487" elapsed="0.016499"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.320118" elapsed="0.018918"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.346659" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.341355" elapsed="0.005398"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.340870" elapsed="0.005960"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.340829" elapsed="0.006056"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.350893" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.347507" elapsed="0.003431"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.347005" elapsed="0.003966"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.346969" elapsed="0.004026"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.351565" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:40.351157" elapsed="0.000434"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.351892" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.351661" elapsed="0.000331"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.352492" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.352176" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.352017" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.351643" elapsed="0.000937"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.353124" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:40.352757" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.353462" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.353220" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.353991" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.353698" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.353544" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.353202" elapsed="0.000871"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:40.354217" elapsed="0.000359"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:40.355026" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:40.354737" elapsed="0.000315"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.355201" elapsed="0.002320"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:40.339843" elapsed="0.017741"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:40.357762" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-05T00:36:40.357656" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.357637" elapsed="0.000214"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.357995" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.358061" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:40.360306" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:40.315280" elapsed="0.045053"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:40.360402" elapsed="0.000040"/>
</return>
<msg time="2026-04-05T00:36:40.360571" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:40.099126" elapsed="0.261469"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.360960" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.360725" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.360708" elapsed="0.000343"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:40.361083" elapsed="0.000025"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:40.096388" elapsed="0.264816"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.096081" elapsed="0.265165"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.361528" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.361271" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.096062" elapsed="0.265606"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.361814" elapsed="0.000239"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>device_type=${DEVICE_TYPE_RPC_CREATE}</arg>
<arg>http_timeout=2</arg>
<arg>http_method=post</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:36:40.075073" elapsed="0.287042"/>
</kw>
<doc>Make request to configure a testtool device on Netconf connector.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:39.986792" elapsed="0.375455"/>
</test>
<test id="s1-s5-s1-t3" name="Check_ODL_Has_Netconf_Connector_For_Device" line="58">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:40.365633" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:40.365353" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.366877" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:40.366770" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.366751" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.371856" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:40.371750" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.371732" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.372949" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:40.372530" elapsed="0.000445"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.373445" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:40.373135" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:40.373515" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:40.373669" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:40.372146" elapsed="0.001547"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.379179" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:40.379072" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.379053" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.380513" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:40.380383" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.380365" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:40.381097" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.380736" elapsed="0.000387"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:40.381567" level="INFO">${current_connection_index} = 18</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:40.381276" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:40.415079" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:40.382164" elapsed="0.033085"/>
</kw>
<msg time="2026-04-05T00:36:40.415446" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:40.415494" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:40.381774" elapsed="0.033756"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:40.445757" level="INFO">"s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "O "D "L "_ "H "a "s "_ "N "e "t "c "o "n "f "_ "C "o "n "n "e "c "t "o "r "_ "F "o "r "_ "D "e "v "i "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:40.416215" elapsed="0.029727"/>
</kw>
<msg time="2026-04-05T00:36:40.446111" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:40.446157" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "O "D "L "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:40.415698" elapsed="0.030495"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.446522" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.446271" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.446251" elapsed="0.000416"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.447180" level="INFO"> "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "O "D "L "_ "H "a "s "_ "N "e "t "c "o "n "f "_ "C "o "n "n "e "c "t "o "r "_ "F "o "r "_ "D "e "v "i "c "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.446807" elapsed="0.000451"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.447551" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.447325" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.447307" elapsed="0.000343"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:40.447682" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:40.450759" elapsed="0.000147"/>
</kw>
<msg time="2026-04-05T00:36:40.450977" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:40.450008" elapsed="0.001071"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.452008" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.452985" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:40.448566" elapsed="0.004536"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:40.447946" elapsed="0.005271"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:40.380084" elapsed="0.073230"/>
</kw>
<msg time="2026-04-05T00:36:40.453405" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:40.453466" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "O "D "L "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:40.379394" elapsed="0.074110"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:40.453685" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:40.453580" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.453562" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.454163" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.454525" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.454597" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:40.378637" elapsed="0.076067"/>
</kw>
<msg time="2026-04-05T00:36:40.454797" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:40.454842" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "O "D "L "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:40.374057" elapsed="0.080821"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.455201" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.454954" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.454936" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:40.373919" elapsed="0.081382"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:40.373747" elapsed="0.081585"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:40.371375" elapsed="0.084012"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:40.366484" elapsed="0.089076"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:40.366040" elapsed="0.089567"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:40.363080" elapsed="0.092579"/>
</kw>
<kw name="Count_Netconf_Connectors_For_Device" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.466529" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.464261" elapsed="0.002295"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.466874" elapsed="0.000021"/>
</kw>
<var name="${nv}"/>
<status status="NOT RUN" start="2026-04-05T00:36:40.466726" elapsed="0.000205"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.466610" elapsed="0.000346"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.467247" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.467016" elapsed="0.000288"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.468039" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.467567" elapsed="0.000499"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.467328" elapsed="0.000774"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.468284" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.468126" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.467000" elapsed="0.001359"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:40.468392" elapsed="0.000051"/>
</return>
<msg time="2026-04-05T00:36:40.468577" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:40.463816" elapsed="0.004786"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:40.468649" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:40.468787" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:40.463327" elapsed="0.005485"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.475956" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.475708" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.476388" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.476149" elapsed="0.000323"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:40.486327" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0fyqmiouh9jkowe7q8s5abeyd5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:40.486570" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1440'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167"}}],"topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-05T00:36:40.486722" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:40.478568" elapsed="0.008192"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.476539" elapsed="0.010283"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.487080" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.486862" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.476522" elapsed="0.010681"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.492306" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167"}}],"topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.488708" elapsed="0.003771"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.488350" elapsed="0.004183"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.488323" elapsed="0.004246"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.496599" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.492969" elapsed="0.003689"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.492650" elapsed="0.004043"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.492626" elapsed="0.004091"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.497247" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:40.496871" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.497586" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.497342" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.498116" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.497821" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.497667" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.497325" elapsed="0.000873"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.498721" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:40.498348" elapsed="0.000399"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.499038" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.498815" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.499581" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.499275" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.499123" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.498798" elapsed="0.000869"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:40.499810" elapsed="0.000337"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:40.500630" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:40.500304" elapsed="0.000351"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.500804" elapsed="0.002285"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:40.487737" elapsed="0.015414"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.503323" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:40.503219" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.503202" elapsed="0.000187"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:40.506604" level="INFO">${text_normalized} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "node": [
     {
      "netconf-node-topology:netconf-node": {
       "connection-status": "connecting",
       "host": "10.30.170.16...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:40.503550" elapsed="0.003083"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:40.506684" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:40.506839" level="INFO">${response_text} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "node": [
     {
      "netconf-node-topology:netconf-node": {
       "connection-status": "connecting",
       "host": "10.30.170.16...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:40.471404" elapsed="0.035461"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:40.506921" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:40.507072" level="INFO">${mounts} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "node": [
     {
      "netconf-node-topology:netconf-node": {
       "connection-status": "connecting",
       "host": "10.30.170.16...</msg>
<var>${mounts}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:40.469025" elapsed="0.038073"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.507515" level="INFO">{
 "network-topology:network-topology": {
  "topology": [
   {
    "node": [
     {
      "netconf-node-topology:netconf-node": {
       "connection-status": "connecting",
       "host": "10.30.170.167",
       "login-password": {
        "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
        "username": "admin"
       },
       "port": 17830
      },
      "node-id": "netconf-test-device"
     }
    ],
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topology-parameters": {
       "encryption": {
        "encryption-alg": [
         "AEAD_AES_128_GCM",
         "AEAD_AES_256_GCM",
         "aes128-cbc",
         "aes128-ctr",
         "aes192-cbc",
         "aes192-ctr",
         "aes256-cbc",
         "aes256-ctr",
         "chacha20-poly1305"
        ]
       },
       "host-key": {
        "host-key-alg": [
         "ecdsa-sha2-nistp256",
         "ecdsa-sha2-nistp384",
         "ecdsa-sha2-nistp521",
         "rsa-sha2-256",
         "rsa-sha2-512",
         "ssh-ed25519",
         "ssh-rsa"
        ]
       },
       "key-exchange": {
        "key-exchange-alg": [
         "curve25519-sha256",
         "curve448-sha512",
         "diffie-hellman-group-exchange-sha256",
         "diffie-hellman-group14-sha256",
         "diffie-hellman-group15-sha512",
         "diffie-hellman-group16-sha512",
         "diffie-hellman-group17-sha512",
         "diffie-hellman-group18-sha512",
         "ecdh-sha2-nistp256",
         "ecdh-sha2-nistp384",
         "ecdh-sha2-nistp521",
         "mlkem1024nistp384-sha384",
         "mlkem768nistp256-sha256",
         "mlkem768x25519-sha256",
         "sntrup761x25519-sha512"
        ]
       },
       "mac": {
        "mac-alg": [
         "hmac-sha1",
         "hmac-sha2-256",
         "hmac-sha2-512"
        ]
       }
      }
     }
    }
   },
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology-id": "flow:1"
   },
   {
    "topology-id": "hwvtep:1"
   },
   {
    "topology-id": "ovsdb:1"
   }
  ]
 }
}
</msg>
<arg>${mounts}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.507253" elapsed="0.000361"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.508158" level="INFO">${actual_count} = 1</msg>
<var>${actual_count}</var>
<arg>len('''${mounts}'''.split('"node-id": "${device_name}"'))-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:40.507767" elapsed="0.000417"/>
</kw>
<return>
<value>${actual_count}</value>
<status status="PASS" start="2026-04-05T00:36:40.508230" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:40.508406" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>${DEVICE_NAME}</arg>
<doc>Count all instances of the specified device in the Netconf topology (usually 0 or 1).</doc>
<status status="PASS" start="2026-04-05T00:36:40.455928" elapsed="0.052520"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.508855" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${count}</arg>
<arg>1</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:40.508600" elapsed="0.000309"/>
</kw>
<doc>Get the list of configured devices and search for our device there. Fail if not found.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:40.362486" elapsed="0.146534"/>
</test>
<test id="s1-s5-s1-t4" name="Wait_For_Device_To_Become_Connected" line="64">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:40.512078" elapsed="0.000203"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:40.511822" elapsed="0.000513"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.513343" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:40.513236" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.513217" elapsed="0.000192"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.518525" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:40.518399" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.518381" elapsed="0.000211"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.519573" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:40.519180" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.520039" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:40.519751" elapsed="0.000313"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:40.520107" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:40.520257" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:40.518812" elapsed="0.001469"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.525681" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:40.525575" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.525557" elapsed="0.000190"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.526937" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:40.526833" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.526816" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:40.527511" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.527143" elapsed="0.000394"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:40.527928" level="INFO">${current_connection_index} = 18</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:40.527688" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:40.560130" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:40.528552" elapsed="0.031780"/>
</kw>
<msg time="2026-04-05T00:36:40.560515" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:40.560561" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:40.528104" elapsed="0.032493"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:40.585842" level="INFO">"s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "c "o "m "e "_ "C "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:40.561148" elapsed="0.024872"/>
</kw>
<msg time="2026-04-05T00:36:40.586186" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:40.586231" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "W "a "i "t "_ "F "o "r "_ "D ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:40.560762" elapsed="0.025540"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.586628" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.586381" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.586362" elapsed="0.000367"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.587233" level="INFO"> "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "W "a "i "t "_ "F "o "r "_ "D "e "v "i "c "e "_ "T "o "_ "B "e "c "o "m "e "_ "C "o "n "n "e "c "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.586865" elapsed="0.000441"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.587600" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.587373" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.587355" elapsed="0.000344"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:40.587731" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:40.590665" elapsed="0.000265"/>
</kw>
<msg time="2026-04-05T00:36:40.591002" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:40.590051" elapsed="0.001047"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.592008" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.592987" elapsed="0.000039"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:40.588604" elapsed="0.004501"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:40.587983" elapsed="0.005236"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:40.526535" elapsed="0.066788"/>
</kw>
<msg time="2026-04-05T00:36:40.593414" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:40.593489" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "W "a "i "t "_ "F "o "r "_ "D ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:40.525892" elapsed="0.067636"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:40.593710" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:36:40.593604" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.593586" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.594174" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.594513" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.594585" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:40.525228" elapsed="0.069463"/>
</kw>
<msg time="2026-04-05T00:36:40.594782" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:40.594824" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "W "a "i "t "_ "F "o "r "_ "D ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:40.520675" elapsed="0.074185"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.595178" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.594934" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.594917" elapsed="0.000337"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:40.520539" elapsed="0.074737"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:40.520356" elapsed="0.074949"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:40.518040" elapsed="0.077317"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:40.512954" elapsed="0.082458"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:40.512536" elapsed="0.082991"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:40.509722" elapsed="0.085858"/>
</kw>
<kw name="Wait_Device_Connected" owner="NetconfKeywords">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Connected" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.607525" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.605470" elapsed="0.002082"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.608227" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.607876" elapsed="0.000378"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:40.607731" elapsed="0.000563"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.608850" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.608534" elapsed="0.000342"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:40.608372" elapsed="0.000540"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:40.607604" elapsed="0.001336"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.609233" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.609003" elapsed="0.000287"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.610019" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.609557" elapsed="0.000490"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.609314" elapsed="0.000769"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.610264" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.610107" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.608986" elapsed="0.001352"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:40.610370" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:40.610533" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:40.605010" elapsed="0.005549"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:40.610604" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:40.610743" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:40.604259" elapsed="0.006508"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.618165" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.617918" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.618617" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.618358" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:40.628781" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0fyqmiouh9jkowe7q8s5abeyd5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:40.628897" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '277'} 
 body={"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167"}}]} 
 </msg>
<msg time="2026-04-05T00:36:40.628991" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:40.620781" elapsed="0.008235"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.618726" elapsed="0.010355"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.629258" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.629109" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.618709" elapsed="0.010974"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.633398" level="INFO">{"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.630697" elapsed="0.002789"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.630481" elapsed="0.003056"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.630461" elapsed="0.003110"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.637168" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:40.633949" elapsed="0.003283"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.633648" elapsed="0.003632"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.633625" elapsed="0.003688"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.638062" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:40.637545" elapsed="0.000554"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.638533" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.638196" elapsed="0.000420"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.639275" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.638863" elapsed="0.000449"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.638650" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.638171" elapsed="0.001220"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.640153" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:40.639621" elapsed="0.000570"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:40.640628" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:40.640291" elapsed="0.000417"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.641362" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:40.640955" elapsed="0.000442"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:40.640742" elapsed="0.000726"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.640266" elapsed="0.001231"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:40.641700" elapsed="0.000474"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:40.642800" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:40.642395" elapsed="0.000441"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:40.643044" elapsed="0.002844"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:40.630036" elapsed="0.015915"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:40.646123" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:40.646020" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:40.646002" elapsed="0.000187"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:40.648986" level="INFO">${text_normalized} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:40.646329" elapsed="0.002686"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:40.649066" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:40.649219" level="INFO">${response_text} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:40.613636" elapsed="0.035608"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:40.649300" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:40.649462" level="INFO">${device_status} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${device_status}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:40.610985" elapsed="0.038536"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-05T00:36:40.650036" level="FAIL">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</msg>
<arg>${device_status}</arg>
<arg>connection-status": "connected"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-05T00:36:40.649682" elapsed="0.000431">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device is accessible from Netconf.</doc>
<status status="FAIL" start="2026-04-05T00:36:40.596795" elapsed="0.053451">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<kw name="Check_Device_Connected" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:41.671089" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:41.668495" elapsed="0.002633"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:41.671991" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:41.671602" elapsed="0.000423"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:41.671392" elapsed="0.000675"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:41.672678" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:41.672326" elapsed="0.000379"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:41.672163" elapsed="0.000579"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:41.671222" elapsed="0.001548"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:41.673128" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:41.672851" elapsed="0.000334"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:41.673927" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:41.673459" elapsed="0.000495"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:41.673212" elapsed="0.000777"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:41.674193" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:41.674032" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:41.672830" elapsed="0.001438"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:41.674308" elapsed="0.000039"/>
</return>
<msg time="2026-04-05T00:36:41.674491" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:41.667998" elapsed="0.006519"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:41.674564" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:41.674703" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:41.667284" elapsed="0.007444"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:41.682259" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:41.681962" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:41.682722" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:41.682477" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:41.691671" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0fyqmiouh9jkowe7q8s5abeyd5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:41.691877" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '277'} 
 body={"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167"}}]} 
 </msg>
<msg time="2026-04-05T00:36:41.691976" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:41.684871" elapsed="0.007131"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:41.682835" elapsed="0.009210"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:41.692221" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:41.692072" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:41.682816" elapsed="0.009491"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:41.695796" level="INFO">{"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"connection-status":"connecting","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:41.693326" elapsed="0.002519"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:41.693108" elapsed="0.002772"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:41.693090" elapsed="0.002815"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:41.698559" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:41.696179" elapsed="0.002449"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:41.695962" elapsed="0.002718"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:41.695945" elapsed="0.002771"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:41.699560" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:41.698957" elapsed="0.000650"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:41.700054" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:41.699712" elapsed="0.000426"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:41.700860" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:41.700402" elapsed="0.000496"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:41.700174" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:41.699685" elapsed="0.001296"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:41.701758" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:41.701207" elapsed="0.000590"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:41.702245" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:41.701898" elapsed="0.000429"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:41.703037" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:41.702608" elapsed="0.000466"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:41.702363" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:41.701872" elapsed="0.001285"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:41.703372" elapsed="0.000528"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:41.704578" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:41.704135" elapsed="0.000481"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:41.704837" elapsed="0.005392"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:41.692685" elapsed="0.017637"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:41.710590" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:41.710445" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:41.710397" elapsed="0.000262"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:41.713476" level="INFO">${text_normalized} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:41.710800" elapsed="0.002706"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:41.713591" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:36:41.713755" level="INFO">${response_text} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:41.677625" elapsed="0.036156"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:41.713838" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:41.714005" level="INFO">${device_status} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1g...</msg>
<var>${device_status}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:41.674970" elapsed="0.039062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-05T00:36:41.714557" level="FAIL">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</msg>
<arg>${device_status}</arg>
<arg>connection-status": "connected"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-05T00:36:41.714187" elapsed="0.000445">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device is accessible from Netconf.</doc>
<status status="FAIL" start="2026-04-05T00:36:41.651139" elapsed="0.063614">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "login-password": {
     "password": "CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo=",
     "username": "admin"
    },
    "port": 17830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<kw name="Check_Device_Connected" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.732678" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:42.729696" elapsed="0.003036"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.733457" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:42.733109" elapsed="0.000379"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:42.732959" elapsed="0.000565"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.734085" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:42.733768" elapsed="0.000343"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:42.733620" elapsed="0.000526"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:42.732821" elapsed="0.001353"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.734538" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:42.734248" elapsed="0.000347"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.735345" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:42.734845" elapsed="0.000527"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:42.734622" elapsed="0.000785"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.735612" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:42.735447" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.734227" elapsed="0.001460"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:42.735725" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:36:42.735885" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:42.729024" elapsed="0.006886"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:42.735955" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:42.736105" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:42.728213" elapsed="0.007923"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.743835" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:42.743575" elapsed="0.000400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.744396" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:42.744150" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:42.754601" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0fyqmiouh9jkowe7q8s5abeyd5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:42.754864" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '3541'} 
 body={"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"negotiated-ssh-transport-parameters":{"encryption-alg":"chacha20-poly1305@openssh.com","host-key-alg":"rsa-sha2-512","mac-alg":"aead","key-exchange-alg":"sntrup761x25519-sha512"},"session-id":1,"connection-status":"connected","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167","available-capabilities":{"available-capability":[{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:notification:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:exi:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:candidate:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.0"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?revision=2014-08-18)people"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car?revision=2014-08-18)car"},{"capability-origin":"device-advertised","capability":"(ns:main?revision=2014-01-21)main"},{"capability-origin":"device-advertised","capability":"(ns:augment:main:a?revision=2014-01-21)augment-main-a"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:netconf:monitoring?revision=2022-07-18)odl-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension"},{"capability-origin":"device-advertised","capability":"(org:opendaylight:coretutorials:ncmount:example:l2fib?revision=2016-03-07)ncmount-l2fib"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people?revision=2014-08-18)car-people"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)car-purchase"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:test:netconf:crud?revision=2014-10-18)test"},{"capability-origin":"device-advertised","capability":"(https://example.com/ns/example-action?revision=2016-07-07)example-action"},{"capability":"(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:yang:extension:yang-ext?revision=2013-07-09)yang-ext"}]}}}]} 
 </msg>
<msg time="2026-04-05T00:36:42.754989" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:42.746551" elapsed="0.008470"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:42.744524" elapsed="0.010558"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.755340" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:42.755127" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.744506" elapsed="0.010974"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.760461" level="INFO">{"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":17830,"negotiated-ssh-transport-parameters":{"encryption-alg":"chacha20-poly1305@openssh.com","host-key-alg":"rsa-sha2-512","mac-alg":"aead","key-exchange-alg":"sntrup761x25519-sha512"},"session-id":1,"connection-status":"connected","login-password":{"username":"admin","password":"CwWGOgKD82i1gQRzdbP9j4TIyPXX/V2grQ5xyo5SH6iD7/jxV4+2iEo="},"host":"10.30.170.167","available-capabilities":{"available-capability":[{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:notification:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:exi:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:candidate:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.0"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?revision=2014-08-18)people"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car?revision=2014-08-18)car"},{"capability-origin":"device-advertised","capability":"(ns:main?revision=2014-01-21)main"},{"capability-origin":"device-advertised","capability":"(ns:augment:main:a?revision=2014-01-21)augment-main-a"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:netconf:monitoring?revision=2022-07-18)odl-netconf-monitoring"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension"},{"capability-origin":"device-advertised","capability":"(org:opendaylight:coretutorials:ncmount:example:l2fib?revision=2016-03-07)ncmount-l2fib"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people?revision=2014-08-18)car-people"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)car-purchase"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:test:netconf:crud?revision=2014-10-18)test"},{"capability-origin":"device-advertised","capability":"(https://example.com/ns/example-action?revision=2016-07-07)example-action"},{"capability":"(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types"},{"capability-origin":"device-advertised","capability":"(urn:opendaylight:yang:extension:yang-ext?revision=2013-07-09)yang-ext"}]}}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:42.756913" elapsed="0.003709"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:42.756610" elapsed="0.004064"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.756584" elapsed="0.004125"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.764361" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:42.761094" elapsed="0.003360"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:42.760788" elapsed="0.003717"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.760764" elapsed="0.003776"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.765140" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:42.764737" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.765492" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:42.765238" elapsed="0.000316"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.766039" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:42.765737" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:42.765581" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.765220" elapsed="0.000902"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.766653" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:42.766275" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.766974" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:42.766749" elapsed="0.000281"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.767517" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:42.767207" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:42.767055" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.766732" elapsed="0.000870"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:42.767755" elapsed="0.000371"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:42.768603" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:42.768288" elapsed="0.000341"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:42.768778" elapsed="0.002461"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:42.755979" elapsed="0.015329"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:42.771503" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:42.771379" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.771360" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:42.775154" level="INFO">${text_normalized} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:42.771718" elapsed="0.003467"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:42.775237" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:36:42.775405" level="INFO">${response_text} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:42.739277" elapsed="0.036170"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:42.775505" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:42.775656" level="INFO">${device_status} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(https://example.com/ns/exampl...</msg>
<var>${device_status}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:42.736365" elapsed="0.039318"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${device_status}</arg>
<arg>connection-status": "connected"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:42.775840" elapsed="0.000347"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device is accessible from Netconf.</doc>
<status status="PASS" start="2026-04-05T00:36:42.715642" elapsed="0.060608"/>
</kw>
<arg>${timeout}</arg>
<arg>${period}</arg>
<arg>Check_Device_Connected</arg>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:40.596199" elapsed="2.180177"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<doc>Wait for the device to become connected.
It is more readable to use this keyword in a test case than to put the whole WUKS below into it.</doc>
<status status="PASS" start="2026-04-05T00:36:40.595781" elapsed="2.180680"/>
</kw>
<doc>Wait until the device becomes available through Netconf.</doc>
<status status="PASS" start="2026-04-05T00:36:40.509214" elapsed="2.267370"/>
</test>
<test id="s1-s5-s1-t5" name="Check_Device_Data_Is_Empty" line="68">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:42.779808" elapsed="0.000223"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:42.779544" elapsed="0.000542"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:42.781114" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:42.780990" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.780970" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:42.786128" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:42.786020" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.786001" elapsed="0.000196"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.787217" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:42.786824" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.787718" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:42.787402" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:42.787789" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:36:42.787948" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:42.786440" elapsed="0.001533"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:42.793731" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:42.793615" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.793595" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:42.795199" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:42.795093" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.795074" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:42.795810" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:42.795409" elapsed="0.000428"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:42.796912" level="INFO">${current_connection_index} = 18</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:42.796113" elapsed="0.000831"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:42.830739" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:42.797522" elapsed="0.033477"/>
</kw>
<msg time="2026-04-05T00:36:42.831234" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:42.831281" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:42.797103" elapsed="0.034215"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:42.853056" level="INFO">"s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "E "m "p "t "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:42.832116" elapsed="0.021219"/>
</kw>
<msg time="2026-04-05T00:36:42.853596" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:42.853643" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:42.831583" elapsed="0.022097"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.854144" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:42.853798" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.853761" elapsed="0.000578"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.854955" level="INFO"> "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "D "a "t "a "_ "I "s "_ "E "m "p "t "y "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:42.854503" elapsed="0.000524"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.855308" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:42.855095" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.855077" elapsed="0.000332"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:42.855465" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:42.858773" elapsed="0.000155"/>
</kw>
<msg time="2026-04-05T00:36:42.859002" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:42.857961" elapsed="0.001145"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.860051" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.861003" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:42.856448" elapsed="0.004671"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:42.855776" elapsed="0.005459"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:42.794788" elapsed="0.066547"/>
</kw>
<msg time="2026-04-05T00:36:42.861460" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:42.861508" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:42.793949" elapsed="0.067599"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:42.861743" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:42.861630" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.861610" elapsed="0.000219"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.862249" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.862679" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:42.862754" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:42.793252" elapsed="0.069615"/>
</kw>
<msg time="2026-04-05T00:36:42.862963" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:42.863007" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:42.788384" elapsed="0.074661"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.863374" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:42.863124" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.863106" elapsed="0.000362"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:42.788243" elapsed="0.075249"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:42.788066" elapsed="0.075459"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:42.785660" elapsed="0.077922"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:42.780698" elapsed="0.082941"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:42.780236" elapsed="0.083450"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:42.777282" elapsed="0.086458"/>
</kw>
<kw name="Regexp Escape" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.864263" level="INFO">${escaped} = urn:ietf:params:xml:ns:netconf:base:1\.0</msg>
<var>${escaped}</var>
<arg>${ODL_NETCONF_NAMESPACE}</arg>
<doc>Returns each argument escaped for use as a regular expression.</doc>
<status status="PASS" start="2026-04-05T00:36:42.863919" elapsed="0.000370"/>
</kw>
<kw name="Check_Config_Data">
<kw name="Get_Config_Data">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.865924" level="INFO">${url} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<var>${url}</var>
<arg>${REST_API}/network-topology:network-topology/topology=topology-netconf/node=${DEVICE_NAME}/yang-ext:mount?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:42.865275" elapsed="0.000677"/>
</kw>
<kw name="Get_As_Xml_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.873370" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:42.873107" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.873828" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:42.873585" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:42.895279" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0fyqmiouh9jkowe7q8s5abeyd5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:42.895585" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount?content=config 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '55'} 
 body=&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt; 
 </msg>
<msg time="2026-04-05T00:36:42.895798" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:42.876012" elapsed="0.019872"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:42.873943" elapsed="0.022039"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.896371" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:42.896043" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.873922" elapsed="0.022672"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.904318" level="INFO">&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:42.898859" elapsed="0.005592"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:42.898350" elapsed="0.006179"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.898308" elapsed="0.006262"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.908404" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:42.904970" elapsed="0.003522"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:42.904651" elapsed="0.003891"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.904627" elapsed="0.003951"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.909389" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:42.908822" elapsed="0.000627"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.909901" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:42.909556" elapsed="0.000429"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.910720" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:42.910253" elapsed="0.000507"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:42.910021" elapsed="0.000792"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.909529" elapsed="0.001315"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.911626" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:42.911074" elapsed="0.000592"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.912139" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:42.911768" elapsed="0.000454"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.912956" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:42.912510" elapsed="0.000482"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:42.912257" elapsed="0.000784"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.911742" elapsed="0.001328"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:42.913274" elapsed="0.000503"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:42.914399" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:42.914000" elapsed="0.000529"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:42.914746" elapsed="0.003022"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:42.897383" elapsed="0.020451"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:42.918014" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-05T00:36:42.917904" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.917885" elapsed="0.000226"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.918256" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:42.918327" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:42.920647" level="INFO">${response_text} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:42.868813" elapsed="0.051862"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:42.920734" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:42.920885" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${data}</var>
<arg>${url}</arg>
<doc>Specify XML headers and return Get_From_Uri response text.</doc>
<status status="PASS" start="2026-04-05T00:36:42.866166" elapsed="0.054746"/>
</kw>
<return>
<value>${data}</value>
<status status="PASS" start="2026-04-05T00:36:42.920958" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:42.921103" level="INFO">${data} = &lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;</msg>
<var>${data}</var>
<doc>Get and return the config data from the device.</doc>
<status status="PASS" start="2026-04-05T00:36:42.865014" elapsed="0.056116"/>
</kw>
<if>
<branch type="IF" condition="${regex}">
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-04-05T00:36:42.921378" elapsed="0.000355"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:42.921196" elapsed="0.000576"/>
</branch>
<branch type="ELSE IF" condition="${contains}">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.921943" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:42.921798" elapsed="0.000201"/>
</branch>
<branch type="ELSE">
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data}</arg>
<arg>${expected}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:42.922156" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:42.922022" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.921179" elapsed="0.001051"/>
</if>
<arg>&lt;data xmlns\="${escaped}"(\/&gt;|&gt;&lt;\/data&gt;)</arg>
<arg>${True}</arg>
<status status="PASS" start="2026-04-05T00:36:42.864570" elapsed="0.057708"/>
</kw>
<doc>Get the device data and make sure it is empty.</doc>
<status status="PASS" start="2026-04-05T00:36:42.776803" elapsed="0.145597"/>
</test>
<test id="s1-s5-s1-t6" name="Invoke_Yang1.1_Action_Via_Xml_Post" line="73">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:42.925886" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:42.925476" elapsed="0.000671"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:42.927120" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:42.927012" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.926993" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:42.932142" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:42.932032" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.932014" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.933193" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:42.932819" elapsed="0.000401"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:42.933684" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:42.933374" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:42.933753" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:42.933905" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:42.932446" elapsed="0.001483"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:42.939597" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:42.939488" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.939467" elapsed="0.000389"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:42.941129" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:42.941024" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:42.941006" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:42.941732" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:42.941335" elapsed="0.000424"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:42.942157" level="INFO">${current_connection_index} = 18</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:42.941911" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:42.980647" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:42.942739" elapsed="0.038377"/>
</kw>
<msg time="2026-04-05T00:36:42.981607" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:42.981715" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:42.942336" elapsed="0.039462"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:43.004528" level="INFO">"s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n "g "1 ". "1 "_ "A "c "t "i "o "n "_ "V "i "a "_ "X "m "l "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:42.983319" elapsed="0.021402"/>
</kw>
<msg time="2026-04-05T00:36:43.004892" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:43.004937" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:42.982265" elapsed="0.022709"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.005342" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.005071" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.005042" elapsed="0.000425"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.006006" level="INFO"> "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n "g "1 ". "1 "_ "A "c "t "i "o "n "_ "V "i "a "_ "X "m "l "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.005621" elapsed="0.000464"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.006368" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.006154" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.006135" elapsed="0.000352"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:43.006527" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:43.009711" elapsed="0.000153"/>
</kw>
<msg time="2026-04-05T00:36:43.009936" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:43.009050" elapsed="0.000992"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.010982" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.012098" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:43.007478" elapsed="0.004738"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:43.006846" elapsed="0.005485"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:42.940716" elapsed="0.071741"/>
</kw>
<msg time="2026-04-05T00:36:43.012557" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:43.012602" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:42.940022" elapsed="0.072623"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:43.012835" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:43.012727" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.012708" elapsed="0.000278"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.013409" elapsed="0.000073"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.013801" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.013873" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:42.939077" elapsed="0.074907"/>
</kw>
<msg time="2026-04-05T00:36:43.014082" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:43.014126" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:42.934296" elapsed="0.079867"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.014572" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.014243" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.014225" elapsed="0.000443"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:42.934160" elapsed="0.080537"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:42.933987" elapsed="0.080745"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:42.931660" elapsed="0.083135"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:42.926727" elapsed="0.088131"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:42.926292" elapsed="0.088616"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:42.923337" elapsed="0.091629"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.015663" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.015147" elapsed="0.000546"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.051350" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.050977" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.052267" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:43.051900" elapsed="0.000449">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:43.052464" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:43.051567" elapsed="0.000923"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.053037" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:43.052653" elapsed="0.000410"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.053373" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:43.053560" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/example-action:interfaces/interface=eth1/reset
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:43.053236" elapsed="0.000351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.053983" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/example-action:interfaces/interface=eth1/reset
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.053739" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.054974" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.054716" elapsed="0.000337"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.055487" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.055209" elapsed="0.000305"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.056211" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:43.055910" elapsed="0.000327"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:43.057002" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.056754" elapsed="0.000275"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:43.057079" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:43.057229" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:43.056438" elapsed="0.000816"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.057404" elapsed="0.000270"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:43.055775" elapsed="0.001940"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.058251" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:43.057954" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:43.059172" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.058937" elapsed="0.000261"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:43.059249" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:43.059398" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:43.058478" elapsed="0.000959"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.059604" elapsed="0.000225"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:43.057826" elapsed="0.002044"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:43.055601" elapsed="0.004304"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:43.059948" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:43.060102" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:43.054380" elapsed="0.005747"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.054093" elapsed="0.006067"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.060328" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.060184" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.054075" elapsed="0.006328"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.061142" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/example-action:interfaces/interface=eth1/reset</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.060558" elapsed="0.000612"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:43.061218" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:43.050359" elapsed="0.010981"/>
</kw>
<msg time="2026-04-05T00:36:43.061394" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:43.037344" elapsed="0.024113"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.073691" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.085854" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.098299" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.098505" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.098678" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.099037" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.098897" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:43.098882" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.099253" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.099415" elapsed="0.000035"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.099605" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:43.098854" elapsed="0.000803"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.098754" elapsed="0.000929"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.099827" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.099902" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:43.100022" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/example-action:interfaces/interface=eth1/reset</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:43.033034" elapsed="0.067014"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.124623" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.124236" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.125384" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:43.125164" elapsed="0.000312">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:43.125576" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:43.124806" elapsed="0.000794"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.126137" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:43.125757" elapsed="0.000406"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.126463" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:43.126602" level="INFO">${template} = &lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;input xmlns="https://example.com/ns/example-action"&gt;
  &lt;delay&gt;600&lt;/delay&gt;
&lt;/input&gt;

</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:43.126316" elapsed="0.000346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.127064" level="INFO">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;input xmlns="https://example.com/ns/example-action"&gt;
  &lt;delay&gt;600&lt;/delay&gt;
&lt;/input&gt;

</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.126819" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:43.127523" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.127179" elapsed="0.000406"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.128230" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.127753" elapsed="0.000504"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.127610" elapsed="0.000684"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.127160" elapsed="0.001155"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.128912" level="INFO">${final_text} = &lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;input xmlns="https://example.com/ns/example-action"&gt;
  &lt;delay&gt;600&lt;/delay&gt;
&lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.128473" elapsed="0.000468"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:43.128991" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:43.123640" elapsed="0.005472"/>
</kw>
<msg time="2026-04-05T00:36:43.129165" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:43.111068" elapsed="0.018143"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.141475" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.154057" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.166448" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.166637" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.166806" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.167159" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.167022" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:43.167007" elapsed="0.000230"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.167387" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.167568" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.167727" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:43.166979" elapsed="0.000835"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.166880" elapsed="0.000960"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.167983" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.168059" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:43.168179" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;input xmlns="https://example.com/ns/example-action"&gt;
  &lt;delay&gt;600&lt;/delay&gt;
&lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:43.110160" elapsed="0.058047"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.169479" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:43.169212" elapsed="0.000331">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:43.169636" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:43.168879" elapsed="0.000780"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.169971" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.169729" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.170522" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.170210" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.170051" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.169711" elapsed="0.000892"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.172928" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:43.170747" elapsed="0.002207"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:43.173004" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:43.173156" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:43.168560" elapsed="0.004619"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.174700" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/example-action:interfaces/interface=eth1/reset</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.174453" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.175125" level="INFO">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;input xmlns="https://example.com/ns/example-action"&gt;
  &lt;delay&gt;600&lt;/delay&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.174891" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.175611" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.175312" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.176035" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.175799" elapsed="0.000279"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:43.176887" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:43.176693" elapsed="0.000219"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:43.177229" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:43.177058" elapsed="0.000195"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.177394" elapsed="0.000210"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.178169" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.177754" elapsed="0.000459"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:43.178255" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:43.178409" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:43.176276" elapsed="0.002209"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:43.204639" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/example-action:interfaces/interface=eth1/reset 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/example-action:interfaces/interface=eth1/reset 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0fyqmiouh9jkowe7q8s5abeyd5.node0', 'Content-Length': '122', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;input xmlns="https://example.com/ns/example-action"&gt;
  &lt;delay&gt;600&lt;/delay&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-05T00:36:43.204711" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/example-action:interfaces/interface=eth1/reset 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:43.204834" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:43.180673" elapsed="0.024196"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.178574" elapsed="0.026359"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.205173" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.204969" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.178556" elapsed="0.026740"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.210028" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.206725" elapsed="0.003363"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.206409" elapsed="0.003728"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.206384" elapsed="0.003786"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.213782" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.210566" elapsed="0.003278"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.210247" elapsed="0.003644"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.210224" elapsed="0.003700"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.214749" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.214201" elapsed="0.000585"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.215200" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.214882" elapsed="0.000429"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.215874" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.215577" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.215348" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.214858" elapsed="0.001098"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.216478" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.216107" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.216812" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.216573" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.217333" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.217044" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.216892" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.216556" elapsed="0.000858"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:43.217589" elapsed="0.000342"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:43.218407" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.218104" elapsed="0.000347"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.218602" elapsed="0.002324"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:43.205812" elapsed="0.015177"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:43.221207" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-05T00:36:43.221060" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.221042" elapsed="0.000256"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.221457" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.221527" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:43.223824" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:43.173521" elapsed="0.050330"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:43.223921" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:43.224072" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:43.020845" elapsed="0.203252"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.224446" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.224199" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.224182" elapsed="0.000358"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:43.224573" elapsed="0.000026"/>
</return>
<arg>${DIRECTORY_WITH_TEMPLATE_FOLDERS}${/}dataorigaction</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:43.015949" elapsed="0.208745"/>
</kw>
<doc>Send a sample test data label into the device and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:42.922751" elapsed="0.302061"/>
</test>
<test id="s1-s5-s1-t7" name="Invoke_Yang1.1_Action_Via_Json_Post" line="80">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:43.228312" elapsed="0.000226"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:43.228053" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.229562" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:43.229451" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.229418" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.234536" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:43.234415" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.234397" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.235621" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:43.235190" elapsed="0.000457"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.236099" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:43.235803" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:43.236169" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:43.236322" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:43.234823" elapsed="0.001522"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.241773" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:43.241666" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.241648" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.243068" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:43.242963" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.242945" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:43.243661" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.243285" elapsed="0.000402"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:43.244131" level="INFO">${current_connection_index} = 18</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:43.243878" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:43.276892" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:43.244732" elapsed="0.032328"/>
</kw>
<msg time="2026-04-05T00:36:43.277231" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:43.277277" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.244318" elapsed="0.032996"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:43.303533" level="INFO">"s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n "g "1 ". "1 "_ "A "c "t "i "o "n "_ "V "i "a "_ "J "s "o "n "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:43.277891" elapsed="0.025828"/>
</kw>
<msg time="2026-04-05T00:36:43.303888" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:43.303934" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.277498" elapsed="0.026473"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.304273" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.304052" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.304030" elapsed="0.000345"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.304911" level="INFO"> "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n "g "1 ". "1 "_ "A "c "t "i "o "n "_ "V "i "a "_ "J "s "o "n "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.304537" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.305265" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.305055" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.305037" elapsed="0.000327"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:43.305397" elapsed="0.000047"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:43.308443" elapsed="0.000152"/>
</kw>
<msg time="2026-04-05T00:36:43.308667" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:43.307815" elapsed="0.000953"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.309745" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.310727" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:43.306298" elapsed="0.004545"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:43.305718" elapsed="0.005241"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:43.242663" elapsed="0.068394"/>
</kw>
<msg time="2026-04-05T00:36:43.311160" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:43.311205" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.241985" elapsed="0.069257"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:43.311439" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:43.311318" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.311300" elapsed="0.000223"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.311913" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.312242" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.312349" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:43.241298" elapsed="0.071178"/>
</kw>
<msg time="2026-04-05T00:36:43.312574" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:43.312618" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.236721" elapsed="0.075933"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.312975" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.312729" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.312712" elapsed="0.000339"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:43.236583" elapsed="0.076490"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:43.236397" elapsed="0.076706"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:43.234063" elapsed="0.079092"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:43.229156" elapsed="0.084052"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.228738" elapsed="0.084513"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:43.225769" elapsed="0.087531"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.313913" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.313495" elapsed="0.000445"/>
</kw>
<kw name="Post_As_Json_Rfc8040_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.359126" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.358739" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.359897" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:43.359658" elapsed="0.000309">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:43.360060" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:43.359311" elapsed="0.000773"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.360639" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:43.360241" elapsed="0.000426"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.360954" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:43.361208" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/example-action:interfaces/interface=eth1/reset
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:43.360821" elapsed="0.000414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.361651" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/example-action:interfaces/interface=eth1/reset
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.361387" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.362639" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.362365" elapsed="0.000319"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.363111" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.362837" elapsed="0.000303"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.363802" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:43.363501" elapsed="0.000326"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:43.364629" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.364323" elapsed="0.000333"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:43.364707" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:43.364857" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:43.364012" elapsed="0.000870"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.365029" elapsed="0.000228"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:43.363355" elapsed="0.001943"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.365859" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:43.365561" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:43.366766" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.366530" elapsed="0.000262"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:43.366843" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:43.366990" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:43.366067" elapsed="0.000947"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.367277" elapsed="0.000246"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:43.365409" elapsed="0.002154"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:43.363189" elapsed="0.004408"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:43.367639" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:43.367794" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:43.362048" elapsed="0.005772"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.361763" elapsed="0.006089"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.368020" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.367876" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.361745" elapsed="0.006349"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.368812" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/example-action:interfaces/interface=eth1/reset</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.368229" elapsed="0.000611"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:43.368888" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:43.358116" elapsed="0.010894"/>
</kw>
<msg time="2026-04-05T00:36:43.369070" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:43.345238" elapsed="0.023879"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.381703" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.393953" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.406396" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.406647" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.406816" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.407185" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.407047" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:43.407033" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.407398" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.407577" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.407736" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:43.407003" elapsed="0.000786"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.406889" elapsed="0.000926"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.407955" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.408029" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:43.408148" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/example-action:interfaces/interface=eth1/reset</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:43.340807" elapsed="0.067366"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.432692" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/post_data.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.432305" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.433410" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction.titanium/post_data.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:43.433196" elapsed="0.000295">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction.titanium/post_data.json' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:43.433584" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:43.432875" elapsed="0.000733"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.434143" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/post_data.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:43.433767" elapsed="0.000404"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.434473" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction/post_data.json"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction/post_data.json&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:43.434601" level="INFO">${template} = {
   "example-action:input":{
      "delay":600
   }
}

</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:43.434324" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.435041" level="INFO">{
   "example-action:input":{
      "delay":600
   }
}

</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.434778" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:43.435454" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.435153" elapsed="0.000361"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.436016" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.435684" elapsed="0.000359"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.435543" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.435134" elapsed="0.000965"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.436689" level="INFO">${final_text} = {
   "example-action:input":{
      "delay":600
   }
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.436240" elapsed="0.000476"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:43.436765" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:43.431704" elapsed="0.005185"/>
</kw>
<msg time="2026-04-05T00:36:43.436940" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:43.419164" elapsed="0.017823"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.449517" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.462125" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.474649" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.474838" elapsed="0.000047"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.475039" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.475395" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.475256" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:43.475241" elapsed="0.000252"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.475629" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.475790" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.475957" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:43.475212" elapsed="0.000797"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.475113" elapsed="0.000922"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.476175" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.476248" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:43.476361" level="INFO">${data} = {
   "example-action:input":{
      "delay":600
   }
}</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:43.418271" elapsed="0.058116"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.477690" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:43.477449" elapsed="0.000304">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/dataorigaction/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:43.477845" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:43.477098" elapsed="0.000772"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.478180" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.477940" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.478726" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.478418" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.478261" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.477922" elapsed="0.000886"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.481119" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:43.478968" elapsed="0.002178"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:43.481196" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:43.481347" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/dataorigaction/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:43.476779" elapsed="0.004593"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.483239" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/example-action:interfaces/interface=eth1/reset</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.482631" elapsed="0.000672"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.483732" level="INFO">{
   "example-action:input":{
      "delay":600
   }
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.483487" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.484161" level="INFO">{'Content-Type': 'application/yang-data+json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.483921" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.484599" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.484346" elapsed="0.000296"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:43.485467" level="INFO">${accumulator} = {'Content-Type': 'application/yang-data+json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:43.485261" elapsed="0.000233"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:43.485807" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:43.485639" elapsed="0.000193"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.485974" elapsed="0.000183"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.486565" level="INFO">{'Content-Type': 'application/yang-data+json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.486305" elapsed="0.000303"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:43.486649" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:43.486800" level="INFO">${headers} = {'Content-Type': 'application/yang-data+json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:43.484853" elapsed="0.001971"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:43.510587" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/example-action:interfaces/interface=eth1/reset 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/example-action:interfaces/interface=eth1/reset 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/yang-data+json', 'Cookie': 'JSESSIONID=node0fyqmiouh9jkowe7q8s5abeyd5.node0', 'Content-Length': '54', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
   "example-action:input":{
      "delay":600
   }
} 
 </msg>
<msg time="2026-04-05T00:36:43.510701" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/example-action:interfaces/interface=eth1/reset 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:43.511041" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:43.489146" elapsed="0.021955"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.486925" elapsed="0.024277"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.511642" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.511260" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.486906" elapsed="0.024944"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.519586" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.514267" elapsed="0.005420"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.513792" elapsed="0.005975"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.513751" elapsed="0.006070"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.524472" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.520453" elapsed="0.004066"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.519944" elapsed="0.004610"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.519908" elapsed="0.004670"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.525106" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.524733" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.525445" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.525202" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.525975" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.525680" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.525527" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.525185" elapsed="0.000872"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.526584" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.526208" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.526917" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.526679" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.527457" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.527151" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.526998" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.526662" elapsed="0.000876"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:43.527680" elapsed="0.000339"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:43.528477" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.528178" elapsed="0.000326"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.528688" elapsed="0.002318"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:43.512652" elapsed="0.018416"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.531244" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:43.531140" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.531122" elapsed="0.000189"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:43.533814" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:43.531468" elapsed="0.002371"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:43.533887" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:43.534039" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:43.481705" elapsed="0.052358"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:43.534129" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:36:43.534313" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_RFC8040_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:43.329869" elapsed="0.204469"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.534692" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.534459" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.534440" elapsed="0.000371"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:43.534844" elapsed="0.000025"/>
</return>
<arg>${DIRECTORY_WITH_TEMPLATE_FOLDERS}${/}dataorigaction</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.
RFC8040 defines RESTCONF protocol, for configuring data defined in YANG version 1
or YANG version 1.1, using the datastore concepts defined in NETCONF.</doc>
<status status="PASS" start="2026-04-05T00:36:43.325579" elapsed="0.209388"/>
</kw>
<doc>Send a sample test data label into the device and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:43.225164" elapsed="0.309921"/>
</test>
<test id="s1-s5-s1-t8" name="Invoke_Yang1.1_Augmentation_Via_Xml_Post" line="87">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:43.538339" elapsed="0.000224"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:43.538085" elapsed="0.000531"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.539603" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:43.539489" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.539470" elapsed="0.000200"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.544695" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:43.544590" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.544571" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.545751" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:43.545349" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.546261" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:43.545932" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:43.546339" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:43.546513" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:43.544980" elapsed="0.001558"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.551984" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:43.551875" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.551856" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.553239" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:43.553135" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.553117" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:43.553823" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.553468" elapsed="0.000380"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:43.554245" level="INFO">${current_connection_index} = 18</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:43.554002" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:43.607119" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:43.554857" elapsed="0.052437"/>
</kw>
<msg time="2026-04-05T00:36:43.607537" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:43.607584" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.554441" elapsed="0.053221"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:43.640177" level="INFO">"s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n "g "1 ". "1 "_ "A "u "g "m "e "n "t "a "t "i "o "n "_ "V "i "a "_ "X "m "l "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:43.608227" elapsed="0.032169"/>
</kw>
<msg time="2026-04-05T00:36:43.640609" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:43.640654" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.607836" elapsed="0.032855"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.641001" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.640777" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.640754" elapsed="0.000349"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.641638" level="INFO"> "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n "g "1 ". "1 "_ "A "u "g "m "e "n "t "a "t "i "o "n "_ "V "i "a "_ "X "m "l "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.641241" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.641992" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.641783" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.641765" elapsed="0.000325"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:43.642122" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:43.645101" elapsed="0.000144"/>
</kw>
<msg time="2026-04-05T00:36:43.645317" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:43.644481" elapsed="0.000935"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.646364" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.647354" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:43.642997" elapsed="0.004550"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:43.642376" elapsed="0.005289"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:43.552836" elapsed="0.094928"/>
</kw>
<msg time="2026-04-05T00:36:43.647855" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:43.647898" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.552199" elapsed="0.095736"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:43.648288" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:43.648013" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.647994" elapsed="0.000379"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.648786" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.649121" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.649192" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:43.551537" elapsed="0.097761"/>
</kw>
<msg time="2026-04-05T00:36:43.649389" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:43.649463" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.546974" elapsed="0.102528"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.649859" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.649578" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.649560" elapsed="0.000378"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:43.546824" elapsed="0.103138"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:43.546592" elapsed="0.103399"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:43.544219" elapsed="0.105825"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:43.539190" elapsed="0.110908"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.538773" elapsed="0.111370"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:43.535980" elapsed="0.114215"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.650809" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.650356" elapsed="0.000480"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.684810" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.684432" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.685611" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:43.685320" elapsed="0.000362">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:43.685778" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:43.684996" elapsed="0.000806"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.686341" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:43.685961" elapsed="0.000406"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.686703" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:43.686922" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/main:cont/augment-main-a:cont1/reset
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:43.686566" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.687358" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/main:cont/augment-main-a:cont1/reset
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.687115" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.688389" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.688130" elapsed="0.000334"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.688883" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.688622" elapsed="0.000287"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.689748" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:43.689251" elapsed="0.000523"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:43.690553" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.690277" elapsed="0.000303"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:43.690631" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:43.690782" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:43.689961" elapsed="0.000846"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.690957" elapsed="0.000228"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:43.689122" elapsed="0.002104"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.691964" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:43.691519" elapsed="0.000470"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:43.692735" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.692499" elapsed="0.000262"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:43.692811" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:43.692959" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:43.692172" elapsed="0.000811"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.693128" elapsed="0.000222"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:43.691373" elapsed="0.002019"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:43.688957" elapsed="0.004484"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:43.693485" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:43.693640" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:43.687808" elapsed="0.005858"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.687499" elapsed="0.006198"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.693864" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.693721" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.687479" elapsed="0.006459"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.694663" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/main:cont/augment-main-a:cont1/reset</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.694074" elapsed="0.000618"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:43.694740" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:43.683813" elapsed="0.011050"/>
</kw>
<msg time="2026-04-05T00:36:43.694915" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:43.671063" elapsed="0.023898"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.707312" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.719728" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.732124" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.732310" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.732495" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.732889" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.732714" elapsed="0.000232"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:43.732699" elapsed="0.000271"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.733107" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.733269" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.733443" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:43.732670" elapsed="0.000828"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.732571" elapsed="0.000958"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.733703" elapsed="0.000023"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.733780" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:36:43.733900" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/main:cont/augment-main-a:cont1/reset</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:43.666467" elapsed="0.067459"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.759239" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.758870" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.759973" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:43.759767" elapsed="0.000269">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:43.760128" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:43.759438" elapsed="0.000715"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.760703" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:43.760310" elapsed="0.000420"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.761015" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:43.761155" level="INFO">${template} = &lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;input xmlns="ns:augment:main:a"&gt;
  &lt;delay&gt;600&lt;/delay&gt;
&lt;/input&gt;

</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:43.760884" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.761594" level="INFO">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;input xmlns="ns:augment:main:a"&gt;
  &lt;delay&gt;600&lt;/delay&gt;
&lt;/input&gt;

</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.761334" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:43.761990" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.761706" elapsed="0.000342"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.762545" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.762213" elapsed="0.000365"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.762073" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.761688" elapsed="0.000961"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.763234" level="INFO">${final_text} = &lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;input xmlns="ns:augment:main:a"&gt;
  &lt;delay&gt;600&lt;/delay&gt;
&lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.762803" elapsed="0.000460"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:43.763311" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:43.758228" elapsed="0.005221"/>
</kw>
<msg time="2026-04-05T00:36:43.763563" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:43.745544" elapsed="0.018080"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.776144" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.788629" elapsed="0.000033"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.801139" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.801328" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.801511" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.801867" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.801727" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:43.801713" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.802081" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.802241" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.802415" elapsed="0.000035"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:43.801684" elapsed="0.000800"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.801586" elapsed="0.000924"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.802654" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.802729" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:43.802847" level="INFO">${data} = &lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;input xmlns="ns:augment:main:a"&gt;
  &lt;delay&gt;600&lt;/delay&gt;
&lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:43.744677" elapsed="0.058197"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:43.804117" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:43.803867" elapsed="0.000346">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:43.804307" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:43.803529" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.804655" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.804401" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.805182" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.804894" elapsed="0.000313"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.804736" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.804383" elapsed="0.000880"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.807603" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:43.805407" elapsed="0.002222"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:43.807679" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:43.807831" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:43.803197" elapsed="0.004658"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.809347" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/main:cont/augment-main-a:cont1/reset</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.809101" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.809796" level="INFO">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;input xmlns="ns:augment:main:a"&gt;
  &lt;delay&gt;600&lt;/delay&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.809558" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.810226" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.809986" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.810693" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.810446" elapsed="0.000289"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:43.811533" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:43.811326" elapsed="0.000233"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:43.811875" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:43.811706" elapsed="0.000194"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.812049" elapsed="0.000196"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.812660" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.812397" elapsed="0.000307"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:43.812746" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:43.812897" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:43.810931" elapsed="0.001991"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:43.845730" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/main:cont/augment-main-a:cont1/reset 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/main:cont/augment-main-a:cont1/reset 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0fyqmiouh9jkowe7q8s5abeyd5.node0', 'Content-Length': '102', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;input xmlns="ns:augment:main:a"&gt;
  &lt;delay&gt;600&lt;/delay&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-05T00:36:43.845841" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/main:cont/augment-main-a:cont1/reset 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:43.846035" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:43.815299" elapsed="0.030791"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.812991" elapsed="0.033195"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.846654" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.846244" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.812974" elapsed="0.033877"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.854620" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.849229" elapsed="0.005487"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.848752" elapsed="0.006044"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.848711" elapsed="0.006139"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.857546" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.855265" elapsed="0.002338"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.854972" elapsed="0.002674"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.854936" elapsed="0.002740"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.858215" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.857843" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.858593" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.858325" elapsed="0.000340"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.859145" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.858849" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.858695" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.858307" elapsed="0.000919"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.859750" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.859376" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.860070" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.859845" elapsed="0.000281"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.860636" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:43.860301" elapsed="0.000367"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:43.860149" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.859828" elapsed="0.000906"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:43.860878" elapsed="0.000338"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:43.861696" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:43.861374" elapsed="0.000348"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.861872" elapsed="0.002313"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:43.847753" elapsed="0.016493"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:43.864437" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-05T00:36:43.864319" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.864301" elapsed="0.000224"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.864673" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.864741" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:43.867081" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:43.808171" elapsed="0.058936"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:43.867176" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:43.867324" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:43.655556" elapsed="0.211792"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.867693" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.867463" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.867446" elapsed="0.000376"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:43.867854" elapsed="0.000026"/>
</return>
<arg>${DIRECTORY_WITH_TEMPLATE_FOLDERS}${/}augment</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:43.651089" elapsed="0.216887"/>
</kw>
<doc>Send a sample test data label into the device and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:43.535438" elapsed="0.332651"/>
</test>
<test id="s1-s5-s1-t9" name="Invoke_Yang1.1_Augmentation_Via_Json_Post" line="92">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:43.871465" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:43.871198" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.872686" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:43.872579" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.872560" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.877757" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:43.877648" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.877628" elapsed="0.000196"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.878839" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:43.878460" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.879311" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:43.879019" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:43.879381" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:43.879554" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:43.878043" elapsed="0.001536"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.885572" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:43.885452" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.885417" elapsed="0.000229"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.886869" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:43.886763" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.886745" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:43.887447" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.887074" elapsed="0.000400"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:43.887879" level="INFO">${current_connection_index} = 18</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:43.887634" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:43.947547" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:43.888570" elapsed="0.059149"/>
</kw>
<msg time="2026-04-05T00:36:43.947889" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:43.947934" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.888161" elapsed="0.059809"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:43.980672" level="INFO">"s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n "g "1 ". "1 "_ "A "u "g "m "e "n "t "a "t "i "o "n "_ "V "i "a "_ "J "s "o "n "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:43.948539" elapsed="0.032317"/>
</kw>
<msg time="2026-04-05T00:36:43.981023" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:43.981068" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.948137" elapsed="0.032968"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.981472" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.981231" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.981210" elapsed="0.000366"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.982103" level="INFO"> "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n "g "1 ". "1 "_ "A "u "g "m "e "n "t "a "t "i "o "n "_ "V "i "a "_ "J "s "o "n "_ "P "o "s "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:43.981713" elapsed="0.000466"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.982473" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.982245" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.982228" elapsed="0.000345"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:43.982605" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:43.985793" elapsed="0.000150"/>
</kw>
<msg time="2026-04-05T00:36:43.986014" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:43.984924" elapsed="0.001229"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.987094" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.988036" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:43.983460" elapsed="0.004691"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:43.982858" elapsed="0.005408"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:43.886460" elapsed="0.101904"/>
</kw>
<msg time="2026-04-05T00:36:43.988472" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:43.988517" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.885795" elapsed="0.102759"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:43.988736" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:36:43.988630" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.988612" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.989201" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.989544" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:43.989615" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:43.885069" elapsed="0.104652"/>
</kw>
<msg time="2026-04-05T00:36:43.989813" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:43.989855" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "I "n "v "o "k "e "_ "Y "a "n ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.879935" elapsed="0.109957"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:43.990225" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:43.989965" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:43.989948" elapsed="0.000354"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:43.879796" elapsed="0.110529"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:43.879630" elapsed="0.110724"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:43.877155" elapsed="0.113251"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:43.872280" elapsed="0.118213"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:43.871869" elapsed="0.118667"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:43.868964" elapsed="0.121666"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:43.991212" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:43.990794" elapsed="0.000445"/>
</kw>
<kw name="Post_As_Json_Rfc8040_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.036335" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.035967" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:44.037076" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:44.036862" elapsed="0.000280">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:44.037233" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:44.036536" elapsed="0.000722"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.037811" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:44.037416" elapsed="0.000421"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:44.038141" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:44.038272" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/main:cont/augment-main-a:cont1/reset
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:44.038007" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.038712" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME/yang-ext:mount/main:cont/augment-main-a:cont1/reset
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.038463" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.039687" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.039418" elapsed="0.000314"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.040141" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.039885" elapsed="0.000281"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.040817" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:44.040523" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:44.041592" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.041331" elapsed="0.000287"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:44.041668" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:44.041817" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:44.041024" elapsed="0.000817"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.042005" elapsed="0.000237"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:44.040378" elapsed="0.001904"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.042834" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:44.042538" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:44.043597" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.043349" elapsed="0.000274"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:44.043673" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:44.043820" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:44.043040" elapsed="0.000804"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.043989" elapsed="0.000220"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:44.042392" elapsed="0.001901"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:44.040214" elapsed="0.004117"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:44.044373" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:44.044545" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:44.039105" elapsed="0.005465"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.038824" elapsed="0.005778"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.044856" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.044626" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.038805" elapsed="0.006127"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.045636" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/main:cont/augment-main-a:cont1/reset</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.045067" elapsed="0.000597"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:44.045712" elapsed="0.000027"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:44.035350" elapsed="0.010482"/>
</kw>
<msg time="2026-04-05T00:36:44.045885" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:44.022818" elapsed="0.023114"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.058573" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.070893" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.083361" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.083572" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.083742" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.084095" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.083957" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:44.083943" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.084306" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.084484" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.084645" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:44.083914" elapsed="0.000783"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.083815" elapsed="0.000907"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.084903" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.084980" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:44.085098" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/main:cont/augment-main-a:cont1/reset</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:44.018345" elapsed="0.066779"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.109898" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/post_data.json</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.109506" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:44.110631" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment.titanium/post_data.json' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:44.110411" elapsed="0.000284">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment.titanium/post_data.json' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:44.110787" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:44.110085" elapsed="0.000725"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.111348" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/post_data.json</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:44.110968" elapsed="0.000406"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:44.111685" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment/post_data.json"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment/post_data.json&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:44.111811" level="INFO">${template} = {
   "ns:augment:main:a:input":{
      "delay":600
   }
}
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:44.111550" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.112227" level="INFO">{
   "ns:augment:main:a:input":{
      "delay":600
   }
}
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.111987" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:44.112639" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.112337" elapsed="0.000360"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.113153" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.112863" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.112722" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.112319" elapsed="0.000915"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.113819" level="INFO">${final_text} = {
   "ns:augment:main:a:input":{
      "delay":600
   }
}</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.113373" elapsed="0.000473"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:44.113921" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:44.108885" elapsed="0.005164"/>
</kw>
<msg time="2026-04-05T00:36:44.114100" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:44.096112" elapsed="0.018035"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.126632" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.139067" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.151359" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.151560" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.151729" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.152081" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.151943" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:44.151928" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.152295" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.152470" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.152635" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:44.151900" elapsed="0.000787"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.151801" elapsed="0.000912"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.152852" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.152927" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:44.153039" level="INFO">${data} = {
   "ns:augment:main:a:input":{
      "delay":600
   }
}</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:44.095257" elapsed="0.057808"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:44.154369" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:44.154124" elapsed="0.000324">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/CRUD/augment/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:44.154540" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:44.153762" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.154872" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.154633" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.155454" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.155106" elapsed="0.000375"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.154952" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.154616" elapsed="0.000921"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.158011" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:44.155682" elapsed="0.002355"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:44.158088" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:36:44.158287" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/CRUD-ACTION/../../../variables/netconf/CRUD/augment/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:44.153388" elapsed="0.004924"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.159846" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/main:cont/augment-main-a:cont1/reset</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.159599" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.160278" level="INFO">{
   "ns:augment:main:a:input":{
      "delay":600
   }
}</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.160042" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.160765" level="INFO">{'Content-Type': 'application/yang-data+json'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.160481" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.161191" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.160953" elapsed="0.000281"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:44.162099" level="INFO">${accumulator} = {'Content-Type': 'application/yang-data+json'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:44.161908" elapsed="0.000217"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:44.162457" level="INFO">${items_to_add} = []</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:44.162274" elapsed="0.000210"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.162630" elapsed="0.000187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.163214" level="INFO">{'Content-Type': 'application/yang-data+json'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.162969" elapsed="0.000288"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:44.163298" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:44.163466" level="INFO">${headers} = {'Content-Type': 'application/yang-data+json'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:44.161443" elapsed="0.002049"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:44.198059" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/main:cont/augment-main-a:cont1/reset 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/main:cont/augment-main-a:cont1/reset 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/yang-data+json', 'Cookie': 'JSESSIONID=node0fyqmiouh9jkowe7q8s5abeyd5.node0', 'Content-Length': '57', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body={
   "ns:augment:main:a:input":{
      "delay":600
   }
} 
 </msg>
<msg time="2026-04-05T00:36:44.198164" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device/yang-ext:mount/main:cont/augment-main-a:cont1/reset 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:44.198377" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:44.165811" elapsed="0.032666"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.163568" elapsed="0.035016"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.198974" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.198643" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.163547" elapsed="0.035621"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.206797" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.201473" elapsed="0.005385"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.200965" elapsed="0.005942"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.200924" elapsed="0.006017"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.210690" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.207318" elapsed="0.003436"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.207017" elapsed="0.003785"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.206994" elapsed="0.003842"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.211599" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.211053" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.212053" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.211735" elapsed="0.000398"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.212821" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.212380" elapsed="0.000477"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.212166" elapsed="0.000787"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.211710" elapsed="0.001276"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.213762" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.213203" elapsed="0.000598"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.214214" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.213899" elapsed="0.000395"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.214975" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.214562" elapsed="0.000450"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.214327" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.213874" elapsed="0.001216"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:44.215290" elapsed="0.000507"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:44.216406" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.216021" elapsed="0.000442"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.216675" elapsed="0.002679"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:44.199962" elapsed="0.019455"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.219611" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:44.219506" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.219487" elapsed="0.000189"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:44.222175" level="INFO">${text_normalized} = </msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:44.219815" elapsed="0.002386"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:44.222249" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:44.222400" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:44.158660" elapsed="0.063778"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:44.222508" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:44.222654" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=json</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>content_type=${HEADERS_YANG_RFC8040_JSON}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:44.007416" elapsed="0.215263"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.223009" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.222780" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.222763" elapsed="0.000339"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:44.223133" elapsed="0.000025"/>
</return>
<arg>${DIRECTORY_WITH_TEMPLATE_FOLDERS}${/}augment</arg>
<arg>${mapping}</arg>
<doc>Add arguments sensible for JSON data, return Post_Templated response text.
Optionally, verification against response.json (no iteration) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.
Response status code must be one of values from ${explicit_status_codes} if specified or one of set
created from all positive HTTP status codes together with ${additional_allowed_status_codes}.
RFC8040 defines RESTCONF protocol, for configuring data defined in YANG version 1
or YANG version 1.1, using the datastore concepts defined in NETCONF.</doc>
<status status="PASS" start="2026-04-05T00:36:44.003135" elapsed="0.220118"/>
</kw>
<doc>Send a sample test data label into the device and check that the request went OK.</doc>
<status status="PASS" start="2026-04-05T00:36:43.868365" elapsed="0.354997"/>
</test>
<test id="s1-s5-s1-t10" name="Deconfigure_Device_From_Netconf" line="99">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:44.226591" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:44.226313" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.227854" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:44.227746" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.227727" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.233011" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:44.232905" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.232887" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.234089" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:44.233711" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.234583" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:44.234272" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:44.234653" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:44.234806" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:44.233298" elapsed="0.001532"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.240335" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:44.240229" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.240210" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.241627" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:44.241521" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.241502" elapsed="0.000220"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:44.242226" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.241863" elapsed="0.000390"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:44.242678" level="INFO">${current_connection_index} = 18</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:44.242408" elapsed="0.000296"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:44.274585" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:44.243245" elapsed="0.031516"/>
</kw>
<msg time="2026-04-05T00:36:44.274929" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:44.274975" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:44.242863" elapsed="0.032148"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:44.298471" level="INFO">"s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:44.275623" elapsed="0.023028"/>
</kw>
<msg time="2026-04-05T00:36:44.298819" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:44.298863" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "D "e "c "o "n "f "i "g "u "r ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:44.275178" elapsed="0.023721"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.299191" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.298976" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.298955" elapsed="0.000334"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.299817" level="INFO"> "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.299446" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.300165" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.299955" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.299937" elapsed="0.000326"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:44.300296" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:44.303369" elapsed="0.000164"/>
</kw>
<msg time="2026-04-05T00:36:44.303605" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:44.302722" elapsed="0.000980"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.304629" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.305635" elapsed="0.000043"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:44.301182" elapsed="0.004574"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:44.300560" elapsed="0.005312"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:44.241183" elapsed="0.064788"/>
</kw>
<msg time="2026-04-05T00:36:44.306063" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:44.306107" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "D "e "c "o "n "f "i "g "u "r ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:44.240564" elapsed="0.065579"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:44.306507" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:44.306219" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.306201" elapsed="0.000393"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.307022" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.307352" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.307441" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:44.239894" elapsed="0.067658"/>
</kw>
<msg time="2026-04-05T00:36:44.307645" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:44.307689" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "D "e "c "o "n "f "i "g "u "r ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:44.235185" elapsed="0.072540"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.308045" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.307799" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.307782" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:44.235047" elapsed="0.073096"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:44.234882" elapsed="0.073289"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:44.232543" elapsed="0.075682"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:44.227407" elapsed="0.080872"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:44.226995" elapsed="0.081328"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:44.224197" elapsed="0.084177"/>
</kw>
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:44.327831" elapsed="0.000417"/>
</kw>
<msg time="2026-04-05T00:36:44.328298" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:44.327471" elapsed="0.000875"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:44.327073" elapsed="0.001361"/>
</kw>
<msg time="2026-04-05T00:36:44.328479" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:44.318529" elapsed="0.009994"/>
</kw>
<msg time="2026-04-05T00:36:44.328662" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:44.318195" elapsed="0.010492"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.329602" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.328848" elapsed="0.000783"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.361545" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.361131" elapsed="0.000443"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:44.362294" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:44.362068" elapsed="0.000293">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:44.362476" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:44.361734" elapsed="0.000768"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.363038" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:44.362661" elapsed="0.000404"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:44.363354" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:44.363507" level="INFO">${template} = $RESTCONF_ROOT/operations/netconf-node-topology:delete-device
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:44.363221" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.363927" level="INFO">$RESTCONF_ROOT/operations/netconf-node-topology:delete-device
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.363688" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.364907" level="INFO">mapping: {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.364649" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.365365" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.365107" elapsed="0.000283"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.366276" level="INFO">${value} = 10.30.170.167</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:44.365772" elapsed="0.000530"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:44.367479" level="INFO">${encoded} = 10.30.170.167</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.366986" elapsed="0.000535"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:44.367634" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:44.367858" level="INFO">${encoded_value} = 10.30.170.167</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:44.366520" elapsed="0.001364"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.368033" elapsed="0.000493"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.167</var>
<status status="PASS" start="2026-04-05T00:36:44.365641" elapsed="0.002927"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.369304" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:44.368807" elapsed="0.000523"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:44.370466" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.369977" elapsed="0.000529"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:44.370620" elapsed="0.000063"/>
</return>
<msg time="2026-04-05T00:36:44.370883" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:44.369542" elapsed="0.001367"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.371055" elapsed="0.000505"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:44.368679" elapsed="0.002923"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.372331" level="INFO">${value} = 17830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:44.371840" elapsed="0.000516"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:44.373672" level="INFO">${encoded} = 17830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.373151" elapsed="0.000562"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:44.373826" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:44.374050" level="INFO">${encoded_value} = 17830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:44.372712" elapsed="0.001364"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.374223" elapsed="0.000490"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">17830</var>
<status status="PASS" start="2026-04-05T00:36:44.371712" elapsed="0.003043"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.375569" level="INFO">${value} = admin</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:44.374994" elapsed="0.000601"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:44.376692" level="INFO">${encoded} = admin</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.376203" elapsed="0.000529"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:44.376843" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:44.377064" level="INFO">${encoded_value} = admin</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:44.375776" elapsed="0.001313"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.377237" elapsed="0.000516"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">admin</var>
<status status="PASS" start="2026-04-05T00:36:44.374867" elapsed="0.002927"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.378543" level="INFO">${value} = topsecret</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:44.378032" elapsed="0.000539"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:44.379752" level="INFO">${encoded} = topsecret</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.379182" elapsed="0.000610"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:44.379904" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:44.380123" level="INFO">${encoded_value} = topsecret</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:44.378751" elapsed="0.001397"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.380293" elapsed="0.000485"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">topsecret</var>
<status status="PASS" start="2026-04-05T00:36:44.377905" elapsed="0.002915"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.381573" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:44.381056" elapsed="0.000543"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:44.382839" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.382204" elapsed="0.000674"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:44.382991" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:44.383213" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:44.381777" elapsed="0.001461"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.383385" elapsed="0.000563"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:36:44.380929" elapsed="0.003060"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.384747" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:44.384226" elapsed="0.000547"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:44.385904" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.385378" elapsed="0.000566"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:44.386060" elapsed="0.000075"/>
</return>
<msg time="2026-04-05T00:36:44.386336" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:44.384950" elapsed="0.001411"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.386526" elapsed="0.000481"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:36:44.384099" elapsed="0.002951"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.387900" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:36:44.387288" elapsed="0.000638"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:36:44.389153" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.388554" elapsed="0.000640"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:36:44.389311" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:44.389738" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:36:44.388107" elapsed="0.001656"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.389912" elapsed="0.000697"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:36:44.387161" elapsed="0.003491"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:36:44.365454" elapsed="0.025233"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:36:44.390730" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:44.390889" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:36:44.364318" elapsed="0.026597"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.364037" elapsed="0.026909"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.391114" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.390970" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.364019" elapsed="0.027168"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.392061" level="INFO">${final_text} = /rests/operations/netconf-node-topology:delete-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.391321" elapsed="0.000767"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:44.392138" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:44.360530" elapsed="0.031730"/>
</kw>
<msg time="2026-04-05T00:36:44.392312" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:44.348058" elapsed="0.044301"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.405589" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.417877" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.430230" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.430477" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.430651" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.431007" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.430869" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:44.430854" elapsed="0.000232"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.431220" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.431380" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.431557" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:44.430825" elapsed="0.000786"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.430725" elapsed="0.000911"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.431784" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.431860" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:44.431971" level="INFO">${uri} = /rests/operations/netconf-node-topology:delete-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:44.343861" elapsed="0.088135"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.456301" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.455931" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:44.457035" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:44.456830" elapsed="0.000268">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:44.457189" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:44.456502" elapsed="0.000710"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.457798" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:44.457399" elapsed="0.000426"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:44.458113" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:44.458246" level="INFO">${template} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
 &lt;/input&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:44.457980" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.458682" level="INFO">&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
 &lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.458440" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:36:44.459077" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.458792" elapsed="0.000343"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.459618" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '17830', 'DEVICE_USER': 'admin', 'DEVICE_PASSWORD': 'topsecret', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/t...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.459301" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.459160" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.458774" elapsed="0.000927"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.460550" level="INFO">${final_text} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
 &lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.459879" elapsed="0.000705"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:36:44.460633" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:36:44.455314" elapsed="0.005442"/>
</kw>
<msg time="2026-04-05T00:36:44.460809" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:44.442838" elapsed="0.018019"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.473317" elapsed="0.000051"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.485693" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.498016" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.498206" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.498376" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.498752" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.498610" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:36:44.498596" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.498965" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.499228" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.499395" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:36:44.498566" elapsed="0.000902"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.498466" elapsed="0.001028"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.499635" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.499709" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:44.499825" level="INFO">${data} = &lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
 &lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:36:44.441984" elapsed="0.057869"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:36:44.501134" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:36:44.500891" elapsed="0.000306">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/rpc-delete-device/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:36:44.501303" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:36:44.500557" elapsed="0.000772"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.501658" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.501399" elapsed="0.000316"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.502189" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.501898" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.501740" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.501381" elapsed="0.000889"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.504590" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:44.502418" elapsed="0.002198"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:36:44.504667" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:44.504819" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/rpc-delete-device/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:44.500220" elapsed="0.004623"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.506454" level="INFO">/rests/operations/netconf-node-topology:delete-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.506127" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.506888" level="INFO">&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
 &lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.506650" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.507320" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.507079" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.507767" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.507523" elapsed="0.000287"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:44.508599" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:36:44.508395" elapsed="0.000230"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:36:44.508943" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:36:44.508772" elapsed="0.000196"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.509111" elapsed="0.000212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.509742" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.509494" elapsed="0.000292"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:36:44.509828" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:44.509980" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:36:44.508004" elapsed="0.002000"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.512382" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.510074" elapsed="0.002390"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:44.529226" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/operations/netconf-node-topology:delete-device 
 path_url=/rests/operations/netconf-node-topology:delete-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0fyqmiouh9jkowe7q8s5abeyd5.node0', 'Content-Length': '106', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="urn:opendaylight:netconf-node-topology"&gt;
   &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
 &lt;/input&gt; 
 </msg>
<msg time="2026-04-05T00:36:44.529361" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/operations/netconf-node-topology:delete-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:44.529606" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:44.512639" elapsed="0.017025"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.512490" elapsed="0.017368"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.510056" elapsed="0.019859"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.536005" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.532215" elapsed="0.003850"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.531738" elapsed="0.004376"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.531698" elapsed="0.004450"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.539742" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.536545" elapsed="0.003260"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.536224" elapsed="0.003629"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.536201" elapsed="0.003686"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.540646" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.540103" elapsed="0.000581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.541220" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.540896" elapsed="0.000445"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.542036" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.541620" elapsed="0.000453"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.541374" elapsed="0.000748"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.540868" elapsed="0.001283"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.542889" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.542362" elapsed="0.000564"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.543334" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.543021" elapsed="0.000390"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.544095" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.543688" elapsed="0.000443"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.543466" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.542996" elapsed="0.001213"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:44.544407" elapsed="0.000497"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:44.545573" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.545126" elapsed="0.000474"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.545750" elapsed="0.002301"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:44.530739" elapsed="0.017373"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:36:44.548288" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:44.548184" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.548166" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.548532" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.548605" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:36:44.550863" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:44.505161" elapsed="0.045729"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:44.550958" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:44.551108" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:36:44.332714" elapsed="0.218418"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.551525" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.551233" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.551216" elapsed="0.000403"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:44.551652" elapsed="0.000026"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:36:44.330032" elapsed="0.221742"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.329720" elapsed="0.222095"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.552082" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.551840" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.329702" elapsed="0.222467"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.552306" elapsed="0.000252"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<arg>device_type=${DEVICE_TYPE_RPC_DELETE}</arg>
<arg>http_timeout=2</arg>
<arg>http_method=post</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:36:44.308681" elapsed="0.243946"/>
</kw>
<doc>Make request to deconfigure the testtool device on Netconf connector.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:44.223647" elapsed="0.329097"/>
</test>
<test id="s1-s5-s1-t11" name="Check_Device_Going_To_Be_Gone_After_Deconfiguring" line="109">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:44.558666" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:44.558385" elapsed="0.000543"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.559894" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:44.559788" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.559768" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.564830" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:44.564726" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.564708" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.565904" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:44.565525" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.566387" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:44.566090" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:44.566473" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:44.566625" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:44.565113" elapsed="0.001536"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.572015" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:44.571910" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.571891" elapsed="0.000190"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.573278" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:44.573158" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.573140" elapsed="0.000204"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:44.573861" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.573505" elapsed="0.000382"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:44.574279" level="INFO">${current_connection_index} = 18</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:44.574039" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:44.611269" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:44.574858" elapsed="0.036600"/>
</kw>
<msg time="2026-04-05T00:36:44.611629" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:44.611724" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:44.574473" elapsed="0.037291"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:44.646708" level="INFO">"s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "G "o "i "n "g "_ "T "o "_ "B "e "_ "G "o "n "e "_ "A "f "t "e "r "_ "D "e "c "o "n "f "i "g "u "r "i "n "[78Cg "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:44.612321" elapsed="0.034575"/>
</kw>
<msg time="2026-04-05T00:36:44.647063" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:44.647107" level="INFO">${message_wait} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:44.611930" elapsed="0.035214"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.647459" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.647221" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.647200" elapsed="0.000360"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.648065" level="INFO"> "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i "c "e "_ "G "o "i "n "g "_ "T "o "_ "B "e "_ "G "o "n "e "_ "A "f "t "e "r "_ "D "e "c "o "n "f "i "g "u "r "i "n "[78Cg "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.647697" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.648435" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.648210" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.648192" elapsed="0.000344"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:44.648570" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:44.651603" elapsed="0.000148"/>
</kw>
<msg time="2026-04-05T00:36:44.651823" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:44.650889" elapsed="0.001033"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.652866" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.653927" elapsed="0.000038"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:44.649433" elapsed="0.004613"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:44.648823" elapsed="0.005340"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:44.572862" elapsed="0.081398"/>
</kw>
<msg time="2026-04-05T00:36:44.654350" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:44.654393" level="INFO">${message} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:44.572226" elapsed="0.082219"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:44.654628" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:36:44.654522" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.654504" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.655092" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.655415" elapsed="0.000039"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.655502" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:44.571578" elapsed="0.084030"/>
</kw>
<msg time="2026-04-05T00:36:44.655699" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:44.655741" level="INFO">${output} =  "s ". "t "x "t ". "C "R "U "D "- "A "C "T "I "O "N ". "C "R "U "D "- "A "C "T "I "O "N ". "C "h "e "c "k "_ "D "e "v "i ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:44.567002" elapsed="0.088776"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.656147" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.655901" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.655882" elapsed="0.000340"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:44.566866" elapsed="0.089378"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:44.566701" elapsed="0.089572"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:44.564357" elapsed="0.091967"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:44.559504" elapsed="0.096872"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:44.559073" elapsed="0.097376"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:44.554691" elapsed="0.101814"/>
</kw>
<kw name="Wait_Device_Fully_Removed" owner="NetconfKeywords">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Completely_Gone" owner="NetconfKeywords">
<kw name="Check_Device_Has_No_Netconf_Connector" owner="NetconfKeywords">
<kw name="Count_Netconf_Connectors_For_Device" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.669529" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.667347" elapsed="0.002210"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.669876" elapsed="0.000022"/>
</kw>
<var name="${nv}"/>
<status status="NOT RUN" start="2026-04-05T00:36:44.669728" elapsed="0.000205"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.669611" elapsed="0.000347"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.670255" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.670020" elapsed="0.000292"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.671046" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.670577" elapsed="0.000496"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.670335" elapsed="0.000774"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.671292" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.671133" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.670003" elapsed="0.001363"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:44.671399" elapsed="0.000041"/>
</return>
<msg time="2026-04-05T00:36:44.671561" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:44.666907" elapsed="0.004679"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:44.671631" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:44.671771" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:44.666416" elapsed="0.005379"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.678973" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.678722" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.679410" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.679168" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:44.690862" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0fyqmiouh9jkowe7q8s5abeyd5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:44.691034" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1181'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}} 
 </msg>
<msg time="2026-04-05T00:36:44.691191" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:44.681606" elapsed="0.009611"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.679538" elapsed="0.011721"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.691457" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.691285" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.679520" elapsed="0.012025"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.714611" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"},{"topology-id":"pcep-topology","topology-types":{"network-topology-pcep:topology-pcep":{}}}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.692553" elapsed="0.022114"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.692315" elapsed="0.022388"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.692295" elapsed="0.022434"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.730159" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.715006" elapsed="0.015201"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.714786" elapsed="0.015456"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.714769" elapsed="0.015498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.730984" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.730606" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.731309" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.731082" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.731891" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.731565" elapsed="0.000353"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.731391" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.731063" elapsed="0.000911"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.732736" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.732127" elapsed="0.000636"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.733074" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.732834" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.733640" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.733307" elapsed="0.000360"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.733155" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.732816" elapsed="0.000907"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:44.733867" elapsed="0.000341"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:36:44.734668" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.734368" elapsed="0.000326"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:44.734842" elapsed="0.002811"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:36:44.691896" elapsed="0.045821"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:36:44.737892" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:44.737786" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.737767" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:36:44.741209" level="INFO">${text_normalized} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:36:44.738101" elapsed="0.003181"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:36:44.741338" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:36:44.741514" level="INFO">${response_text} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:36:44.674410" elapsed="0.067131"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:36:44.741604" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:36:44.741751" level="INFO">${mounts} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology...</msg>
<var>${mounts}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:36:44.672008" elapsed="0.069768"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.742180" level="INFO">{
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "pcep-topology",
    "topology-types": {
     "network-topology-pcep:topology-pcep": {}
    }
   },
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topology-parameters": {
       "encryption": {
        "encryption-alg": [
         "AEAD_AES_128_GCM",
         "AEAD_AES_256_GCM",
         "aes128-cbc",
         "aes128-ctr",
         "aes192-cbc",
         "aes192-ctr",
         "aes256-cbc",
         "aes256-ctr",
         "chacha20-poly1305"
        ]
       },
       "host-key": {
        "host-key-alg": [
         "ecdsa-sha2-nistp256",
         "ecdsa-sha2-nistp384",
         "ecdsa-sha2-nistp521",
         "rsa-sha2-256",
         "rsa-sha2-512",
         "ssh-ed25519",
         "ssh-rsa"
        ]
       },
       "key-exchange": {
        "key-exchange-alg": [
         "curve25519-sha256",
         "curve448-sha512",
         "diffie-hellman-group-exchange-sha256",
         "diffie-hellman-group14-sha256",
         "diffie-hellman-group15-sha512",
         "diffie-hellman-group16-sha512",
         "diffie-hellman-group17-sha512",
         "diffie-hellman-group18-sha512",
         "ecdh-sha2-nistp256",
         "ecdh-sha2-nistp384",
         "ecdh-sha2-nistp521",
         "mlkem1024nistp384-sha384",
         "mlkem768nistp256-sha256",
         "mlkem768x25519-sha256",
         "sntrup761x25519-sha512"
        ]
       },
       "mac": {
        "mac-alg": [
         "hmac-sha1",
         "hmac-sha2-256",
         "hmac-sha2-512"
        ]
       }
      }
     }
    }
   },
   {
    "topology-id": "flow:1"
   },
   {
    "topology-id": "hwvtep:1"
   },
   {
    "topology-id": "ovsdb:1"
   }
  ]
 }
}
</msg>
<arg>${mounts}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:44.741933" elapsed="0.000305"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.742790" level="INFO">${actual_count} = 0</msg>
<var>${actual_count}</var>
<arg>len('''${mounts}'''.split('"node-id": "${device_name}"'))-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.742387" elapsed="0.000430"/>
</kw>
<return>
<value>${actual_count}</value>
<status status="PASS" start="2026-04-05T00:36:44.742862" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:44.743011" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Count all instances of the specified device in the Netconf topology (usually 0 or 1).</doc>
<status status="PASS" start="2026-04-05T00:36:44.658653" elapsed="0.084383"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.743455" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${count}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:36:44.743187" elapsed="0.000325"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Check that there are no instances of the specified device in the Netconf topology.</doc>
<status status="PASS" start="2026-04-05T00:36:44.658195" elapsed="0.085375"/>
</kw>
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.754084" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.751852" elapsed="0.002258"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.754792" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.754461" elapsed="0.000357"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:36:44.754295" elapsed="0.000562"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.755397" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.755083" elapsed="0.000354"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:36:44.754935" elapsed="0.000539"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:36:44.754165" elapsed="0.001338"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.756264" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:44.755804" elapsed="0.000486"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:44.755567" elapsed="0.000758"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.756535" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.756353" elapsed="0.000237"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.756768" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:44.756614" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.755549" elapsed="0.001328"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:44.756912" elapsed="0.000044"/>
</return>
<msg time="2026-04-05T00:36:44.757084" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:44.751390" elapsed="0.005719"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:44.757155" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:36:44.757295" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>config</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:44.750842" elapsed="0.006477"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:44.765353" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0fyqmiouh9jkowe7q8s5abeyd5.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:44.765483" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-05T00:36:44.765579" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:44.758136" elapsed="0.007469"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-05T00:36:44.770327" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-05T00:36:44.765685" elapsed="0.004725"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:44.765666" elapsed="0.004808"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.770682" elapsed="0.000030"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:44.770907" elapsed="0.000028"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config in default using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-05T00:36:44.757728" elapsed="0.013286"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device has no Netconf connectors nor associated data.</doc>
<status status="PASS" start="2026-04-05T00:36:44.657705" elapsed="0.113386"/>
</kw>
<arg>${timeout}</arg>
<arg>${period}</arg>
<arg>Check_Device_Completely_Gone</arg>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:44.657123" elapsed="0.114037"/>
</kw>
<arg>${DEVICE_NAME}</arg>
<doc>Wait until all netconf connectors for the device with the given name disappear.
Call of Remove_Device_From_Netconf returns before netconf gets
around deleting the device's connector. To ensure the device is
really gone from netconf, use this keyword to make sure all
connectors disappear. If a call to Remove_Device_From_Netconf
is not made before using this keyword, the wait will fail.
Using this keyword is more readable than putting the WUKS below
into a test case.</doc>
<status status="PASS" start="2026-04-05T00:36:44.656704" elapsed="0.114542"/>
</kw>
<doc>Check that the device is really going to be gone. Fail
if found after one minute. This is an expected behavior as the
delete request is sent to the config subsystem which then triggers
asynchronous destruction of the netconf connector referring to the
device and the device's data. This test makes sure this
asynchronous operation does not take unreasonable amount of time
by making sure that both the netconf connector and the device's
data is gone before reporting success.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:44.553230" elapsed="0.218167"/>
</test>
<kw name="Teardown_Everything" type="TEARDOWN">
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:44.772753" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-05T00:36:44.772650" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Stop_Testtool" owner="NetconfKeywords">
<kw name="Write_Bare_Ctrl_C" owner="RemoteBash">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:44.774919" level="INFO">${ctrl_c} = </msg>
<var>${ctrl_c}</var>
<arg>chr(int(3))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:44.774479" elapsed="0.000478"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>${ctrl_c}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:44.775164" elapsed="0.000336"/>
</kw>
<doc>Construct ctrl+c character and SSH-write it (without endline) to the current SSH connection.
Do not read anything yet.</doc>
<status status="PASS" start="2026-04-05T00:36:44.774038" elapsed="0.001544"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-05T00:36:45.110404" level="INFO">[?2004l^C[?2004h[jenkins@releng-10549-81-1-docker-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-05T00:36:44.775780" elapsed="0.334721"/>
</kw>
<kw name="Get File" owner="SSHLibrary">
<msg time="2026-04-05T00:36:45.168660" level="INFO">'testtool--netconf-userfeatures-txt-CRUD-ACTION-CRUD-ACTION.1775349395.299.log' -&gt; '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/testtool--netconf-userfeatures-txt-CRUD-ACTION-CRUD-ACTION.1775349395.299.log'</msg>
<arg>${testtool_log}</arg>
<doc>Downloads file(s) from the remote machine to the local machine.</doc>
<status status="PASS" start="2026-04-05T00:36:45.110664" elapsed="0.058198"/>
</kw>
<doc>Stop testtool and download its log.</doc>
<status status="PASS" start="2026-04-05T00:36:44.773687" elapsed="0.395279"/>
</kw>
<arg>NetconfKeywords.Stop_Testtool</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:44.773135" elapsed="0.395883"/>
</kw>
<doc>Teardown the test infrastructure, perform cleanup and release all resources.</doc>
<status status="PASS" start="2026-04-05T00:36:44.772332" elapsed="0.396744"/>
</kw>
<doc>netconf-connector CRUD-Action test suite.

Copyright (c) 2019 Ericsson Software Technology AB. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html


Perform basic operations (Create, Read, Update and Delete or CRUD) on device
data mounted onto a netconf connector using RPC for node supporting Yang 1.1
addition and see if invoking Action Operation work.</doc>
<status status="PASS" start="2026-04-05T00:36:32.492055" elapsed="12.677056"/>
</suite>
<status status="PASS" start="2026-04-05T00:36:32.489248" elapsed="12.681436"/>
</suite>
<suite id="s1-s6" name="Notifications" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/notifications">
<suite id="s1-s6-s1" name="Notifications Basic" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/notifications/notifications_basic.robot">
<kw name="Setup_Everything" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.273290" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:45.265929" elapsed="0.007444"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-05T00:36:45.265340" elapsed="0.008159"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.280468" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-05T00:36:45.275067" elapsed="0.005443"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-05T00:36:45.280772" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:45.280625" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.280596" elapsed="0.000250"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.281368" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:45.281005" elapsed="0.000406"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.281904" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-05T00:36:45.281591" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-05T00:36:45.282462" elapsed="0.000301"/>
</kw>
<msg time="2026-04-05T00:36:45.282862" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:45.282909" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:45.282095" elapsed="0.000836"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.283520" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:45.283118" elapsed="0.000429"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.284601" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:45.284306" elapsed="0.000322"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.285030" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:45.284776" elapsed="0.000279"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.285530" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:36:45.285212" elapsed="0.000346"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:45.288974" elapsed="0.000221"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.289693" level="INFO">${member_ip} = 10.30.170.184</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:45.289354" elapsed="0.000366"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:45.289870" elapsed="0.000226"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.290885" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:45.290593" elapsed="0.000319"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:36:45.290959" elapsed="0.000039"/>
</return>
<msg time="2026-04-05T00:36:45.291122" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:36:45.290287" elapsed="0.000859"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:45.291759" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4cfaff250&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:36:45.291301" elapsed="0.000692"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-05T00:36:45.292155" elapsed="0.000217"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-05T00:36:45.288389" elapsed="0.004059"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:45.288196" elapsed="0.004299"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-05T00:36:45.285621" elapsed="0.006908"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.293091" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:45.292692" elapsed="0.000442"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.293714" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.184'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:45.293295" elapsed="0.000463"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.294300" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:45.293917" elapsed="0.000425"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-05T00:36:45.283837" elapsed="0.010561"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-05T00:36:45.274587" elapsed="0.019895"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:45.294680" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:45.294559" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.294539" elapsed="0.000207"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.297832" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:45.297447" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.298314" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:45.298015" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:45.298384" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:45.298710" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:45.297104" elapsed="0.001632"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:45.299869" level="INFO">${member_ip} = 10.30.170.184</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:45.299589" elapsed="0.000308"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:45.300720" level="INFO">index=18
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:45.300824" level="INFO">${current_connection} = index=18
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:45.300528" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.304978" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:45.304272" elapsed="0.000812"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.304225" elapsed="0.000930"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:45.305774" level="INFO">index=18
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:45.306046" level="INFO">${current_ssh_connection} = index=18
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:45.305440" elapsed="0.000707"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.307146" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.184" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:45.306413" elapsed="0.000966"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:45.308480" level="INFO">${conn_id} = 21</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:45.307680" elapsed="0.000906"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.309974" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:36:45.310051" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:36:45.309693" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:45.310278" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:36:45.311663" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:36:45.639759" 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 Apr  5 00:36:16 UTC 2026

  System load:  0.59               Processes:             128
  Usage of /:   11.1% of 77.35GB   Users logged in:       1
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:36:34 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:36:45.311324" elapsed="0.328625"/>
</kw>
<msg time="2026-04-05T00:36:45.640068" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:45.310947" elapsed="0.329249"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:36:45.308956" elapsed="0.331588"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:45.641695" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-05T00:36:45.654281" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-05T00:36:45.654934" level="INFO">${stdout} = </msg>
<msg time="2026-04-05T00:36:45.655247" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:45.641037" elapsed="0.014467"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:36:45.656145" elapsed="0.001141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.659837" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:45.658622" elapsed="0.001584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-05T00:36:45.661015" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:45.660619" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.660514" elapsed="0.000701"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-05T00:36:45.661771" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-05T00:36:45.661399" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.661344" elapsed="0.000674"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-05T00:36:45.662143" elapsed="0.000023"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:45.667987" elapsed="0.000206"/>
</kw>
<msg time="2026-04-05T00:36:45.668254" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:45.667238" elapsed="0.001149"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.669008" elapsed="0.000052"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.669384" elapsed="0.000068"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:45.662943" elapsed="0.006676"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-05T00:36:45.303181" elapsed="0.367024"/>
</kw>
<msg time="2026-04-05T00:36:45.670507" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:45.302184" elapsed="0.368402"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:36:45.301558" elapsed="0.369142"/>
</kw>
<msg time="2026-04-05T00:36:45.670758" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:45.301009" elapsed="0.369812"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:45.674922" elapsed="0.000171"/>
</kw>
<msg time="2026-04-05T00:36:45.675136" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:45.674093" elapsed="0.001104"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.675354" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.675667" elapsed="0.000040"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:45.671264" elapsed="0.004509"/>
</kw>
<msg time="2026-04-05T00:36:45.675867" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-05T00:36:45.300117" elapsed="0.375775"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.676321" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:45.676069" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:36:45.676406" elapsed="0.000100"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-05T00:36:45.299181" elapsed="0.377424"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:45.298948" elapsed="0.377694"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:45.298792" elapsed="0.377885"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-05T00:36:45.294964" elapsed="0.381769"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-05T00:36:45.676886" elapsed="0.000209"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:45.690578" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:45.690463" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.690441" elapsed="0.000209"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:45.690923" level="INFO">index=18
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:45.691026" level="INFO">${current_ssh_connection_object} = index=18
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:45.690804" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.691517" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:45.691202" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.692052" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:45.691758" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:45.692890" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-05T00:36:45.692634" elapsed="0.000367">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-05T00:36:45.693107" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-05T00:36:45.693151" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:45.692254" elapsed="0.000920"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.693493" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:45.693250" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.693231" elapsed="0.000361"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:45.694336" level="INFO">${ip_address} = 10.30.170.184</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:45.694071" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-05T00:36:45.694480" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:36:45.694635" level="INFO">${odl_ip} = 10.30.170.184</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-05T00:36:45.693795" elapsed="0.000865"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:45.694812" elapsed="0.000443"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:45.695784" level="INFO">index=22
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:45.695890" level="INFO">${karaf_connection_object} = index=22
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:45.695440" elapsed="0.000477"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:45.696070" elapsed="0.002163"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-05T00:36:45.698685" level="INFO">Logging into '10.30.170.184:8101' as 'karaf'.</msg>
<msg time="2026-04-05T00:36:45.848904" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-05T00:36:45.698400" elapsed="0.150731"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:45.853612" elapsed="0.000233"/>
</kw>
<msg time="2026-04-05T00:36:45.853996" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:45.853025" elapsed="0.001056"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.854245" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.854406" elapsed="0.000039"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:45.850526" elapsed="0.003988"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:45.849677" elapsed="0.004885"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-05T00:36:45.690161" elapsed="0.164455"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:36:45.677819" elapsed="0.176846"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:45.677453" elapsed="0.177267"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:45.677299" elapsed="0.177463"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-05T00:36:45.677152" elapsed="0.177650"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-05T00:36:45.273936" elapsed="0.580936"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:45.859528" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:45.859368" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.859342" elapsed="0.000263"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:45.864411" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:45.864304" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.864286" elapsed="0.000207"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.865479" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:45.865048" elapsed="0.000468"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.866066" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:45.865759" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:45.866136" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:36:45.866291" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:45.864718" elapsed="0.001598"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:45.871696" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:45.871588" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.871568" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:45.873064" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:45.872889" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.872871" elapsed="0.000332"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:45.873782" level="INFO">${karaf_connection_index} = 22</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:45.873348" elapsed="0.000474"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:45.874292" level="INFO">${current_connection_index} = 18</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:45.874054" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:45.905490" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "n "e "t "[78Cc "[A[78Co</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:45.876135" elapsed="0.029503"/>
</kw>
<msg time="2026-04-05T00:36:45.905800" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:45.905875" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:45.874576" elapsed="0.031350"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:45.969405" level="INFO">"n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "n "e "t "c "o "n "f "/ "n "o "t "i "f "i "c "a "t "i "o "n "s "[78C/ "[A[78Cn
 "o "t "i "f "i "c "a "t "i "o "n "s "_ "b "a "s "i "c ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:45.907706" elapsed="0.062000"/>
</kw>
<msg time="2026-04-05T00:36:45.969949" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:45.970025" level="INFO">${message_wait} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:45.906189" elapsed="0.063889"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.970797" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:45.970302" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.970256" elapsed="0.000724"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.971842" level="INFO"> "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "n "e "t "c "o "n "f "/ "n "o "t "i "f "i "c "a "t "i "o "n "s "[78C/ "[A[78Cn
 "o "t "i "f "i "c "a "t "i "o "n "s "_ "b "a "s "i "c ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:45.971130" elapsed="0.000841"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.972417" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:45.972100" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.972079" elapsed="0.000527"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:45.972644" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:45.975543" elapsed="0.000157"/>
</kw>
<msg time="2026-04-05T00:36:45.975745" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:45.974715" elapsed="0.001099"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.976020" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.976284" elapsed="0.000022"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:45.973970" elapsed="0.002504"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:45.972982" elapsed="0.003587"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:45.872541" elapsed="0.104125"/>
</kw>
<msg time="2026-04-05T00:36:45.976808" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:45.976885" level="INFO">${message} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:45.871914" elapsed="0.105011"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:45.977127" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:45.977003" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.976984" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.977688" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.978079" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:45.978152" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:45.871256" elapsed="0.107003"/>
</kw>
<msg time="2026-04-05T00:36:45.978353" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:45.978395" level="INFO">${output} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:45.866730" elapsed="0.111728"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:45.978788" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:45.978538" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.978520" elapsed="0.000345"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:45.866583" elapsed="0.112305"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:45.866375" elapsed="0.112545"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:45.863996" elapsed="0.114981"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-05T00:36:45.855548" elapsed="0.123487"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:45.855031" elapsed="0.124047"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-05T00:36:45.264556" elapsed="0.714575"/>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:45.994073" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:45.993930" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.993903" elapsed="0.000258"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:45.994563" level="INFO">index=18
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:45.994688" level="INFO">${current_ssh_connection_object} = index=18
host=10.30.170.167
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:45.994371" elapsed="0.000344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.995207" level="INFO">{1: 22}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:45.994876" elapsed="0.000376"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:45.995692" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:45.995440" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:45.996316" elapsed="0.000202"/>
</kw>
<msg time="2026-04-05T00:36:45.996619" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:45.996665" level="INFO">${old_connection_index} = 22</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:45.995902" elapsed="0.000785"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:45.997668" elapsed="0.000141"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:46.012298" level="INFO">logout</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:45.998302" elapsed="0.014164"/>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:45.997976" elapsed="0.014575"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:36:46.013279" elapsed="0.000605"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:46.012840" elapsed="0.001095"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-05T00:36:45.997114" elapsed="0.016874"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:45.996763" elapsed="0.017281"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:45.996744" elapsed="0.017338"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:46.015054" level="INFO">${ip_address} = 10.30.170.184</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:46.014753" elapsed="0.000327"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-05T00:36:46.015136" elapsed="0.000047"/>
</return>
<msg time="2026-04-05T00:36:46.015338" level="INFO">${odl_ip} = 10.30.170.184</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-05T00:36:46.014363" elapsed="0.001000"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:46.015543" elapsed="0.000475"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:46.016316" level="INFO">index=23
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:36:46.016419" level="INFO">${karaf_connection_object} = index=23
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:36:46.016193" elapsed="0.000269"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:36:46.016612" elapsed="0.002776"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-05T00:36:46.019836" level="INFO">Logging into '10.30.170.184:8101' as 'karaf'.</msg>
<msg time="2026-04-05T00:36:46.158547" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-05T00:36:46.019572" elapsed="0.139146"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:46.163007" elapsed="0.000169"/>
</kw>
<msg time="2026-04-05T00:36:46.163221" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:46.162517" elapsed="0.000780"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:46.163699" elapsed="0.000107"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:46.164232" elapsed="0.000047"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:46.160037" elapsed="0.004486"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:46.159222" elapsed="0.005427"/>
</kw>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-05T00:36:45.992108" elapsed="0.172666"/>
</kw>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:46.176053" level="INFO">${tools_connection} = 24</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:36:46.175109" elapsed="0.001009"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:36:46.179923" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:36:46.180001" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:36:46.179618" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:46.180185" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:36:46.181681" level="INFO">Logging into '10.30.170.167:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:36:46.730859" 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 Apr  5 00:36:46 UTC 2026

  System load:  0.67               Processes:             118
  Usage of /:   20.7% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.167
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:36:35 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-1-docker-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:36:46.181088" elapsed="0.549914"/>
</kw>
<msg time="2026-04-05T00:36:46.731085" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:46.180727" elapsed="0.550439"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:36:46.178548" elapsed="0.552732"/>
</kw>
<msg time="2026-04-05T00:36:46.731333" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:46.177561" elapsed="0.553818"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-05T00:36:46.176733" elapsed="0.554741"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-05T00:36:46.731530" elapsed="0.000059"/>
</return>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:36:46.174221" elapsed="0.557503"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-05T00:36:46.737274" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-05T00:36:46.744405" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/notifications/../../../../tools/wstools/wsreceiver.py' -&gt; '/home/jenkins//wsreceiver.py'</msg>
<arg>/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/notifications/../../../../tools/wstools/wsreceiver.py</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-05T00:36:46.731957" elapsed="0.012555"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-05T00:36:46.751812" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/notifications/../../../../tools/wstools/ssereceiver.py' -&gt; '/home/jenkins//ssereceiver.py'</msg>
<arg>/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/notifications/../../../../tools/wstools/ssereceiver.py</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-05T00:36:46.744742" elapsed="0.007153"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:46.752364" level="INFO">Executing command 'sudo apt-get install -y python3-pip'.</msg>
<msg time="2026-04-05T00:36:47.310681" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:47.311003" level="INFO">${stdout} = Reading package lists...
Building dependency tree...
Reading state information...
python3-pip is already the newest version (22.0.2+dfsg-1ubuntu0.7).
0 upgraded, 0 newly installed, 0 to remove and 81 ...</msg>
<msg time="2026-04-05T00:36:47.311103" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>sudo apt-get install -y python3-pip</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:46.752130" elapsed="0.559024"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:47.312304" level="INFO">Reading package lists...
Building dependency tree...
Reading state information...
python3-pip is already the newest version (22.0.2+dfsg-1ubuntu0.7).
0 upgraded, 0 newly installed, 0 to remove and 81 not upgraded.</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:47.311629" elapsed="0.000778"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:47.313317" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:47.312779" elapsed="0.000628"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:47.314158" level="INFO">Executing command 'python3 -m pip install --user --upgrade pip setuptools wheel packaging ordered-set more_itertools jaraco.text importlib_resources importlib_metadata tomli platformdirs'.</msg>
<msg time="2026-04-05T00:36:53.459893" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:53.460301" level="INFO">${stdout} = Requirement already satisfied: pip in /usr/lib/python3/dist-packages (22.0.2)
Collecting pip
  Downloading pip-26.0.1-py3-none-any.whl (1.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB...</msg>
<msg time="2026-04-05T00:36:53.460414" level="INFO">${stderr} =   WARNING: The script pygmentize is installed in '/home/jenkins/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-scr...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>python3 -m pip install --user --upgrade pip setuptools wheel packaging ordered-set more_itertools jaraco.text importlib_resources importlib_metadata tomli platformdirs</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:47.313822" elapsed="6.146692"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:53.461988" level="INFO">Requirement already satisfied: pip in /usr/lib/python3/dist-packages (22.0.2)
Collecting pip
  Downloading pip-26.0.1-py3-none-any.whl (1.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 26.8 MB/s eta 0:00:00
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (59.6.0)
Collecting setuptools
  Downloading setuptools-82.0.1-py3-none-any.whl (1.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 47.4 MB/s eta 0:00:00
Requirement already satisfied: wheel in /usr/lib/python3/dist-packages (0.37.1)
Collecting wheel
  Downloading wheel-0.46.3-py3-none-any.whl (30 kB)
Requirement already satisfied: packaging in /usr/lib/python3/dist-packages (21.3)
Collecting packaging
  Downloading packaging-26.0-py3-none-any.whl (74 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 74.4/74.4 KB 10.4 MB/s eta 0:00:00
Collecting ordered-set
  Downloading ordered_set-4.1.0-py3-none-any.whl (7.6 kB)
Requirement already satisfied: more_itertools in /usr/lib/python3/dist-packages (8.10.0)
Collecting more_itertools
  Downloading more_itertools-11.0.1-py3-none-any.whl (72 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 72.2/72.2 KB 10.9 MB/s eta 0:00:00
Collecting jaraco.text
  Downloading jaraco_text-4.2.0-py3-none-any.whl (13 kB)
Collecting importlib_resources
  Downloading importlib_resources-6.5.2-py3-none-any.whl (37 kB)
Requirement already satisfied: importlib_metadata in /usr/lib/python3/dist-packages (4.6.4)
Collecting importlib_metadata
  Downloading importlib_metadata-9.0.0-py3-none-any.whl (27 kB)
Collecting tomli
  Downloading tomli-2.4.1-py3-none-any.whl (14 kB)
Requirement already satisfied: platformdirs in /usr/lib/python3/dist-packages (2.5.1)
Collecting platformdirs
  Downloading platformdirs-4.9.4-py3-none-any.whl (21 kB)
Collecting jaraco.context&gt;=4.1
  Downloading jaraco_context-6.1.2-py3-none-any.whl (7.9 kB)
Collecting jaraco.functools
  Downloading jaraco_functools-4.4.0-py3-none-any.whl (10 kB)
Collecting typer-slim
  Downloading typer_slim-0.24.0-py3-none-any.whl (3.4 kB)
Collecting zipp&gt;=3.20
  Downloading zipp-3.23.0-py3-none-any.whl (10 kB)
Collecting backports.tarfile
  Downloading backports.tarfile-1.2.0-py3-none-any.whl (30 kB)
Collecting typer&gt;=0.24.0
  Downloading typer-0.24.1-py3-none-any.whl (56 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.1/56.1 KB 8.5 MB/s eta 0:00:00
Collecting shellingham&gt;=1.3.0
  Downloading shellingham-1.5.4-py2.py3-none-any.whl (9.8 kB)
Collecting click&gt;=8.2.1
  Downloading click-8.3.2-py3-none-any.whl (108 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 108.4/108.4 KB 16.6 MB/s eta 0:00:00
Collecting annotated-doc&gt;=0.0.2
  Downloading annotated_doc-0.0.4-py3-none-any.whl (5.3 kB)
Collecting rich&gt;=12.3.0
  Downloading rich-14.3.3-py3-none-any.whl (310 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 310.5/310.5 KB 41.6 MB/s eta 0:00:00
Collecting pygments&lt;3.0.0,&gt;=2.13.0
  Downloading pygments-2.20.0-py3-none-any.whl (1.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 76.4 MB/s eta 0:00:00
Collecting markdown-it-py&gt;=2.2.0
  Downloading markdown_it_py-4.0.0-py3-none-any.whl (87 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 87.3/87.3 KB 14.7 MB/s eta 0:00:00
Collecting mdurl~=0.1
  Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Installing collected packages: zipp, tomli, shellingham, setuptools, pygments, platformdirs, pip, packaging, ordered-set, more_itertools, mdurl, importlib_resources, click, backports.tarfile, annotated-doc, wheel, markdown-it-py, jaraco.functools, jaraco.context, importlib_metadata, rich, typer, typer-slim, jaraco.text
Successfully installed annotated-doc-0.0.4 backports.tarfile-1.2.0 click-8.3.2 importlib_metadata-9.0.0 importlib_resources-6.5.2 jaraco.context-6.1.2 jaraco.functools-4.4.0 jaraco.text-4.2.0 markdown-it-py-4.0.0 mdurl-0.1.2 more_itertools-11.0.1 ordered-set-4.1.0 packaging-26.0 pip-26.0.1 platformdirs-4.9.4 pygments-2.20.0 rich-14.3.3 setuptools-82.0.1 shellingham-1.5.4 tomli-2.4.1 typer-0.24.1 typer-slim-0.24.0 wheel-0.46.3 zipp-3.23.0</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:53.461237" elapsed="0.000946"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:53.463116" level="INFO">  WARNING: The script pygmentize is installed in '/home/jenkins/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The scripts pip, pip3 and pip3.10 are installed in '/home/jenkins/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script wheel is installed in '/home/jenkins/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script markdown-it is installed in '/home/jenkins/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script typer is installed in '/home/jenkins/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
virtualenv 20.13.0+ds requires platformdirs&lt;3,&gt;=2, but you have platformdirs 4.9.4 which is incompatible.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:53.462564" elapsed="0.000678"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:36:53.463969" level="INFO">Executing command 'python3 -m pip install --user websocket-client asyncio aiohttp aiohttp-sse-client coroutine'.</msg>
<msg time="2026-04-05T00:36:59.411214" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:36:59.411674" level="INFO">${stdout} = Collecting websocket-client
  Downloading websocket_client-1.9.0-py3-none-any.whl.metadata (8.3 kB)
Collecting asyncio
  Downloading asyncio-4.0.0-py3-none-any.whl.metadata (994 bytes)
Collecting aioh...</msg>
<msg time="2026-04-05T00:36:59.411783" level="INFO">${stderr} = WARNING: Error parsing dependencies of devscripts: Invalid version: '2.22.1ubuntu1'
  WARNING: The script wsdump is installed in '/home/jenkins/.local/bin' which is not on PATH.
  Consider adding this...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>python3 -m pip install --user websocket-client asyncio aiohttp aiohttp-sse-client coroutine</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:36:53.463630" elapsed="5.948210"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.413268" level="INFO">Collecting websocket-client
  Downloading websocket_client-1.9.0-py3-none-any.whl.metadata (8.3 kB)
Collecting asyncio
  Downloading asyncio-4.0.0-py3-none-any.whl.metadata (994 bytes)
Collecting aiohttp
  Downloading aiohttp-3.13.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (8.1 kB)
Collecting aiohttp-sse-client
  Downloading aiohttp_sse_client-0.2.1-py2.py3-none-any.whl.metadata (3.7 kB)
Collecting coroutine
  Downloading coroutine-0.0.2.tar.gz (8.5 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting aiohappyeyeballs&gt;=2.5.0 (from aiohttp)
  Downloading aiohappyeyeballs-2.6.1-py3-none-any.whl.metadata (5.9 kB)
Collecting aiosignal&gt;=1.4.0 (from aiohttp)
  Downloading aiosignal-1.4.0-py3-none-any.whl.metadata (3.7 kB)
Collecting async-timeout&lt;6.0,&gt;=4.0 (from aiohttp)
  Downloading async_timeout-5.0.1-py3-none-any.whl.metadata (5.1 kB)
Requirement already satisfied: attrs&gt;=17.3.0 in /usr/lib/python3/dist-packages (from aiohttp) (21.2.0)
Collecting frozenlist&gt;=1.1.1 (from aiohttp)
  Downloading frozenlist-1.8.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (20 kB)
Collecting multidict&lt;7.0,&gt;=4.5 (from aiohttp)
  Downloading multidict-6.7.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (5.3 kB)
Collecting propcache&gt;=0.2.0 (from aiohttp)
  Downloading propcache-0.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (13 kB)
Collecting yarl&lt;2.0,&gt;=1.17.0 (from aiohttp)
  Downloading yarl-1.23.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (79 kB)
Collecting typing-extensions&gt;=4.1.0 (from multidict&lt;7.0,&gt;=4.5-&gt;aiohttp)
  Downloading typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB)
Requirement already satisfied: idna&gt;=2.0 in /usr/lib/python3/dist-packages (from yarl&lt;2.0,&gt;=1.17.0-&gt;aiohttp) (3.3)
Downloading websocket_client-1.9.0-py3-none-any.whl (82 kB)
Downloading asyncio-4.0.0-py3-none-any.whl (5.6 kB)
Downloading aiohttp-3.13.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.7 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 71.5 MB/s  0:00:00
Downloading async_timeout-5.0.1-py3-none-any.whl (6.2 kB)
Downloading multidict-6.7.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (243 kB)
Downloading yarl-1.23.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (102 kB)
Downloading aiohttp_sse_client-0.2.1-py2.py3-none-any.whl (7.0 kB)
Downloading aiohappyeyeballs-2.6.1-py3-none-any.whl (15 kB)
Downloading aiosignal-1.4.0-py3-none-any.whl (7.5 kB)
Downloading frozenlist-1.8.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (219 kB)
Downloading propcache-0.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (196 kB)
Downloading typing_extensions-4.15.0-py3-none-any.whl (44 kB)
Building wheels for collected packages: coroutine
  Building wheel for coroutine (pyproject.toml): started
  Building wheel for coroutine (pyproject.toml): finished with status 'done'
  Created wheel for coroutine: filename=coroutine-0.0.2-py3-none-any.whl size=10791 sha256=b0df9598df575ce146744015f083aae1cc6b4b1c6c7b16e4d2dcf21bd7683775
  Stored in directory: /home/jenkins/.cache/pip/wheels/cf/08/83/85cf872956c5947cc333efd19665a7ed6385090531dce0e3ce
Successfully built coroutine
Installing collected packages: coroutine, websocket-client, typing-extensions, propcache, frozenlist, asyncio, async-timeout, aiohappyeyeballs, multidict, aiosignal, yarl, aiohttp, aiohttp-sse-client

Successfully installed aiohappyeyeballs-2.6.1 aiohttp-3.13.5 aiohttp-sse-client-0.2.1 aiosignal-1.4.0 async-timeout-5.0.1 asyncio-4.0.0 coroutine-0.0.2 frozenlist-1.8.0 multidict-6.7.1 propcache-0.4.1 typing-extensions-4.15.0 websocket-client-1.9.0 yarl-1.23.0</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.412475" elapsed="0.001037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.414746" level="INFO">WARNING: Error parsing dependencies of devscripts: Invalid version: '2.22.1ubuntu1'
  WARNING: The script wsdump is installed in '/home/jenkins/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.414002" elapsed="0.000855"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:59.415842" level="INFO">Creating Session using : alias=restconf, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4cd12a390&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>restconf</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:36:59.415214" elapsed="0.000978"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.420583" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.420370" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.420336" elapsed="0.000357"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:59.421226" level="INFO">${karaf_connection_index} = 23</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:59.420901" elapsed="0.000362"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:59.421769" level="INFO">${current_connection_index} = 24</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:59.421505" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:59.431687" level="INFO">@root&gt;log:set INFO</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:59.422546" elapsed="0.009201"/>
</kw>
<msg time="2026-04-05T00:36:59.431850" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:59.431894" level="INFO">${message_write} = @root&gt;log:set INFO
</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.422035" elapsed="0.009883"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:59.444697" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:59.432449" elapsed="0.012429"/>
</kw>
<msg time="2026-04-05T00:36:59.445048" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:59.445116" level="INFO">${message_wait} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.432089" elapsed="0.013067"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.445674" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.445282" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.445249" elapsed="0.000570"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.446460" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.446041" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.446928" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.446625" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.446599" elapsed="0.000437"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:59.447086" elapsed="0.000049"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:59.449680" elapsed="0.000253"/>
</kw>
<msg time="2026-04-05T00:36:59.449995" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:59.448769" elapsed="0.001294"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.450221" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.450382" elapsed="0.000019"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:59.448277" elapsed="0.002204"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:59.447522" elapsed="0.003006"/>
</kw>
<arg>log:set ${CONTROLLER_LOG_LEVEL}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:59.417092" elapsed="0.033533"/>
</kw>
<doc>SSH-login to mininet machine, create HTTP session,
prepare directories for responses, put Python tool to mininet machine, setup imported resources.</doc>
<status status="PASS" start="2026-04-05T00:36:45.263642" elapsed="14.187039"/>
</kw>
<test id="s1-s6-s1-t1" name="Create_DCN_Stream" line="62">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:59.453708" elapsed="0.000231"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:59.453442" elapsed="0.000553"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.455004" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.454893" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.454875" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.460185" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.460078" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.460059" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.461295" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:59.460870" elapsed="0.000465"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.461835" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:59.461514" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:59.461905" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:59.462057" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:59.460496" elapsed="0.001585"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.467808" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.467699" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.467680" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.469207" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.469054" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.469036" elapsed="0.000243"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:59.469846" level="INFO">${karaf_connection_index} = 23</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:59.469444" elapsed="0.000429"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:59.470283" level="INFO">${current_connection_index} = 24</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:59.470035" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:59.506612" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:59.470880" elapsed="0.036006"/>
</kw>
<msg time="2026-04-05T00:36:59.507145" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:59.507200" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.470485" elapsed="0.036754"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:59.562063" level="INFO">"s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "C "r "e "a "t "e "_ "D "C "N "_ "S "t "r "e "a "m "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:59.508057" elapsed="0.054194"/>
</kw>
<msg time="2026-04-05T00:36:59.562441" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:59.562490" level="INFO">${message_wait} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.507528" elapsed="0.054998"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.562903" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.562633" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.562601" elapsed="0.000410"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.563570" level="INFO"> "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "C "r "e "a "t "e "_ "D "C "N "_ "S "t "r "e "a "m "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.563161" elapsed="0.000485"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.563931" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.563715" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.563696" elapsed="0.000335"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:59.564069" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:59.567316" elapsed="0.000182"/>
</kw>
<msg time="2026-04-05T00:36:59.567571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:59.566668" elapsed="0.001009"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.568638" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.569624" elapsed="0.000035"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:59.565045" elapsed="0.004720"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:59.564401" elapsed="0.005482"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:59.468750" elapsed="0.101233"/>
</kw>
<msg time="2026-04-05T00:36:59.570080" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:59.570129" level="INFO">${message} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.468026" elapsed="0.102140"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:59.570631" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:36:59.570516" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.570227" elapsed="0.000490"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.571145" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.571598" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.571672" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:59.467339" elapsed="0.104443"/>
</kw>
<msg time="2026-04-05T00:36:59.571876" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:59.571919" level="INFO">${output} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.462482" elapsed="0.109472"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.572282" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.572031" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.572013" elapsed="0.000346"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:59.462321" elapsed="0.110061"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:59.462142" elapsed="0.110273"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:59.459713" elapsed="0.112781"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:59.454603" elapsed="0.117952"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.454150" elapsed="0.118452"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:59.451239" elapsed="0.121420"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>Create DCN subscription</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-05T00:36:59.572847" elapsed="0.000217"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:36:59.573408" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/notifications/templates/subscribe.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/notifications/templates/subscribe.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:36:59.573756" level="INFO">${body} = &lt;input xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"&gt;
  &lt;path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology&lt;/path&gt;
  &lt;datastore xmlns="urn:sal:restco...</msg>
<var>${body}</var>
<arg>${TEMPLATE_FOLDER}/${RESTCONF_SUBSCRIBE_DATA}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:36:59.573220" elapsed="0.000566"/>
</kw>
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.584387" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:59.582322" elapsed="0.002092"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.584773" elapsed="0.000021"/>
</kw>
<var name="${nv}"/>
<status status="NOT RUN" start="2026-04-05T00:36:59.584619" elapsed="0.000211"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.584488" elapsed="0.000369"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.585174" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.584919" elapsed="0.000311"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.585496" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.585254" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.586066" level="INFO">${uri} = /rests/operations/sal-remote:create-data-change-event-subscription</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:36:59.585742" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:59.585575" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.584903" elapsed="0.001244"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:59.586181" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:59.586327" level="INFO">${uri} = /rests/operations/sal-remote:create-data-change-event-subscription</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:36:59.581860" elapsed="0.004492"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:36:59.586399" elapsed="0.000045"/>
</return>
<msg time="2026-04-05T00:36:59.586562" level="INFO">${uri} = /rests/operations/sal-remote:create-data-change-event-subscription</msg>
<var>${uri}</var>
<arg>sal-remote:create-data-change-event-subscription</arg>
<arg>rpc</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:36:59.581301" elapsed="0.005286"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:59.609030" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/operations/sal-remote:create-data-change-event-subscription 
 path_url=/rests/operations/sal-remote:create-data-change-event-subscription 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '324', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"&gt;
  &lt;path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology&lt;/path&gt;
  &lt;datastore xmlns="urn:sal:restconf:event:subscription"&gt;CONFIGURATION&lt;/datastore&gt;
  &lt;scope xmlns="urn:sal:restconf:event:subscription"&gt;BASE&lt;/scope&gt;
&lt;/input&gt;
 
 </msg>
<msg time="2026-04-05T00:36:59.609353" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/operations/sal-remote:create-data-change-event-subscription 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0h2b979thu3j61fqxyaj70jo6i6.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 04-Apr-2026 00:36:59 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Content-Type': 'application/xml', 'Content-Length': '158'} 
 body=&lt;output xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"&gt;&lt;stream-name&gt;urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793&lt;/stream-name&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-05T00:36:59.609526" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>restconf</arg>
<arg>${uri}</arg>
<arg>headers=${SEND_ACCEPT_XML_HEADERS}</arg>
<arg>data=${body}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:59.586748" elapsed="0.022806"/>
</kw>
<kw name="Log_Response">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.610516" level="INFO">&lt;Response [200]&gt;</msg>
<arg>${resp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.610204" elapsed="0.000359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.613384" level="INFO">{'Set-Cookie': 'JSESSIONID=node0h2b979thu3j61fqxyaj70jo6i6.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 04-Apr-2026 00:36:59 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Content-Type': 'application/xml', 'Content-Length': '158'}</msg>
<arg>${resp.headers}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.610713" elapsed="0.002735"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.615969" level="INFO">&lt;output xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"&gt;&lt;stream-name&gt;urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793&lt;/stream-name&gt;&lt;/output&gt;</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.613605" elapsed="0.002416"/>
</kw>
<arg>${resp}</arg>
<doc>Log response.</doc>
<status status="PASS" start="2026-04-05T00:36:59.609808" elapsed="0.006275"/>
</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="PASS" start="2026-04-05T00:36:59.616237" elapsed="0.002506"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-05T00:36:59.621381" level="INFO">${stream_name} = urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793</msg>
<var>${stream_name}</var>
<arg>${resp.content}</arg>
<arg>stream-name</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-05T00:36:59.618911" elapsed="0.002499"/>
</kw>
<kw name="Set_Variable_If_At_Least_Calcium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:59.639585" elapsed="0.000437"/>
</kw>
<msg time="2026-04-05T00:36:59.640080" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:59.639202" elapsed="0.000943"/>
</kw>
<arg>calcium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return /rests/data/ietf-restconf-monitoring:restconf-state/streams/stream=urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793 if titanium is at least ${lower_bound},
return /rests/data/ietf-restconf-monitoring:restconf-state/streams/stream/data-change-event-subscription/network-topology:network-topology/datastore=CONFIGURATION/scope=BASE otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:59.638809" elapsed="0.001424"/>
</kw>
<msg time="2026-04-05T00:36:59.640279" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>calcium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:59.630303" elapsed="0.010020"/>
</kw>
<msg time="2026-04-05T00:36:59.640450" level="INFO">${RFC8040_DCN_STREAM_URI} = /rests/data/ietf-restconf-monitoring:restconf-state/streams/stream=urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793</msg>
<var>${RFC8040_DCN_STREAM_URI}</var>
<arg>${RFC8040_STREAMS_URI}/stream=${stream_name}</arg>
<arg>${RFC8040_STREAMS_URI}/stream/data-change-event-subscription/${NODES_STREAM_PATH}</arg>
<doc>Compare calcium to titanium and return ${value_if_true} if titanium is at least calcium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:59.629765" elapsed="0.010713"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.640894" level="INFO">/rests/data/ietf-restconf-monitoring:restconf-state/streams/stream=urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793</msg>
<arg>${RFC8040_DCN_STREAM_URI}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.640641" elapsed="0.000299"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.641417" level="INFO">${RFC8040_DCN_STREAM_URI} = /rests/data/ietf-restconf-monitoring:restconf-state/streams/stream=urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793</msg>
<arg>${RFC8040_DCN_STREAM_URI}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:59.641102" elapsed="0.000373"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-05T00:36:59.642075" elapsed="0.000240"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.643200" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.642801" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.642776" elapsed="0.000585"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:59.643526" elapsed="0.000314"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.648778" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:59.648346" elapsed="0.000459"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:36:59.649024" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-05T00:36:59.648879" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.648861" elapsed="0.000249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.649256" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.649441" elapsed="0.000022"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.649614" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.649802" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.649966" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.650130" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.650291" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:36:59.648038" elapsed="0.002329"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:59.642576" elapsed="0.007841"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:36:59.641765" elapsed="0.008714"/>
</kw>
<doc>Create DCN stream.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:59.450751" elapsed="0.199768"/>
</test>
<test id="s1-s6-s1-t2" name="Subscribe_To_DCN_Stream" line="82">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:59.653944" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:59.653681" elapsed="0.000527"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.655210" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.655100" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.655081" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.660184" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.660078" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.660060" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.661240" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:59.660863" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.661764" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:59.661442" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:59.661834" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:36:59.661988" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:59.660490" elapsed="0.001522"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.667504" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.667379" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.667359" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.668818" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.668713" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.668695" elapsed="0.000230"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:59.669463" level="INFO">${karaf_connection_index} = 23</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:59.669074" elapsed="0.000417"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:59.669922" level="INFO">${current_connection_index} = 24</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:59.669666" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:59.703174" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:59.670511" elapsed="0.032831"/>
</kw>
<msg time="2026-04-05T00:36:59.703604" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:59.703665" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.670108" elapsed="0.033595"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:59.729487" level="INFO">"s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "S "u "b "s "c "r "i "b "e "_ "T "o "_ "D "C "N "_ "S "t "r "e "a "m "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:59.704273" elapsed="0.025504"/>
</kw>
<msg time="2026-04-05T00:36:59.730037" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:59.730111" level="INFO">${message_wait} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.703877" elapsed="0.026288"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.730660" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.730285" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.730253" elapsed="0.000559"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.731645" level="INFO"> "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "S "u "b "s "c "r "i "b "e "_ "T "o "_ "D "C "N "_ "S "t "r "e "a "m "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.731024" elapsed="0.000733"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.732184" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.731858" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.731830" elapsed="0.000502"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:59.732382" elapsed="0.000066"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:59.736142" elapsed="0.000314"/>
</kw>
<msg time="2026-04-05T00:36:59.736528" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:59.735376" elapsed="0.001251"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.737697" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.738717" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:59.733747" elapsed="0.005087"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:59.732809" elapsed="0.006140"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:59.668389" elapsed="0.070660"/>
</kw>
<msg time="2026-04-05T00:36:59.739142" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:59.739185" level="INFO">${message} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.667721" elapsed="0.071502"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:59.739407" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-05T00:36:59.739299" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.739280" elapsed="0.000239"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.739925" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.740319" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.740391" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:59.667040" elapsed="0.073479"/>
</kw>
<msg time="2026-04-05T00:36:59.740613" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:59.740656" level="INFO">${output} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.662395" elapsed="0.078297"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.741020" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.740768" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.740750" elapsed="0.000352"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:59.662250" elapsed="0.078875"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:59.662072" elapsed="0.079085"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:59.659719" elapsed="0.081494"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:59.654804" elapsed="0.086464"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.654358" elapsed="0.086954"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:59.651200" elapsed="0.090165"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:59.750595" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/ietf-restconf-monitoring:restconf-state/streams/stream=urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793 
 path_url=/rests/data/ietf-restconf-monitoring:restconf-state/streams/stream=urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0h2b979thu3j61fqxyaj70jo6i6.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:59.751077" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/ietf-restconf-monitoring:restconf-state/streams/stream=urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '550'} 
 body=&lt;stream xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"&gt;&lt;name&gt;urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793&lt;/name&gt;&lt;access&gt;&lt;encoding&gt;json&lt;/encoding&gt;&lt;location&gt;http://10.30.170.184:8181/rests/streams/json/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793&lt;/location&gt;&lt;/access&gt;&lt;access&gt;&lt;encoding&gt;xml&lt;/encoding&gt;&lt;location&gt;http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793&lt;/location&gt;&lt;/access&gt;&lt;description&gt;Events occuring in CONFIGURATION datastore under /network-topology:network-topology&lt;/description&gt;&lt;/stream&gt; 
 </msg>
<msg time="2026-04-05T00:36:59.751180" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>restconf</arg>
<arg>url=${RFC8040_DCN_STREAM_URI}</arg>
<arg>headers=${SEND_ACCEPT_XML_HEADERS}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:59.741542" elapsed="0.009664"/>
</kw>
<kw name="Log_Response">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.751963" level="INFO">&lt;Response [200]&gt;</msg>
<arg>${resp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.751709" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.754881" level="INFO">{'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '550'}</msg>
<arg>${resp.headers}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.752166" elapsed="0.002784"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.758612" level="INFO">&lt;stream xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"&gt;&lt;name&gt;urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793&lt;/name&gt;&lt;access&gt;&lt;encoding&gt;json&lt;/encoding&gt;&lt;location&gt;http://10.30.170.184:8181/rests/streams/json/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793&lt;/location&gt;&lt;/access&gt;&lt;access&gt;&lt;encoding&gt;xml&lt;/encoding&gt;&lt;location&gt;http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793&lt;/location&gt;&lt;/access&gt;&lt;description&gt;Events occuring in CONFIGURATION datastore under /network-topology:network-topology&lt;/description&gt;&lt;/stream&gt;</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.755178" elapsed="0.003514"/>
</kw>
<arg>${resp}</arg>
<doc>Log response.</doc>
<status status="PASS" start="2026-04-05T00:36:59.751363" elapsed="0.007411"/>
</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="PASS" start="2026-04-05T00:36:59.758995" elapsed="0.003968"/>
</kw>
<kw name="Set_Variable_If_At_Least_Calcium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:59.781936" elapsed="0.000425"/>
</kw>
<msg time="2026-04-05T00:36:59.782412" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:59.781487" elapsed="0.000998"/>
</kw>
<arg>calcium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return access[2]/location if titanium is at least ${lower_bound},
return . otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:59.781084" elapsed="0.001628"/>
</kw>
<msg time="2026-04-05T00:36:59.782756" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>calcium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:59.772564" elapsed="0.010236"/>
</kw>
<msg time="2026-04-05T00:36:59.782903" level="INFO">${xpath} = access[2]/location</msg>
<var>${xpath}</var>
<arg>access[2]/location</arg>
<arg>.</arg>
<doc>Compare calcium to titanium and return ${value_if_true} if titanium is at least calcium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:36:59.772224" elapsed="0.010703"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-05T00:36:59.785759" level="INFO">${STREAM_LOCATION} = http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793</msg>
<var>${STREAM_LOCATION}</var>
<arg>${resp.content}</arg>
<arg>${xpath}</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-05T00:36:59.783088" elapsed="0.002699"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.786196" level="INFO">http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793</msg>
<arg>${STREAM_LOCATION}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.785946" elapsed="0.000294"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.786725" level="INFO">${STREAM_LOCATION} = http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793</msg>
<arg>${STREAM_LOCATION}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:36:59.786399" elapsed="0.000368"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-05T00:36:59.787328" elapsed="0.000255"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.788399" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.788021" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.788002" elapsed="0.000500"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:59.788647" elapsed="0.000308"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.793880" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:59.793437" elapsed="0.000470"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:36:59.794128" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:36:59.793982" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.793964" elapsed="0.000244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.794354" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.794541" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.794712" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.794874" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.795035" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.795195" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.795354" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:36:59.793120" elapsed="0.002322"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:59.787807" elapsed="0.007687"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:36:59.787031" elapsed="0.008504"/>
</kw>
<doc>Subscribe to DCN streams.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:59.650745" elapsed="0.144828"/>
</test>
<test id="s1-s6-s1-t3" name="List_DCN_Streams" line="97">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:59.798963" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:59.798701" elapsed="0.000566"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.800262" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.800153" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.800133" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.805276" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.805171" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.805152" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.806358" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:59.805975" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.806856" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:59.806559" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:59.806926" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:59.807079" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:59.805598" elapsed="0.001506"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.812497" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.812375" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.812356" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.813801" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.813695" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.813676" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:59.814372" level="INFO">${karaf_connection_index} = 23</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:59.814012" elapsed="0.000386"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:59.814819" level="INFO">${current_connection_index} = 24</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:59.814575" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:59.847286" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:59.815381" elapsed="0.032152"/>
</kw>
<msg time="2026-04-05T00:36:59.847705" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:59.847751" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.815001" elapsed="0.032786"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:36:59.873153" level="INFO">"s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "L "i "s "t "_ "D "C "N "_ "S "t "r "e "a "m "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:59.848345" elapsed="0.025096"/>
</kw>
<msg time="2026-04-05T00:36:59.873666" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:36:59.873717" level="INFO">${message_wait} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.847955" elapsed="0.025799"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.874091" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.873841" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.873818" elapsed="0.000375"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.874743" level="INFO"> "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "L "i "s "t "_ "D "C "N "_ "S "t "r "e "a "m "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.874333" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.875094" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.874879" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.874861" elapsed="0.000406"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:36:59.875305" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:59.878557" elapsed="0.000151"/>
</kw>
<msg time="2026-04-05T00:36:59.878781" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:59.877742" elapsed="0.001138"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.879845" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.880836" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:36:59.876200" elapsed="0.004751"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:36:59.875602" elapsed="0.005464"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:59.813359" elapsed="0.067805"/>
</kw>
<msg time="2026-04-05T00:36:59.881260" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:59.881303" level="INFO">${message} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.812720" elapsed="0.068619"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:36:59.881559" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:59.881415" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.881397" elapsed="0.000248"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.882032" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.882365" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.882451" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:59.812039" elapsed="0.070523"/>
</kw>
<msg time="2026-04-05T00:36:59.882654" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:36:59.882696" level="INFO">${output} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.807488" elapsed="0.075243"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.883051" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.882806" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.882789" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:59.807330" elapsed="0.075820"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:59.807158" elapsed="0.076021"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:59.804812" elapsed="0.078420"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:59.799864" elapsed="0.083420"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.799435" elapsed="0.083891"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:59.796341" elapsed="0.087034"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:36:59.891135" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/ietf-restconf-monitoring:restconf-state/streams/stream=urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793 
 path_url=/rests/data/ietf-restconf-monitoring:restconf-state/streams/stream=urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0h2b979thu3j61fqxyaj70jo6i6.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:36:59.891312" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/ietf-restconf-monitoring:restconf-state/streams/stream=urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '550'} 
 body=&lt;stream xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"&gt;&lt;name&gt;urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793&lt;/name&gt;&lt;access&gt;&lt;encoding&gt;json&lt;/encoding&gt;&lt;location&gt;http://10.30.170.184:8181/rests/streams/json/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793&lt;/location&gt;&lt;/access&gt;&lt;access&gt;&lt;encoding&gt;xml&lt;/encoding&gt;&lt;location&gt;http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793&lt;/location&gt;&lt;/access&gt;&lt;description&gt;Events occuring in CONFIGURATION datastore under /network-topology:network-topology&lt;/description&gt;&lt;/stream&gt; 
 </msg>
<msg time="2026-04-05T00:36:59.891542" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>restconf</arg>
<arg>url=${RFC8040_DCN_STREAM_URI}</arg>
<arg>headers=${SEND_ACCEPT_XML_HEADERS}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:36:59.883545" elapsed="0.008034"/>
</kw>
<kw name="Log_Response">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.892614" level="INFO">&lt;Response [200]&gt;</msg>
<arg>${resp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.892234" elapsed="0.000443"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.896177" level="INFO">{'Cache-Control': 'no-cache', 'Content-Type': 'application/xml', 'Content-Length': '550'}</msg>
<arg>${resp.headers}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.892887" elapsed="0.003355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.899698" level="INFO">&lt;stream xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring"&gt;&lt;name&gt;urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793&lt;/name&gt;&lt;access&gt;&lt;encoding&gt;json&lt;/encoding&gt;&lt;location&gt;http://10.30.170.184:8181/rests/streams/json/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793&lt;/location&gt;&lt;/access&gt;&lt;access&gt;&lt;encoding&gt;xml&lt;/encoding&gt;&lt;location&gt;http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793&lt;/location&gt;&lt;/access&gt;&lt;description&gt;Events occuring in CONFIGURATION datastore under /network-topology:network-topology&lt;/description&gt;&lt;/stream&gt;</msg>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:36:59.896474" elapsed="0.003300"/>
</kw>
<arg>${resp}</arg>
<doc>Log response.</doc>
<status status="PASS" start="2026-04-05T00:36:59.891790" elapsed="0.008062"/>
</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="PASS" start="2026-04-05T00:36:59.900059" elapsed="0.003039"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>Stream only shows in RFC URL.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-05T00:36:59.903276" elapsed="0.000225"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${resp.text}</arg>
<arg>${STREAM_LOCATION}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:36:59.903653" elapsed="0.002366"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-05T00:36:59.906608" elapsed="0.000237"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.907672" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:36:59.907281" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.907263" elapsed="0.000494"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:36:59.907899" elapsed="0.000306"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.913317" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:36:59.912914" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:36:59.913610" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:36:59.913434" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.913401" elapsed="0.000291"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.913851" elapsed="0.000024"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.914022" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.914191" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.914352" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.914532" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.914696" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:36:59.914856" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:36:59.912610" elapsed="0.002320"/>
</kw>
<status status="PASS" start="2026-04-05T00:36:59.907069" elapsed="0.007912"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:36:59.906292" elapsed="0.008730"/>
</kw>
<doc>List DCN streams.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:36:59.795857" elapsed="0.119203"/>
</test>
<test id="s1-s6-s1-t4" name="Start_Receiver" line="109">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:36:59.918355" elapsed="0.000230"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:36:59.918094" elapsed="0.000546"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.919612" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.919505" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.919485" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.924656" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.924551" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.924533" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.925728" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:36:59.925314" elapsed="0.000440"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:36:59.926207" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:36:59.925912" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:36:59.926276" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:36:59.926445" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:36:59.924944" elapsed="0.001527"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.932020" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.931913" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.931893" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:36:59.933296" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:36:59.933190" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:36:59.933172" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:36:59.933946" level="INFO">${karaf_connection_index} = 23</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:36:59.933575" elapsed="0.000397"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:36:59.934372" level="INFO">${current_connection_index} = 24</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:36:59.934130" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:36:59.977852" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:36:59.934955" elapsed="0.043066"/>
</kw>
<msg time="2026-04-05T00:36:59.978193" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:36:59.978239" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.934572" elapsed="0.043703"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:37:00.002282" level="INFO">"s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "S "t "a "r "t "_ "R "e "c "e "i "v "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:36:59.978872" elapsed="0.023607"/>
</kw>
<msg time="2026-04-05T00:37:00.002647" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:37:00.002692" level="INFO">${message_wait} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.978473" elapsed="0.024255"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:00.003037" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:00.002809" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:00.002787" elapsed="0.000352"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:00.003676" level="INFO"> "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "S "t "a "r "t "_ "R "e "c "e "i "v "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:00.003281" elapsed="0.000466"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:00.004078" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:00.003813" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:00.003795" elapsed="0.000392"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:37:00.004221" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:00.007372" elapsed="0.000174"/>
</kw>
<msg time="2026-04-05T00:37:00.007617" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:00.006677" elapsed="0.001040"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:00.008675" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:00.009661" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:37:00.005119" elapsed="0.004659"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:37:00.004521" elapsed="0.005374"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:36:59.932884" elapsed="0.077112"/>
</kw>
<msg time="2026-04-05T00:37:00.010092" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:00.010136" level="INFO">${message} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.932237" elapsed="0.077936"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:37:00.010360" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:37:00.010252" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:00.010233" elapsed="0.000243"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:00.010880" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:00.011220" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:37:00.011292" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:36:59.931575" elapsed="0.079827"/>
</kw>
<msg time="2026-04-05T00:37:00.011516" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:00.011560" level="INFO">${output} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.926837" elapsed="0.084761"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:00.011923" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:00.011675" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:00.011657" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:36:59.926697" elapsed="0.085326"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:36:59.926525" elapsed="0.085529"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:36:59.924178" elapsed="0.087931"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:36:59.919203" elapsed="0.092963"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:36:59.918786" elapsed="0.093425"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:36:59.915826" elapsed="0.096437"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:37:00.015798" level="INFO">python3 ssereceiver.py --uri http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793 --logfile receiver.log</msg>
<msg time="2026-04-05T00:37:00.015892" level="INFO">${output} =  python3 ssereceiver.py --uri http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793 --logfile receiver.log
</msg>
<var>${output}</var>
<arg>python3 ssereceiver.py --uri ${STREAM_LOCATION} --logfile ${RECEIVER_LOG_FILE}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:37:00.012439" elapsed="0.003479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:00.016333" level="INFO"> python3 ssereceiver.py --uri http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793 --logfile receiver.log
</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:00.016079" elapsed="0.000336"/>
</kw>
<kw name="Read" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.017338" level="INFO">[?2004l2026-04-05 00:37:00,153 INFO: Starting to receive server-sent event messages
2026-04-05 00:37:00,153 INFO: Namespace(uri='http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793', count=1, user='admin', password='admin', logfile='receiver.log', loglevel=20)
2026-04-05 00:37:00,209 INFO: MessageEvent(type=None, message='', data='&lt;notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"&gt;&lt;eventTime&gt;2026-04-05T00:37:00.192213082Z&lt;/eventTime&gt;&lt;data-changed-notification xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"&gt;&lt;data-change-event&gt;&lt;path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology&lt;/path&gt;&lt;operation&gt;created&lt;/operation&gt;&lt;data&gt;&lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;&lt;topology&gt;&lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;&lt;/topology&gt;&lt;topology&gt;&lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;&lt;/topology&gt;&lt;topology&gt;&lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;&lt;/topology&gt;&lt;topology&gt;&lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;&lt;node&gt;&lt;node-id&gt;43.43.43.43&lt;/node-id&gt;&lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;&lt;password&gt;topsecret&lt;/password&gt;&lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;&lt;/session-config&gt;&lt;/node&gt;&lt;topology-types&gt;&lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;&lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;&lt;session-config&gt;&lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;&lt;listen-port&gt;4189&lt;/listen-port&gt;&lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;&lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;&lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;&lt;/session-config&gt;&lt;/topology-pcep&gt;&lt;/topology-types&gt;&lt;/topology&gt;&lt;/network-topology&gt;&lt;/data&gt;&lt;/data-change-event&gt;&lt;/data-changed-notification&gt;&lt;/notification&gt;', origin='http://10.30.170.184:8181', last_event_id='')</msg>
<msg time="2026-04-05T00:37:04.017818" level="INFO">${output} = [?2004l2026-04-05 00:37:00,153 INFO: Starting to receive server-sent event messages
2026-04-05 00:37:00,153 INFO: Namespace(uri='http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4...</msg>
<var>${output}</var>
<arg>delay=2s</arg>
<doc>Consumes and returns everything available on the server output.</doc>
<status status="PASS" start="2026-04-05T00:37:00.016587" elapsed="4.001298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.019116" level="INFO">[?2004l2026-04-05 00:37:00,153 INFO: Starting to receive server-sent event messages
2026-04-05 00:37:00,153 INFO: Namespace(uri='http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793', count=1, user='admin', password='admin', logfile='receiver.log', loglevel=20)
2026-04-05 00:37:00,209 INFO: MessageEvent(type=None, message='', data='&lt;notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"&gt;&lt;eventTime&gt;2026-04-05T00:37:00.192213082Z&lt;/eventTime&gt;&lt;data-changed-notification xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"&gt;&lt;data-change-event&gt;&lt;path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology&lt;/path&gt;&lt;operation&gt;created&lt;/operation&gt;&lt;data&gt;&lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;&lt;topology&gt;&lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;&lt;/topology&gt;&lt;topology&gt;&lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;&lt;/topology&gt;&lt;topology&gt;&lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;&lt;/topology&gt;&lt;topology&gt;&lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;&lt;node&gt;&lt;node-id&gt;43.43.43.43&lt;/node-id&gt;&lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;&lt;password&gt;topsecret&lt;/password&gt;&lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;&lt;/session-config&gt;&lt;/node&gt;&lt;topology-types&gt;&lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;&lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;&lt;session-config&gt;&lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;&lt;listen-port&gt;4189&lt;/listen-port&gt;&lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;&lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;&lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;&lt;/session-config&gt;&lt;/topology-pcep&gt;&lt;/topology-types&gt;&lt;/topology&gt;&lt;/network-topology&gt;&lt;/data&gt;&lt;/data-change-event&gt;&lt;/data-changed-notification&gt;&lt;/notification&gt;', origin='http://10.30.170.184:8181', last_event_id='')
</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.018390" elapsed="0.000888"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-05T00:37:04.020740" elapsed="0.000555"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.024402" elapsed="0.000114"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.023061" elapsed="0.001551"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.023009" elapsed="0.001669"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.025030" elapsed="0.000783"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.032199" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:04.031768" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:37:04.032464" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-05T00:37:04.032302" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.032284" elapsed="0.000273"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.032706" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.032877" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.033114" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.033280" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.033459" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.033626" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.033790" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:37:04.031449" elapsed="0.002418"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:04.021859" elapsed="0.012058"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:37:04.019995" elapsed="0.013963"/>
</kw>
<doc>Start the WSS/SSE listener</doc>
<status status="PASS" start="2026-04-05T00:36:59.915363" elapsed="4.118634"/>
</test>
<test id="s1-s6-s1-t5" name="Change_DS_Config" line="116">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:37:04.037369" elapsed="0.000235"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:37:04.037061" elapsed="0.000599"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.038648" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.038539" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.038519" elapsed="0.000199"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.043698" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.043591" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.043572" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.044763" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:04.044366" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.045239" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:37:04.044946" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:37:04.045308" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:37:04.045477" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:37:04.043993" elapsed="0.001509"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.051089" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.050981" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.050961" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.052466" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.052336" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.052317" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:37:04.053052" level="INFO">${karaf_connection_index} = 23</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.052689" elapsed="0.000389"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.053507" level="INFO">${current_connection_index} = 24</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:04.053241" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.089366" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:37:04.054074" elapsed="0.035474"/>
</kw>
<msg time="2026-04-05T00:37:04.089724" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:37:04.089771" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.053690" elapsed="0.036159"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.112863" level="INFO">"s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "C "h "a "n "g "e "_ "D "S "_ "C "o "n "f "i "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:37:04.090467" elapsed="0.022573"/>
</kw>
<msg time="2026-04-05T00:37:04.113211" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:37:04.113256" level="INFO">${message_wait} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.090024" elapsed="0.023269"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.113618" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.113372" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.113352" elapsed="0.000368"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.114237" level="INFO"> "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "C "h "a "n "g "e "_ "D "S "_ "C "o "n "f "i "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.113862" elapsed="0.000445"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.114605" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.114373" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.114355" elapsed="0.000349"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:37:04.114737" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:04.117831" elapsed="0.000147"/>
</kw>
<msg time="2026-04-05T00:37:04.118050" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.117158" elapsed="0.000990"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.119121" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.120135" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:37:04.115624" elapsed="0.004627"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:37:04.115008" elapsed="0.005360"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:37:04.052033" elapsed="0.068450"/>
</kw>
<msg time="2026-04-05T00:37:04.120577" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:04.120620" level="INFO">${message} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.051309" elapsed="0.069348"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:37:04.120841" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:37:04.120733" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.120715" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.121318" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.121667" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.121738" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:37:04.050642" elapsed="0.071203"/>
</kw>
<msg time="2026-04-05T00:37:04.121935" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:04.121978" level="INFO">${output} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.045874" elapsed="0.076139"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.122331" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.122087" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.122070" elapsed="0.000408"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:37:04.045733" elapsed="0.076770"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:37:04.045558" elapsed="0.076977"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:37:04.043205" elapsed="0.079385"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:37:04.038232" elapsed="0.084413"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.037809" elapsed="0.084880"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:37:04.034872" elapsed="0.087868"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:37:04.123089" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/notifications/templates/config_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/notifications/templates/config_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:37:04.123271" level="INFO">${body} = &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;topology&gt;
    &lt;topology-id&gt;netconf-notif&lt;/topology-id&gt;
  &lt;/topology&gt;
&lt;/network-topology&gt;
</msg>
<var>${body}</var>
<arg>${TEMPLATE_FOLDER}/${RESTCONF_CONFIG_DATA}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:37:04.122900" elapsed="0.000399"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.123783" level="INFO">${uri} = /rests/data/network-topology:network-topology</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/network-topology:network-topology</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:04.123472" elapsed="0.000337"/>
</kw>
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:37:04.136354" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology 
 path_url=/rests/data/network-topology:network-topology 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0h2b979thu3j61fqxyaj70jo6i6.node0', 'Content-Length': '163', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;topology&gt;
    &lt;topology-id&gt;netconf-notif&lt;/topology-id&gt;
  &lt;/topology&gt;
&lt;/network-topology&gt;
 
 </msg>
<msg time="2026-04-05T00:37:04.136447" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:37:04.136572" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>restconf</arg>
<arg>${uri}</arg>
<arg>headers=${SEND_ACCEPT_XML_HEADERS}</arg>
<arg>data=${body}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:37:04.123965" elapsed="0.012641"/>
</kw>
<kw name="Log_Response">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.137942" level="INFO">&lt;Response [204]&gt;</msg>
<arg>${resp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.137586" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.142931" level="INFO">{}</msg>
<arg>${resp.headers}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.138217" elapsed="0.004836"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.148627" level="INFO"/>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.143546" elapsed="0.005125"/>
</kw>
<arg>${resp}</arg>
<doc>Log response.</doc>
<status status="PASS" start="2026-04-05T00:37:04.136824" elapsed="0.011906"/>
</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="PASS" start="2026-04-05T00:37:04.148880" elapsed="0.002485"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.151909" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=netconf-notif</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/network-topology:network-topology/topology=netconf-notif</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:04.151554" elapsed="0.000382"/>
</kw>
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:37:04.158313" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=netconf-notif 
 path_url=/rests/data/network-topology:network-topology/topology=netconf-notif 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0h2b979thu3j61fqxyaj70jo6i6.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:37:04.158357" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=netconf-notif 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:37:04.158461" level="INFO">${resp} = &lt;Response [204]&gt;</msg>
<var>${resp}</var>
<arg>restconf</arg>
<arg>${uri}</arg>
<arg>headers=${SEND_ACCEPT_XML_HEADERS}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:37:04.152093" elapsed="0.006395"/>
</kw>
<kw name="Log_Response">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.159205" level="INFO">&lt;Response [204]&gt;</msg>
<arg>${resp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.158956" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.162759" level="INFO">{}</msg>
<arg>${resp.headers}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.159530" elapsed="0.003293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.166487" level="INFO"/>
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.163034" elapsed="0.003515"/>
</kw>
<arg>${resp}</arg>
<doc>Log response.</doc>
<status status="PASS" start="2026-04-05T00:37:04.158638" elapsed="0.007990"/>
</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="PASS" start="2026-04-05T00:37:04.166835" elapsed="0.002934"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-05T00:37:04.170382" elapsed="0.000257"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.171467" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.171077" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.171059" elapsed="0.000505"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.171707" elapsed="0.000310"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.176881" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:04.176481" elapsed="0.000427"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:37:04.177122" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:37:04.176982" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.176963" elapsed="0.000241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.177348" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.177530" elapsed="0.000022"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.177701" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.177862" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.178023" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.178182" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.178341" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:37:04.176168" elapsed="0.002248"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:04.170862" elapsed="0.007621"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:37:04.170081" elapsed="0.008444"/>
</kw>
<doc>Make a change in DS configuration.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:37:04.034360" elapsed="0.144203"/>
</test>
<test id="s1-s6-s1-t6" name="Check_Notification" line="133">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:37:04.181973" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:37:04.181714" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.183219" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.183111" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.183092" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.188197" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.188091" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.188073" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.189245" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:04.188872" elapsed="0.000400"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.189736" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:37:04.189442" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:37:04.189806" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:37:04.189958" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:37:04.188502" elapsed="0.001480"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.195855" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.195745" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.195726" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.197122" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.197017" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.196999" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:37:04.197721" level="INFO">${karaf_connection_index} = 23</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.197334" elapsed="0.000422"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.198156" level="INFO">${current_connection_index} = 24</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:04.197912" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.229291" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:37:04.198766" elapsed="0.030744"/>
</kw>
<msg time="2026-04-05T00:37:04.229678" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:37:04.229724" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.198338" elapsed="0.031422"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.256355" level="INFO">"s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "C "h "e "c "k "_ "N "o "t "i "f "i "c "a "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:37:04.230321" elapsed="0.026242"/>
</kw>
<msg time="2026-04-05T00:37:04.256745" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:37:04.256792" level="INFO">${message_wait} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.229930" elapsed="0.026899"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.257134" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.256906" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.256886" elapsed="0.000348"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.257767" level="INFO"> "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "C "h "e "c "k "_ "N "o "t "i "f "i "c "a "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.257378" elapsed="0.000459"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.258117" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.257903" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.257885" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:37:04.258248" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:04.261298" elapsed="0.000167"/>
</kw>
<msg time="2026-04-05T00:37:04.261537" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.260647" elapsed="0.000987"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.262585" elapsed="0.000037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.263593" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:37:04.259110" elapsed="0.004596"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:37:04.258536" elapsed="0.005291"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:37:04.196716" elapsed="0.067208"/>
</kw>
<msg time="2026-04-05T00:37:04.264015" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:04.264058" level="INFO">${message} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.196072" elapsed="0.068022"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:37:04.264331" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:37:04.264223" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.264203" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.264817" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.265146" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.265217" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:37:04.195053" elapsed="0.070269"/>
</kw>
<msg time="2026-04-05T00:37:04.265412" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:04.265472" level="INFO">${output} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.190398" elapsed="0.075110"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.265830" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.265583" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.265566" elapsed="0.000339"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:37:04.190257" elapsed="0.075671"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:37:04.190083" elapsed="0.075874"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:37:04.187737" elapsed="0.078271"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:37:04.182827" elapsed="0.083236"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.182388" elapsed="0.083718"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:37:04.179354" elapsed="0.086803"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.266474" level="INFO">Executing command 'cat receiver.log'.</msg>
<msg time="2026-04-05T00:37:04.279347" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:37:04.279614" level="INFO">${notification} = 2026-04-05 00:37:00,153 INFO: Starting to receive server-sent event messages
2026-04-05 00:37:00,153 INFO: Namespace(uri='http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6...</msg>
<var>${notification}</var>
<arg>cat ${RECEIVER_LOG_FILE}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:37:04.266316" elapsed="0.013357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.280628" level="INFO">2026-04-05 00:37:00,153 INFO: Starting to receive server-sent event messages
2026-04-05 00:37:00,153 INFO: Namespace(uri='http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793', count=1, user='admin', password='admin', logfile='receiver.log', loglevel=20)
2026-04-05 00:37:00,209 INFO: MessageEvent(type=None, message='', data='&lt;notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"&gt;&lt;eventTime&gt;2026-04-05T00:37:00.192213082Z&lt;/eventTime&gt;&lt;data-changed-notification xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"&gt;&lt;data-change-event&gt;&lt;path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology&lt;/path&gt;&lt;operation&gt;created&lt;/operation&gt;&lt;data&gt;&lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;&lt;topology&gt;&lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;&lt;/topology&gt;&lt;topology&gt;&lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;&lt;/topology&gt;&lt;topology&gt;&lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;&lt;/topology&gt;&lt;topology&gt;&lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;&lt;node&gt;&lt;node-id&gt;43.43.43.43&lt;/node-id&gt;&lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;&lt;password&gt;topsecret&lt;/password&gt;&lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;&lt;/session-config&gt;&lt;/node&gt;&lt;topology-types&gt;&lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;&lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;&lt;session-config&gt;&lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;&lt;listen-port&gt;4189&lt;/listen-port&gt;&lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;&lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;&lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;&lt;/session-config&gt;&lt;/topology-pcep&gt;&lt;/topology-types&gt;&lt;/topology&gt;&lt;/network-topology&gt;&lt;/data&gt;&lt;/data-change-event&gt;&lt;/data-changed-notification&gt;&lt;/notification&gt;', origin='http://10.30.170.184:8181', last_event_id='')
2026-04-05 00:37:04,139 INFO: MessageEvent(type=None, message='', data='&lt;notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"&gt;&lt;eventTime&gt;2026-04-05T00:37:04.149119677Z&lt;/eventTime&gt;&lt;data-changed-notification xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"&gt;&lt;data-change-event&gt;&lt;path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology&lt;/path&gt;&lt;operation&gt;updated&lt;/operation&gt;&lt;data&gt;&lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;&lt;topology&gt;&lt;topology-id&gt;netconf-notif&lt;/topology-id&gt;&lt;/topology&gt;&lt;/network-topology&gt;&lt;/data&gt;&lt;/data-change-event&gt;&lt;/data-changed-notification&gt;&lt;/notification&gt;', origin='http://10.30.170.184:8181', last_event_id='')
2026-04-05 00:37:04,159 INFO: MessageEvent(type=None, message='', data='&lt;notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"&gt;&lt;eventTime&gt;2026-04-05T00:37:04.170478502Z&lt;/eventTime&gt;&lt;data-changed-notification xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"&gt;&lt;data-change-event&gt;&lt;path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology&lt;/path&gt;&lt;operation&gt;deleted&lt;/operation&gt;&lt;/data-change-event&gt;&lt;/data-changed-notification&gt;&lt;/notification&gt;', origin='http://10.30.170.184:8181', last_event_id='')</msg>
<arg>${notification}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.280029" elapsed="0.000850"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.281950" level="INFO">${notification} = 2026-04-05 00:37:00,153 INFO: Starting to receive server-sent event messages
2026-04-05 00:37:00,153 INFO: Namespace(uri='http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6...</msg>
<arg>${notification}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:37:04.281242" elapsed="0.000804"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${notification}</arg>
<arg>&lt;notification xmlns=</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:37:04.282376" elapsed="0.000700"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${notification}</arg>
<arg>&lt;eventTime&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:37:04.283458" elapsed="0.000639"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${notification}</arg>
<arg>&lt;data-changed-notification xmlns=</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:37:04.284469" elapsed="0.000645"/>
</kw>
<kw name="Set_Variable_If_At_Least_Calcium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:04.308849" elapsed="0.000417"/>
</kw>
<msg time="2026-04-05T00:37:04.309317" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.308487" elapsed="0.000879"/>
</kw>
<arg>calcium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return created if titanium is at least ${lower_bound},
return updated otherwise.</doc>
<status status="PASS" start="2026-04-05T00:37:04.308081" elapsed="0.001374"/>
</kw>
<msg time="2026-04-05T00:37:04.309500" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>calcium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.298365" elapsed="0.011177"/>
</kw>
<msg time="2026-04-05T00:37:04.309644" level="INFO">${operation} = created</msg>
<var>${operation}</var>
<arg>created</arg>
<arg>updated</arg>
<doc>Compare calcium to titanium and return ${value_if_true} if titanium is at least calcium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:37:04.297922" elapsed="0.011746"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${notification}</arg>
<arg>&lt;operation&gt;${operation}&lt;/operation&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:37:04.309821" elapsed="0.000321"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${notification}</arg>
<arg>&lt;/data-change-event&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:37:04.310296" elapsed="0.000300"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${notification}</arg>
<arg>&lt;/data-changed-notification&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:37:04.310749" elapsed="0.000336"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${notification}</arg>
<arg>&lt;/notification&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:37:04.311239" elapsed="0.000328"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-05T00:37:04.312123" elapsed="0.000234"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.313176" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.312805" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.312787" elapsed="0.000474"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.313402" elapsed="0.000322"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.318604" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:04.318185" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:37:04.318844" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:37:04.318704" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.318686" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.319068" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.319234" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.319411" elapsed="0.000037"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.319595" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.319799" elapsed="0.000022"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.319966" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.320126" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:37:04.317890" elapsed="0.002311"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:04.312594" elapsed="0.007656"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:37:04.311831" elapsed="0.008460"/>
</kw>
<doc>Check the WSS/SSE listener log for a change notification.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:37:04.178836" elapsed="0.141491"/>
</test>
<test id="s1-s6-s1-t7" name="Check_Delete_Notification" line="148">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:37:04.323731" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:37:04.323460" elapsed="0.000532"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.324964" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.324855" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.324837" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.329962" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.329857" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.329840" elapsed="0.000188"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.331006" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:04.330631" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.331530" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:37:04.331189" elapsed="0.000367"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:37:04.331600" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:37:04.331752" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:37:04.330246" elapsed="0.001531"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.337212" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.337105" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.337086" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.338493" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.338364" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.338346" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:37:04.339054" level="INFO">${karaf_connection_index} = 23</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.338699" elapsed="0.000381"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.339517" level="INFO">${current_connection_index} = 24</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:04.339236" elapsed="0.000307"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.372020" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:37:04.340086" elapsed="0.032127"/>
</kw>
<msg time="2026-04-05T00:37:04.372395" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:37:04.372456" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.339699" elapsed="0.032795"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.399433" level="INFO">"s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "C "h "e "c "k "_ "D "e "l "e "t "e "_ "N "o "t "i "f "i "c "a "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:37:04.373069" elapsed="0.026590"/>
</kw>
<msg time="2026-04-05T00:37:04.399828" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:37:04.399874" level="INFO">${message_wait} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.372679" elapsed="0.027232"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.400208" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.399988" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.399968" elapsed="0.000339"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.400895" level="INFO"> "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "C "h "e "c "k "_ "D "e "l "e "t "e "_ "N "o "t "i "f "i "c "a "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.400466" elapsed="0.000517"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.401265" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.401051" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.401032" elapsed="0.000333"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:37:04.401397" elapsed="0.000049"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:04.404474" elapsed="0.000149"/>
</kw>
<msg time="2026-04-05T00:37:04.404694" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.403809" elapsed="0.000982"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.405750" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.407302" elapsed="0.000037"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:37:04.402261" elapsed="0.005205"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:37:04.401673" elapsed="0.005910"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:37:04.338065" elapsed="0.069617"/>
</kw>
<msg time="2026-04-05T00:37:04.407773" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:04.407816" level="INFO">${message} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.337441" elapsed="0.070411"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:37:04.408034" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:37:04.407928" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.407910" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.408524" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.408852" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.408922" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:37:04.336770" elapsed="0.072257"/>
</kw>
<msg time="2026-04-05T00:37:04.409119" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:04.409162" level="INFO">${output} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.332137" elapsed="0.077061"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.409530" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.409271" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.409254" elapsed="0.000353"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:37:04.331997" elapsed="0.077632"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:37:04.331828" elapsed="0.077829"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:37:04.329505" elapsed="0.080203"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:37:04.324572" elapsed="0.085227"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.324139" elapsed="0.085705"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:37:04.321132" elapsed="0.088764"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${notification}</arg>
<arg>&lt;operation&gt;deleted&lt;/operation&gt;</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:37:04.410046" elapsed="0.000302"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-05T00:37:04.410925" elapsed="0.000234"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.412017" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.411648" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.411630" elapsed="0.000473"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.412243" elapsed="0.000601"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.418085" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:04.417685" elapsed="0.000428"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:37:04.418329" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-05T00:37:04.418189" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.418170" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.418571" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.418739" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.418906" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.419067" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.419227" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.419416" elapsed="0.000037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.419597" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:37:04.417369" elapsed="0.002304"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:04.411392" elapsed="0.008331"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-05T00:37:04.410631" elapsed="0.009132"/>
</kw>
<doc>Check the WSS/SSE listener log for a delete notification.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:37:04.320608" elapsed="0.099192"/>
</test>
<test id="s1-s6-s1-t8" name="Check_Bug_3934" line="153">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:37:04.422920" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:37:04.422663" elapsed="0.000516"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.424164" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.424056" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.424038" elapsed="0.000192"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.429139" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.429034" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.429017" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.430240" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:04.429815" elapsed="0.000485"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.430780" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:37:04.430480" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:37:04.430851" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:37:04.431006" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:37:04.429444" elapsed="0.001586"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.438611" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.438493" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.438473" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.439958" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.439853" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.439835" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:37:04.440552" level="INFO">${karaf_connection_index} = 23</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.440170" elapsed="0.000409"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.440976" level="INFO">${current_connection_index} = 24</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:04.440737" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.473043" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:37:04.441556" elapsed="0.031658"/>
</kw>
<msg time="2026-04-05T00:37:04.473386" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:37:04.473463" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.441157" elapsed="0.032345"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.497205" level="INFO">"s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "C "h "e "c "k "_ "B "u "g "_ "3 "9 "3 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:37:04.474070" elapsed="0.023326"/>
</kw>
<msg time="2026-04-05T00:37:04.497587" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:37:04.497632" level="INFO">${message_wait} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.473676" elapsed="0.023992"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.497975" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.497747" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.497726" elapsed="0.000349"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.498611" level="INFO"> "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c ". "C "h "e "c "k "_ "B "u "g "_ "3 "9 "3 "4 "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.498213" elapsed="0.000468"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.498958" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.498747" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.498729" elapsed="0.000327"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:37:04.499089" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:04.502310" elapsed="0.000172"/>
</kw>
<msg time="2026-04-05T00:37:04.502554" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.501527" elapsed="0.001126"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.503618" elapsed="0.000036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.504588" elapsed="0.000102"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:37:04.500003" elapsed="0.004772"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:37:04.499398" elapsed="0.005495"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:37:04.439553" elapsed="0.065437"/>
</kw>
<msg time="2026-04-05T00:37:04.505080" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:04.505124" level="INFO">${message} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.438838" elapsed="0.066323"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:37:04.505343" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-05T00:37:04.505237" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.505219" elapsed="0.000223"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.505830" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.506160" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.506236" elapsed="0.000060"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:37:04.438098" elapsed="0.068293"/>
</kw>
<msg time="2026-04-05T00:37:04.506513" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:04.506556" level="INFO">${output} =  "s ". "t "x "t ". "N "o "t "i "f "i "c "a "t "i "o "n "s ". "N "o "t "i "f "i "c "a "t "i "o "n "s "[C "B "a "s "i "c "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.431403" elapsed="0.075189"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.506912" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.506667" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.506650" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:37:04.431250" elapsed="0.075761"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:37:04.431082" elapsed="0.075957"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:37:04.428679" elapsed="0.078413"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:37:04.423773" elapsed="0.083372"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.423328" elapsed="0.083860"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:37:04.420562" elapsed="0.086676"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:37:04.507614" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/notifications/templates/config_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/notifications/templates/config_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:37:04.508084" level="INFO">${data} = &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;topology&gt;
    &lt;topology-id&gt;netconf-notif&lt;/topology-id&gt;
  &lt;/topology&gt;
&lt;/network-topology&gt;
</msg>
<var>${data}</var>
<arg>${TEMPLATE_FOLDER}/${RESTCONF_CONFIG_DATA}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:37:04.507413" elapsed="0.000701"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.508535" level="INFO">&lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;topology&gt;
    &lt;topology-id&gt;netconf-notif&lt;/topology-id&gt;
  &lt;/topology&gt;
&lt;/network-topology&gt;
</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.508270" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.508970" level="INFO">2026-04-05 00:37:00,153 INFO: Starting to receive server-sent event messages
2026-04-05 00:37:00,153 INFO: Namespace(uri='http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793', count=1, user='admin', password='admin', logfile='receiver.log', loglevel=20)
2026-04-05 00:37:00,209 INFO: MessageEvent(type=None, message='', data='&lt;notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"&gt;&lt;eventTime&gt;2026-04-05T00:37:00.192213082Z&lt;/eventTime&gt;&lt;data-changed-notification xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"&gt;&lt;data-change-event&gt;&lt;path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology&lt;/path&gt;&lt;operation&gt;created&lt;/operation&gt;&lt;data&gt;&lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;&lt;topology&gt;&lt;topology-id&gt;hwvtep:1&lt;/topology-id&gt;&lt;/topology&gt;&lt;topology&gt;&lt;topology-id&gt;topology-netconf&lt;/topology-id&gt;&lt;/topology&gt;&lt;topology&gt;&lt;topology-id&gt;ovsdb:1&lt;/topology-id&gt;&lt;/topology&gt;&lt;topology&gt;&lt;topology-id&gt;pcep-topology&lt;/topology-id&gt;&lt;node&gt;&lt;node-id&gt;43.43.43.43&lt;/node-id&gt;&lt;session-config xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;&lt;password&gt;topsecret&lt;/password&gt;&lt;speaker-entity-id-value xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep:sync:optimizations:config"&gt;AQIDBA==&lt;/speaker-entity-id-value&gt;&lt;/session-config&gt;&lt;/node&gt;&lt;topology-types&gt;&lt;topology-pcep xmlns="urn:opendaylight:params:xml:ns:yang:topology:pcep"&gt;&lt;ted-name&gt;example-linkstate-topology&lt;/ted-name&gt;&lt;session-config&gt;&lt;rpc-timeout&gt;30&lt;/rpc-timeout&gt;&lt;listen-port&gt;4189&lt;/listen-port&gt;&lt;listen-address&gt;0.0.0.0&lt;/listen-address&gt;&lt;dead-timer-value&gt;120&lt;/dead-timer-value&gt;&lt;keep-alive-timer-value&gt;30&lt;/keep-alive-timer-value&gt;&lt;/session-config&gt;&lt;/topology-pcep&gt;&lt;/topology-types&gt;&lt;/topology&gt;&lt;/network-topology&gt;&lt;/data&gt;&lt;/data-change-event&gt;&lt;/data-changed-notification&gt;&lt;/notification&gt;', origin='http://10.30.170.184:8181', last_event_id='')
2026-04-05 00:37:04,139 INFO: MessageEvent(type=None, message='', data='&lt;notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"&gt;&lt;eventTime&gt;2026-04-05T00:37:04.149119677Z&lt;/eventTime&gt;&lt;data-changed-notification xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"&gt;&lt;data-change-event&gt;&lt;path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology&lt;/path&gt;&lt;operation&gt;updated&lt;/operation&gt;&lt;data&gt;&lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;&lt;topology&gt;&lt;topology-id&gt;netconf-notif&lt;/topology-id&gt;&lt;/topology&gt;&lt;/network-topology&gt;&lt;/data&gt;&lt;/data-change-event&gt;&lt;/data-changed-notification&gt;&lt;/notification&gt;', origin='http://10.30.170.184:8181', last_event_id='')
2026-04-05 00:37:04,159 INFO: MessageEvent(type=None, message='', data='&lt;notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"&gt;&lt;eventTime&gt;2026-04-05T00:37:04.170478502Z&lt;/eventTime&gt;&lt;data-changed-notification xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote"&gt;&lt;data-change-event&gt;&lt;path xmlns:a="urn:TBD:params:xml:ns:yang:network-topology"&gt;/a:network-topology&lt;/path&gt;&lt;operation&gt;deleted&lt;/operation&gt;&lt;/data-change-event&gt;&lt;/data-changed-notification&gt;&lt;/notification&gt;', origin='http://10.30.170.184:8181', last_event_id='')</msg>
<arg>${notification}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.508731" elapsed="0.000361"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:37:04.509469" level="INFO">${packed_data} = &lt;network-topology xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;  &lt;topology&gt;    &lt;topology-id&gt;netconf-notif&lt;/topology-id&gt;  &lt;/topology&gt;&lt;/network-topology&gt;</msg>
<var>${packed_data}</var>
<arg>${data}</arg>
<arg>\n</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.509245" elapsed="0.000253"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:37:04.509864" level="INFO">${packed_data} = &lt;network-topologyxmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;&lt;topology&gt;&lt;topology-id&gt;netconf-notif&lt;/topology-id&gt;&lt;/topology&gt;&lt;/network-topology&gt;</msg>
<var>${packed_data}</var>
<arg>${packed_data}</arg>
<arg>${SPACE}</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.509652" elapsed="0.000239"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:37:04.510238" level="INFO">${packed_notification} = 2026-04-05 00:37:00,153 INFO: Starting to receive server-sent event messages2026-04-05 00:37:00,153 INFO: Namespace(uri='http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-68...</msg>
<var>${packed_notification}</var>
<arg>${notification}</arg>
<arg>\n</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.510041" elapsed="0.000223"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:37:04.510779" level="INFO">${packed_notification} = 2026-04-05 00:37:00,153 INFO: Starting to receive server-sent event messages2026-04-05 00:37:00,153 INFO: Namespace(uri='http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-68...</msg>
<var>${packed_notification}</var>
<arg>${packed_notification}</arg>
<arg>\\n</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.510414" elapsed="0.000392"/>
</kw>
<kw name="Remove String" owner="String">
<msg time="2026-04-05T00:37:04.511408" level="INFO">${packed_notification} = 2026-04-0500:37:00,153INFO:Startingtoreceiveserver-senteventmessages2026-04-0500:37:00,153INFO:Namespace(uri='http://10.30.170.184:8181/rests/streams/xml/urn:uuid:53234d56-9ec7-4a1f-92c3-6828c7dea793'...</msg>
<var>${packed_notification}</var>
<arg>${packed_notification}</arg>
<arg>${SPACE}</arg>
<doc>Removes all ``removables`` from the given ``string``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.510958" elapsed="0.000492"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${packed_notification}</arg>
<arg>${packed_data}</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:37:04.511602" elapsed="0.000328"/>
</kw>
<kw name="Report Failure Due To Bug" owner="Utils" type="TEARDOWN">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.513310" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:04.512788" elapsed="0.000550"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-05T00:37:04.513571" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-05T00:37:04.513412" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.513394" elapsed="0.000257"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.513810" elapsed="0.000021"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.513981" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.514155" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.514323" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.514582" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.514746" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.514904" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.515142" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.514985" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:37:04.514968" elapsed="0.000247"/>
</if>
<arg>3934</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-05T00:37:04.512444" elapsed="0.002819"/>
</kw>
<doc>Check the WSS/SSE listener log for the bug correction.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:37:04.420060" elapsed="0.095270"/>
</test>
<kw name="Teardown_Everything" type="TEARDOWN">
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-05T00:37:04.516121" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-05T00:37:04.516046" elapsed="0.000165"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-05T00:37:04.516356" elapsed="0.001055"/>
</kw>
<doc>Close connections.
Tear down imported Resources.</doc>
<status status="PASS" start="2026-04-05T00:37:04.515835" elapsed="0.001656"/>
</kw>
<doc>Basic tests for BGP application peer.

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

Test suite performs basic subscribtion case for data store notifications.
For procedure description see the
https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Restconf:Change_event_notification_subscription


This suite uses inventory (config part) as an area to make dummy writes into,
just to trigger data change listener to produce a notification.
Openflowplugin may have some data there, and before Boron, netconf-connector
was also exposing some data in inventory.

To avoid unexpected responses, this suite depetes all data from config inventory,
so this suite should not be followed by any suite expecting default data there.

Covered bugs:
Bug 3934 - Websockets: Scope ONE doesn't work correctly

TODO: Use cars/people model for data</doc>
<status status="PASS" start="2026-04-05T00:36:45.173991" elapsed="19.343530"/>
</suite>
<status status="PASS" start="2026-04-05T00:36:45.172021" elapsed="19.346477"/>
</suite>
<suite id="s1-s7" name="KeyAuth" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth">
<suite id="s1-s7-s1" name="Keyauth" source="/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/keyauth.robot">
<kw name="Suite Setup" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.604226" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:37:04.599971" elapsed="0.004301"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-05T00:37:04.599754" elapsed="0.004579"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.609298" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-05T00:37:04.605389" elapsed="0.003937"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-05T00:37:04.609546" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.609404" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.609384" elapsed="0.000227"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.610113" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:37:04.609761" elapsed="0.000394"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.610645" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-05T00:37:04.610312" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-05T00:37:04.611156" elapsed="0.000325"/>
</kw>
<msg time="2026-04-05T00:37:04.611576" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:04.611622" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.610831" elapsed="0.000813"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.612168" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:04.611807" elapsed="0.000386"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.613525" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:37:04.612894" elapsed="0.000659"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.613952" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:37:04.613700" elapsed="0.000277"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.614415" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.614129" elapsed="0.000329"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.617802" elapsed="0.000199"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.618974" level="INFO">${member_ip} = 10.30.170.184</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:04.618168" elapsed="0.000835"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.619160" elapsed="0.000257"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.620218" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:04.619922" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-05T00:37:04.620289" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:37:04.620460" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-05T00:37:04.619634" elapsed="0.000852"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:37:04.621052" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4cce74c10&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:37:04.620635" elapsed="0.000551"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.621343" elapsed="0.000211"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-05T00:37:04.617228" elapsed="0.004385"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:37:04.617039" elapsed="0.004617"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-05T00:37:04.614510" elapsed="0.007177"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.622283" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:37:04.621885" elapsed="0.000441"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.622928" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.170.184'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:37:04.622529" elapsed="0.000441"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.623548" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:37:04.623126" elapsed="0.000465"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-05T00:37:04.612453" elapsed="0.011194"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-05T00:37:04.605056" elapsed="0.018646"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.623878" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.623766" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.623748" elapsed="0.000197"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.627003" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:04.626629" elapsed="0.000401"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.627550" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:37:04.627184" elapsed="0.000392"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:37:04.627621" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:37:04.627775" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:37:04.626292" elapsed="0.001507"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:37:04.628785" level="INFO">${member_ip} = 10.30.170.184</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.628520" elapsed="0.000291"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.629534" level="INFO">index=23
host=10.30.170.184
alias=None
port=22
timeout=1 minute
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:37:04.629634" level="INFO">${current_connection} = index=23
host=10.30.170.184
alias=None
port=22
timeout=1 minute
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:37:04.629377" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.633308" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:04.632681" elapsed="0.000733"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.632638" elapsed="0.000863"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.634090" level="INFO">index=23
host=10.30.170.184
alias=None
port=22
timeout=1 minute
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:37:04.634355" level="INFO">${current_ssh_connection} = index=23
host=10.30.170.184
alias=None
port=22
timeout=1 minute
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:37:04.633768" elapsed="0.000705"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.635383" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.170.184" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.634735" elapsed="0.000822"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.636575" level="INFO">${conn_id} = 24</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:37:04.635824" elapsed="0.000850"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.638030" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:37:04.638107" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:37:04.637758" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.638369" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.639649" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:37:04.969187" 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 Apr  5 00:36:16 UTC 2026

  System load:  0.59               Processes:             128
  Usage of /:   11.1% of 77.35GB   Users logged in:       1
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:36:45 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:37:04.639306" elapsed="0.329984"/>
</kw>
<msg time="2026-04-05T00:37:04.969360" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.638929" elapsed="0.330524"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:37:04.637035" elapsed="0.332608"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:37:04.970375" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-05T00:37:04.983196" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-05T00:37:04.983495" level="INFO">${stdout} = </msg>
<msg time="2026-04-05T00:37:04.983639" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:37:04.969951" elapsed="0.013786"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:37:04.984015" elapsed="0.000539"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.985644" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.985120" elapsed="0.000684"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.986233" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:04.985957" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.985906" elapsed="0.000479"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-05T00:37:04.986795" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-05T00:37:04.986543" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:04.986501" elapsed="0.000474"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-05T00:37:04.987064" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:04.991214" elapsed="0.000152"/>
</kw>
<msg time="2026-04-05T00:37:04.991410" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.990608" elapsed="0.000918"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.991776" elapsed="0.000035"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.992040" elapsed="0.000034"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:37:04.987648" elapsed="0.004541"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-05T00:37:04.631676" elapsed="0.360895"/>
</kw>
<msg time="2026-04-05T00:37:04.992681" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.630811" elapsed="0.361922"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:37:04.630317" elapsed="0.362497"/>
</kw>
<msg time="2026-04-05T00:37:04.992856" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.629811" elapsed="0.363089"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:04.996312" elapsed="0.000182"/>
</kw>
<msg time="2026-04-05T00:37:04.996537" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:04.995618" elapsed="0.000980"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.996751" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:04.996909" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:37:04.993184" elapsed="0.003805"/>
</kw>
<msg time="2026-04-05T00:37:04.997078" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-05T00:37:04.629025" elapsed="0.368078"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:04.997597" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:04.997272" elapsed="0.000367"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-05T00:37:04.997682" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-05T00:37:04.628152" elapsed="0.369652"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:37:04.627976" elapsed="0.369865"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:37:04.627851" elapsed="0.370024"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-05T00:37:04.624161" elapsed="0.373769"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-05T00:37:04.998080" elapsed="0.000210"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:05.011906" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:05.011797" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:05.011778" elapsed="0.000195"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:37:05.012235" level="INFO">index=23
host=10.30.170.184
alias=None
port=22
timeout=1 minute
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:37:05.012336" level="INFO">${current_ssh_connection_object} = index=23
host=10.30.170.184
alias=None
port=22
timeout=1 minute
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:37:05.012123" elapsed="0.000240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:05.012782" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:05.012526" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:05.013211" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:05.012971" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:37:05.014014" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-05T00:37:05.013778" elapsed="0.000349">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-05T00:37:05.014233" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-05T00:37:05.014279" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:05.013407" elapsed="0.000895"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:05.014615" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:05.014377" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:05.014359" elapsed="0.000355"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:37:05.015478" level="INFO">${ip_address} = 10.30.170.184</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:37:05.015196" elapsed="0.000308"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-05T00:37:05.015552" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:37:05.015699" level="INFO">${odl_ip} = 10.30.170.184</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-05T00:37:05.014912" elapsed="0.000812"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:37:05.015876" elapsed="0.000403"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:37:05.016569" level="INFO">index=25
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-05T00:37:05.016708" level="INFO">${karaf_connection_object} = index=25
host=10.30.170.184
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-05T00:37:05.016462" elapsed="0.000273"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:05.016884" elapsed="0.002390"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-05T00:37:05.019719" level="INFO">Logging into '10.30.170.184:8101' as 'karaf'.</msg>
<msg time="2026-04-05T00:37:05.172999" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-05T00:37:05.019456" elapsed="0.153675"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:05.177637" elapsed="0.000232"/>
</kw>
<msg time="2026-04-05T00:37:05.178022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:05.176928" elapsed="0.001171"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:05.178260" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:05.178628" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:37:05.174202" elapsed="0.004510"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:37:05.173511" elapsed="0.005248"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-05T00:37:05.011519" elapsed="0.167310"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:37:04.999012" elapsed="0.179883"/>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:04.998651" elapsed="0.180312"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:37:04.998512" elapsed="0.180513"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-05T00:37:04.998346" elapsed="0.180719"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-05T00:37:04.604625" elapsed="0.574508"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:05.181908" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:05.181787" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:05.181761" elapsed="0.000222"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:05.187548" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:05.187392" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:05.187367" elapsed="0.000273"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:05.188636" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:05.188222" elapsed="0.000441"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:37:05.189165" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:37:05.188859" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:37:05.189236" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:37:05.189389" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:37:05.187885" elapsed="0.001528"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:05.195046" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:05.194915" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:05.194897" elapsed="0.000218"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:05.196593" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:05.196358" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:05.196340" elapsed="0.000399"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:37:05.197308" level="INFO">${karaf_connection_index} = 25</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:37:05.196884" elapsed="0.000465"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:37:05.197876" level="INFO">${current_connection_index} = 23</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:05.197602" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:37:05.233992" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "n "e "t "[78Cc "[A[78Co</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:37:05.199801" elapsed="0.034339"/>
</kw>
<msg time="2026-04-05T00:37:05.234301" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:37:05.234390" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:05.198225" elapsed="0.036261"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:37:05.264274" level="INFO">"n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "n "e "t "c "o "n "f "/ "K "e "y "A "u "t "h "/ "k "e "y "a "u "[78Ct "[A[78Ch
 ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:37:05.236212" elapsed="0.028288"/>
</kw>
<msg time="2026-04-05T00:37:05.264694" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:37:05.264788" level="INFO">${message_wait} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:05.234756" elapsed="0.030095"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:05.265455" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:05.265057" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:05.265027" elapsed="0.000606"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:05.266354" level="INFO"> "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "n "e "t "c "o "n "f "/ "K "e "y "A "u "t "h "/ "k "e "y "a "u "[78Ct "[A[78Ch
 ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:05.265779" elapsed="0.000729"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:05.266987" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:05.266640" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:05.266620" elapsed="0.000542"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:37:05.267197" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:05.269649" elapsed="0.000148"/>
</kw>
<msg time="2026-04-05T00:37:05.269841" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:05.269163" elapsed="0.000744"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:05.270110" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:05.270365" elapsed="0.000026"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:37:05.268457" elapsed="0.002179"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:37:05.267506" elapsed="0.003232"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:37:05.195937" elapsed="0.074903"/>
</kw>
<msg time="2026-04-05T00:37:05.270934" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:05.271000" level="INFO">${message} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:05.195287" elapsed="0.075791"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:37:05.271560" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-05T00:37:05.271162" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:05.271141" elapsed="0.000519"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:05.272106" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:05.272528" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:37:05.272604" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:37:05.194621" elapsed="0.078122"/>
</kw>
<msg time="2026-04-05T00:37:05.272849" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:05.272893" level="INFO">${output} =  "n "f "- "c "s "i "t "- "1 "n "o "d "e "- "u "s "e "r "f "e "a "t "u "r "e "s "- "a "l "l "- "t "i "t "a "n "i "u "m "/ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:05.189807" elapsed="0.083121"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:05.273258" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:05.273006" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:05.272988" elapsed="0.000349"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:37:05.189667" elapsed="0.083693"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:37:05.189490" elapsed="0.083899"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:37:05.187012" elapsed="0.086448"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-05T00:37:05.179767" elapsed="0.093751"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:05.179295" elapsed="0.094265"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-05T00:37:04.599441" elapsed="0.674172"/>
</kw>
<kw name="Setup_NetconfKeywords" owner="NetconfKeywords">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:37:05.274460" level="INFO">${tmp} = {}</msg>
<var>${tmp}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:37:05.274159" elapsed="0.000328"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:05.279028" level="INFO">${NetconfKeywords__mounted_device_types} = {}</msg>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${tmp}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:37:05.274649" elapsed="0.004427"/>
</kw>
<if>
<branch type="IF" condition="${create_session_for_templated_requests}">
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:37:05.283811" level="INFO">Creating Session using : alias=default, url=http://10.30.170.184:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7af4ccfb24d0&gt;, timeout=2, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-05T00:37:05.283329" elapsed="0.000645"/>
</kw>
<arg>timeout=2</arg>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-05T00:37:05.282726" elapsed="0.001336"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:05.279149" elapsed="0.004947"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:05.279130" elapsed="0.004990"/>
</if>
<kw name="Initialize_Artifact_Deployment_And_Usage" owner="NexusKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:37:05.289799" level="INFO">${odl_connection} = 26</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:37:05.289359" elapsed="0.000469"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:37:05.291554" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:37:05.291631" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:37:05.291248" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:05.291808" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:37:05.293044" level="INFO">Logging into '10.30.170.184:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:37:05.614154" 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 Apr  5 00:36:16 UTC 2026

  System load:  0.59               Processes:             128
  Usage of /:   11.1% of 77.35GB   Users logged in:       1
  Memory usage: 10%                IPv4 address for ens3: 10.30.170.184
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:37:04 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:37:05.292726" elapsed="0.321737"/>
</kw>
<msg time="2026-04-05T00:37:05.614555" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:05.292348" elapsed="0.322301"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:37:05.290745" elapsed="0.324024"/>
</kw>
<msg time="2026-04-05T00:37:05.614858" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:05.290338" elapsed="0.324571"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-05T00:37:05.290009" elapsed="0.324982"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-05T00:37:05.615050" elapsed="0.000049"/>
</return>
<msg time="2026-04-05T00:37:05.615283" level="INFO">${odl} = 26</msg>
<var>${odl}</var>
<doc>Open a connection to the ODL system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:37:05.289056" elapsed="0.326255"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-05T00:37:05.626417" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-05T00:37:05.633710" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../../tools/deployment/search.sh' -&gt; '/home/jenkins//search.sh'</msg>
<arg>/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../../tools/deployment/search.sh</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-05T00:37:05.615567" elapsed="0.018205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-05T00:37:05.633933" elapsed="0.000268"/>
</kw>
<if>
<branch type="IF" condition="not (${tools_system_connect})">
<return>
<status status="NOT RUN" start="2026-04-05T00:37:05.634475" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:05.634297" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:05.634264" elapsed="0.000279"/>
</if>
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:37:05.639784" level="INFO">${tools_connection} = 27</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:37:05.639355" elapsed="0.000455"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:37:05.641579" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:37:05.641656" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:37:05.641276" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:05.641835" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:37:05.643025" level="INFO">Logging into '10.30.170.167:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:37:05.935199" 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 Apr  5 00:36:46 UTC 2026

  System load:  0.67               Processes:             118
  Usage of /:   20.7% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.167
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:36:46 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-1-docker-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:37:05.642695" elapsed="0.292710"/>
</kw>
<msg time="2026-04-05T00:37:05.935575" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:05.642323" elapsed="0.293384"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:37:05.640839" elapsed="0.295063"/>
</kw>
<msg time="2026-04-05T00:37:05.936014" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:05.640348" elapsed="0.295766"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-05T00:37:05.640012" elapsed="0.296263"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-05T00:37:05.936370" elapsed="0.000100"/>
</return>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:37:05.638974" elapsed="0.297739"/>
</kw>
<doc>Places search utility to ODL system, which will be needed for version detection.
By default also initialize a SSH connection to Tools system,
as following Keywords assume a working connection towards target system.</doc>
<status status="PASS" start="2026-04-05T00:37:05.284380" elapsed="0.652450"/>
</kw>
<doc>Setup the environment for the other keywords of this Resource to work properly.</doc>
<status status="PASS" start="2026-04-05T00:37:05.273869" elapsed="0.663070"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:05.938311" level="INFO">${device_type_passw} = full-uri-device</msg>
<var>${device_type_passw}</var>
<arg>"""${USE_NETCONF_CONNECTOR}""" == """True"""</arg>
<arg>default</arg>
<arg>${device_type_passw}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:05.937325" elapsed="0.001045"/>
</kw>
<kw name="Run Netopeer Docker Container">
<kw name="Open_Connection_To_Tools_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:37:05.946589" level="INFO">${tools_connection} = 28</msg>
<var>${tools_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-05T00:37:05.946184" elapsed="0.000432"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-05T00:37:05.948265" level="INFO">Length is 0.</msg>
<msg time="2026-04-05T00:37:05.948342" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-05T00:37:05.947981" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:05.948534" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-05T00:37:05.949702" level="INFO">Logging into '10.30.170.167:22' as 'jenkins'.</msg>
<msg time="2026-04-05T00:37:06.242804" 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 Apr  5 00:36:46 UTC 2026

  System load:  0.67               Processes:             118
  Usage of /:   20.7% of 38.58GB   Users logged in:       1
  Memory usage: 5%                 IPv4 address for ens3: 10.30.170.167
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

85 updates can be applied immediately.
66 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

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

New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sun Apr  5 00:37:05 2026 from 10.30.171.13
[?2004h[jenkins@releng-10549-81-1-docker-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-05T00:37:05.949371" elapsed="0.293549"/>
</kw>
<msg time="2026-04-05T00:37:06.242992" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:05.949018" elapsed="0.294053"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-05T00:37:05.947552" elapsed="0.295621"/>
</kw>
<msg time="2026-04-05T00:37:06.243225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:05.947148" elapsed="0.296123"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-05T00:37:05.946819" elapsed="0.296529"/>
</kw>
<return>
<value>${tools_connection}</value>
<status status="PASS" start="2026-04-05T00:37:06.243398" elapsed="0.000059"/>
</return>
<msg time="2026-04-05T00:37:06.243619" level="INFO">${netopeer_conn_id} = 28</msg>
<var>${netopeer_conn_id}</var>
<doc>Open a connection to the tools system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-05T00:37:05.945840" elapsed="0.297806"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-05T00:37:06.251596" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-05T00:37:06.261289" level="INFO">'/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth/sb-rsa-key.pub' -&gt; '/home/jenkins//sb-rsa-key.pub'</msg>
<arg>/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth/sb-rsa-key.pub</arg>
<arg>.</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-05T00:37:06.243847" elapsed="0.017528"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:06.262215" level="INFO">${netopeer_conn_id} = 28</msg>
<arg>${netopeer_conn_id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-05T00:37:06.261663" elapsed="0.000614"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:37:06.263012" level="INFO">Executing command 'docker run -dt -p 830:830 -v /home/jenkins/sb-rsa-key.pub:/home/netconf/.ssh/authorized_keys sysrepo/sysrepo-netopeer2:latest netopeer2-server -d -v 2'.</msg>
<msg time="2026-04-05T00:37:17.033900" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:37:17.034400" level="INFO">${stdout} = 27f99d8d6bdbcc3a73de59f52eb0cffc6c31f3e30412f05b0f0410002de7231a</msg>
<msg time="2026-04-05T00:37:17.034582" level="INFO">${stderr} = Unable to find image 'sysrepo/sysrepo-netopeer2:latest' locally
latest: Pulling from sysrepo/sysrepo-netopeer2
fc878cd0a91c: Pulling fs layer
399fb1102f3f: Pulling fs layer
6154df8ff988: Pulling fs la...</msg>
<msg time="2026-04-05T00:37:17.034724" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker run -dt -p ${netopeer_port}:830 -v /home/${TOOLS_SYSTEM_USER}/sb-rsa-key.pub:/home/${netopeer_username}/.ssh/authorized_keys ${netopeer_image} netopeer2-server -d -v 2</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:37:06.262554" elapsed="10.772248"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-05T00:37:17.035867" level="INFO">Executing command 'docker ps -a'.</msg>
<msg time="2026-04-05T00:37:17.127817" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-05T00:37:17.128263" level="INFO">${stdout} = CONTAINER ID   IMAGE                              COMMAND                  CREATED         STATUS                  PORTS                                     NAMES
27f99d8d6bdb   sysrepo/sysrepo-netope...</msg>
<msg time="2026-04-05T00:37:17.128369" level="INFO">${stderr} = </msg>
<msg time="2026-04-05T00:37:17.128502" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>docker ps -a</arg>
<arg>return_stdout=True</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-05T00:37:17.035414" elapsed="0.093149"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.130056" level="INFO">CONTAINER ID   IMAGE                              COMMAND                  CREATED         STATUS                  PORTS                                     NAMES
27f99d8d6bdb   sysrepo/sysrepo-netopeer2:latest   "netopeer2-server -d…"   3 seconds ago   Up Less than a second   0.0.0.0:830-&gt;830/tcp, [::]:830-&gt;830/tcp   vigilant_satoshi</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.129310" elapsed="0.000866"/>
</kw>
<doc>Start a new docker container for netopeer server.</doc>
<status status="PASS" start="2026-04-05T00:37:05.938944" elapsed="11.191386"/>
</kw>
<kw name="Add Netconf Key">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.135265" level="INFO">${mapping} = {'DEVICE_KEY': 'device-key', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_KEY=${netopeer_key}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.134239" elapsed="0.001087"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.169873" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.169494" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:37:17.170692" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/KeyAuth.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:37:17.170389" elapsed="0.000383">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/KeyAuth.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:37:17.170867" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:37:17.170060" elapsed="0.000832"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.171451" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:17.171051" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:37:17.171774" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/KeyAuth/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/KeyAuth/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:37:17.171946" level="INFO">${template} = $RESTCONF_ROOT/operations/netconf-keystore:add-keystore-entry
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:37:17.171636" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.172367" level="INFO">$RESTCONF_ROOT/operations/netconf-keystore:add-keystore-entry
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.172124" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.173417" level="INFO">mapping: {'DEVICE_KEY': 'device-key', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.173079" elapsed="0.000408"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.173916" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.173649" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.174841" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:37:17.174309" elapsed="0.000558"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:37:17.175925" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.175414" elapsed="0.000551"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:37:17.176135" elapsed="0.000039"/>
</return>
<msg time="2026-04-05T00:37:17.176405" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:37:17.175054" elapsed="0.001393"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.176603" elapsed="0.000412"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:37:17.174176" elapsed="0.002881"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.177995" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:37:17.177315" elapsed="0.000706"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:37:17.179050" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.178585" elapsed="0.000505"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:37:17.179258" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:37:17.179549" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:37:17.178206" elapsed="0.001369"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.179726" elapsed="0.000431"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:37:17.177171" elapsed="0.003030"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:37:17.173998" elapsed="0.006238"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:37:17.180279" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:37:17.180472" level="INFO">${mapping_to_use} = {'DEVICE_KEY': 'device-key', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:37:17.172809" elapsed="0.007689"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.172508" elapsed="0.008023"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.180707" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.180558" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.172481" elapsed="0.008302"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.181543" level="INFO">${final_text} = /rests/operations/netconf-keystore:add-keystore-entry</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.180923" elapsed="0.000648"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:37:17.181620" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:37:17.168890" elapsed="0.012992"/>
</kw>
<msg time="2026-04-05T00:37:17.181935" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:17.156371" elapsed="0.025611"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.194367" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.206566" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.218767" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.218959" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.219129" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.219522" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.219346" elapsed="0.000235"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:37:17.219332" elapsed="0.000272"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.219740" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.219902" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.220061" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:37:17.219303" elapsed="0.000809"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:37:17.219202" elapsed="0.000935"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.220319" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:37:17.220397" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:37:17.220526" level="INFO">${uri} = /rests/operations/netconf-keystore:add-keystore-entry</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:37:17.152232" elapsed="0.068319"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.244903" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.244529" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:37:17.245958" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/KeyAuth.titanium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:37:17.245737" elapsed="0.000285">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/KeyAuth.titanium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:37:17.246114" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:37:17.245086" elapsed="0.001052"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.246696" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:17.246295" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:37:17.247009" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/KeyAuth/post_data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/KeyAuth/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:37:17.247153" level="INFO">${template} = &lt;input xmlns="urn:opendaylight:netconf:keystore"&gt;
    &lt;key-credential&gt;
        &lt;key-id&gt;$DEVICE_KEY&lt;/key-id&gt;
        &lt;private-key&gt;-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: AES-...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:37:17.246877" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.247631" level="INFO">&lt;input xmlns="urn:opendaylight:netconf:keystore"&gt;
    &lt;key-credential&gt;
        &lt;key-id&gt;$DEVICE_KEY&lt;/key-id&gt;
        &lt;private-key&gt;-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: AES-128-CBC,EA61FA90F5252AA4DB801B1A95907E08\n\ntKdknMpuxmKIwoD6KOlsChbRszafdHN7+Vzzn3gErAMnktW9NSeCTpWeHbgdIYsK8Wh2FH978JxdS9hCqzrLQ0e73zr1pMRYPLaVg4zJRLJhemk9LXLQ2xFgtE86kvnlSADbu9JooDyDTYRdRC3+ekU2t1J6mUord7FM8T3fFpQ9XBxL2DPrctqlQgLtxZ9e6JPN5H7ftxo4x8RxLtXLyvTiO1inKPkuqok+Q5QhKedEQZIUqmeCjhnbfgRP/cxFzP97luGP4qSsbieQVt4g0DjNteLu128a0VYHK1wX/UUvLkpWNaX2XZMSZzCiY5bWFFMIaq0nOdQvn4UImYMcK/hxlj2Qk0LR5GrY4fjuhsFHNnICx14FNY1GSoAuYS16/P9wNbcT7DG/10JxjjQz25RIjhLkqoFPenj6/HPPVih7Brm5Sfjhg+mSGF2lq+ccTKsq/XlaZ0MwtuqpuhQzvwNDjINBXQlnjLQVtYDImmz8qPOwRFvvuap6oAhErTeTdLNHUIO1eMFgRCUObN/B0VhgAWKqLCAj4fsbKQNQI55qD++YGhH0h+JmIsA8QbTapq+2108amdt7Cy9EtFJCXDka6VzgPEIZgoEnUkiYu9LXp2twPbZ+B4+Ls6ukbemSEgOMcWmFLCXs7dY5nVWiie8x7xHPiExKNqAK/HoY7K5WQaaANaA8XYq8xcg2zOljpXV3n0/Y5J0svLnf4nmdSEwso1UnanzV0fagMaGLxYz8jGt2Xpbzv7uUw7w2qL/DFNvVSUXj3yu/FulU/TuFM3KnNDHgHAidA/SFzvltvX+2rs+ZUYKbpsooR3vlWPDMXPnQm9mZ5MKei4KRom4DbEFEyVALua7QktRTkK2/TpD0euX6zV7PwAOHEAiJbCcr5EWkaAsZGAns9mh0iNEwz6tTuZeaM6ipEAUlZdAbtx/Cd3k+Il6SuehDWjyGHIguVCGfW6VrwCUepna/cNpt8PHLXTC0TQgonyyBi29N0Ha/ReC1MPOe0Xq/G62gojbU3IUh1NkzkAMw6ShDuIUdm0fjes8Lok7FnLBIhNHHCPHnr9cKDyKdSolgnxdDuEUdLJyeq9TQLPSCZAZKAuihHDLKyHPBh/8N/nAOLnEJvdKA1ledQt378GRg/GTALWwg7LTAuz4iwwbEWnfwZv+s/R2RQHsR38wzknMzsfBHBxiwe0Hg2a9wgBJKhQyXJYBIHJVqElrMEHWyg1Wwfvf34EYwMkDLg6Os54h2zj7bPKg+c5AUrir0ptuhPFPpqY9yvTBYrOPHH9/Y7kc4NRVfcWGeiThrHcAEpNFStWzvDY4c4GtIIdj5l2mQKG10r+pOoiCSzGlP1WPrqHA4jDhpOPkrqTsXwhQQH3k1hpRoiFoKMXw2bR3WU+0SC2SvZXlNNozdxjzvIDAsMHXqiPdq94XXgZWROulm1XI7dLE3oecBRorvs1M1EOQMLrNCCcckpzx6KP+P5tNjwCfj5CP+vLo+PcBPd8plbLv9MPtRtOYysR5g1L8DRFpkykV8DfQdl1xPWE37KRMCj66/OYQCU+WhlDqp1YZHrZ5FahmIm+dX9p7npvyDDd//9L+EfA7S\n-----END RSA PRIVATE KEY-----&lt;/private-key&gt;
        &lt;passphrase&gt;topsecret&lt;/passphrase&gt;
    &lt;/key-credential&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.247335" elapsed="0.000362"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:37:17.248062" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.247765" elapsed="0.000354"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.248596" level="INFO">${mapping_to_use} = {'DEVICE_KEY': 'device-key', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.248284" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.248144" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.247747" elapsed="0.000932"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.249712" level="INFO">${final_text} = &lt;input xmlns="urn:opendaylight:netconf:keystore"&gt;
    &lt;key-credential&gt;
        &lt;key-id&gt;device-key&lt;/key-id&gt;
        &lt;private-key&gt;-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.248819" elapsed="0.000977"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:37:17.249855" elapsed="0.000032"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:37:17.243960" elapsed="0.006027"/>
</kw>
<msg time="2026-04-05T00:37:17.250049" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:17.231588" elapsed="0.018509"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.262324" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.274479" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.286648" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.286840" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.287009" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.287364" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.287224" elapsed="0.000209"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:37:17.287209" elapsed="0.000249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.287599" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.287760" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.287918" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:37:17.287180" elapsed="0.000790"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:37:17.287082" elapsed="0.000913"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.288134" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:37:17.288207" elapsed="0.000016"/>
</return>
<msg time="2026-04-05T00:37:17.288348" level="INFO">${data} = &lt;input xmlns="urn:opendaylight:netconf:keystore"&gt;
    &lt;key-credential&gt;
        &lt;key-id&gt;device-key&lt;/key-id&gt;
        &lt;private-key&gt;-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:37:17.230782" elapsed="0.057594"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:37:17.289656" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/KeyAuth/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:37:17.289379" elapsed="0.000341">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/KeyAuth/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:37:17.289812" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:37:17.289029" elapsed="0.000808"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.290146" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.289906" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.290701" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.290388" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.290226" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.289888" elapsed="0.000896"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.293072" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:17.290931" elapsed="0.002167"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:37:17.293148" elapsed="0.000058"/>
</return>
<msg time="2026-04-05T00:37:17.293334" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/suites/netconf/KeyAuth/../../../variables/netconf/KeyAuth/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:37:17.288757" elapsed="0.004602"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.294836" level="INFO">/rests/operations/netconf-keystore:add-keystore-entry</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.294590" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.295272" level="INFO">&lt;input xmlns="urn:opendaylight:netconf:keystore"&gt;
    &lt;key-credential&gt;
        &lt;key-id&gt;device-key&lt;/key-id&gt;
        &lt;private-key&gt;-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,EA61FA90F5252AA4DB801B1A95907E08

tKdknMpuxmKIwoD6KOlsChbRszafdHN7+Vzzn3gErAMnktW9NSeCTpWeHbgdIYsK8Wh2FH978JxdS9hCqzrLQ0e73zr1pMRYPLaVg4zJRLJhemk9LXLQ2xFgtE86kvnlSADbu9JooDyDTYRdRC3+ekU2t1J6mUord7FM8T3fFpQ9XBxL2DPrctqlQgLtxZ9e6JPN5H7ftxo4x8RxLtXLyvTiO1inKPkuqok+Q5QhKedEQZIUqmeCjhnbfgRP/cxFzP97luGP4qSsbieQVt4g0DjNteLu128a0VYHK1wX/UUvLkpWNaX2XZMSZzCiY5bWFFMIaq0nOdQvn4UImYMcK/hxlj2Qk0LR5GrY4fjuhsFHNnICx14FNY1GSoAuYS16/P9wNbcT7DG/10JxjjQz25RIjhLkqoFPenj6/HPPVih7Brm5Sfjhg+mSGF2lq+ccTKsq/XlaZ0MwtuqpuhQzvwNDjINBXQlnjLQVtYDImmz8qPOwRFvvuap6oAhErTeTdLNHUIO1eMFgRCUObN/B0VhgAWKqLCAj4fsbKQNQI55qD++YGhH0h+JmIsA8QbTapq+2108amdt7Cy9EtFJCXDka6VzgPEIZgoEnUkiYu9LXp2twPbZ+B4+Ls6ukbemSEgOMcWmFLCXs7dY5nVWiie8x7xHPiExKNqAK/HoY7K5WQaaANaA8XYq8xcg2zOljpXV3n0/Y5J0svLnf4nmdSEwso1UnanzV0fagMaGLxYz8jGt2Xpbzv7uUw7w2qL/DFNvVSUXj3yu/FulU/TuFM3KnNDHgHAidA/SFzvltvX+2rs+ZUYKbpsooR3vlWPDMXPnQm9mZ5MKei4KRom4DbEFEyVALua7QktRTkK2/TpD0euX6zV7PwAOHEAiJbCcr5EWkaAsZGAns9mh0iNEwz6tTuZeaM6ipEAUlZdAbtx/Cd3k+Il6SuehDWjyGHIguVCGfW6VrwCUepna/cNpt8PHLXTC0TQgonyyBi29N0Ha/ReC1MPOe0Xq/G62gojbU3IUh1NkzkAMw6ShDuIUdm0fjes8Lok7FnLBIhNHHCPHnr9cKDyKdSolgnxdDuEUdLJyeq9TQLPSCZAZKAuihHDLKyHPBh/8N/nAOLnEJvdKA1ledQt378GRg/GTALWwg7LTAuz4iwwbEWnfwZv+s/R2RQHsR38wzknMzsfBHBxiwe0Hg2a9wgBJKhQyXJYBIHJVqElrMEHWyg1Wwfvf34EYwMkDLg6Os54h2zj7bPKg+c5AUrir0ptuhPFPpqY9yvTBYrOPHH9/Y7kc4NRVfcWGeiThrHcAEpNFStWzvDY4c4GtIIdj5l2mQKG10r+pOoiCSzGlP1WPrqHA4jDhpOPkrqTsXwhQQH3k1hpRoiFoKMXw2bR3WU+0SC2SvZXlNNozdxjzvIDAsMHXqiPdq94XXgZWROulm1XI7dLE3oecBRorvs1M1EOQMLrNCCcckpzx6KP+P5tNjwCfj5CP+vLo+PcBPd8plbLv9MPtRtOYysR5g1L8DRFpkykV8DfQdl1xPWE37KRMCj66/OYQCU+WhlDqp1YZHrZ5FahmIm+dX9p7npvyDDd//9L+EfA7S
-----END RSA PRIVATE KEY-----&lt;/private-key&gt;
        &lt;passphrase&gt;topsecret&lt;/passphrase&gt;
    &lt;/key-credential&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.295036" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.295740" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.295494" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.296163" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.295927" elapsed="0.000279"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:37:17.296963" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:37:17.296769" elapsed="0.000219"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:37:17.297329" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:37:17.297137" elapsed="0.000217"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.297513" elapsed="0.000228"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.298143" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.297898" elapsed="0.000288"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:37:17.298228" elapsed="0.000044"/>
</return>
<msg time="2026-04-05T00:37:17.298435" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:37:17.296402" elapsed="0.002060"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:37:17.386962" level="INFO">POST Request : url=http://10.30.170.184:8181/rests/operations/netconf-keystore:add-keystore-entry 
 path_url=/rests/operations/netconf-keystore:add-keystore-entry 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '1957', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="urn:opendaylight:netconf:keystore"&gt;
    &lt;key-credential&gt;
        &lt;key-id&gt;device-key&lt;/key-id&gt;
        &lt;private-key&gt;-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,EA61FA90F5252AA4DB801B1A95907E08

tKdknMpuxmKIwoD6KOlsChbRszafdHN7+Vzzn3gErAMnktW9NSeCTpWeHbgdIYsK8Wh2FH978JxdS9hCqzrLQ0e73zr1pMRYPLaVg4zJRLJhemk9LXLQ2xFgtE86kvnlSADbu9JooDyDTYRdRC3+ekU2t1J6mUord7FM8T3fFpQ9XBxL2DPrctqlQgLtxZ9e6JPN5H7ftxo4x8RxLtXLyvTiO1inKPkuqok+Q5QhKedEQZIUqmeCjhnbfgRP/cxFzP97luGP4qSsbieQVt4g0DjNteLu128a0VYHK1wX/UUvLkpWNaX2XZMSZzCiY5bWFFMIaq0nOdQvn4UImYMcK/hxlj2Qk0LR5GrY4fjuhsFHNnICx14FNY1GSoAuYS16/P9wNbcT7DG/10JxjjQz25RIjhLkqoFPenj6/HPPVih7Brm5Sfjhg+mSGF2lq+ccTKsq/XlaZ0MwtuqpuhQzvwNDjINBXQlnjLQVtYDImmz8qPOwRFvvuap6oAhErTeTdLNHUIO1eMFgRCUObN/B0VhgAWKqLCAj4fsbKQNQI55qD++YGhH0h+JmIsA8QbTapq+2108amdt7Cy9EtFJCXDka6VzgPEIZgoEnUkiYu9LXp2twPbZ+B4+Ls6ukbemSEgOMcWmFLCXs7dY5nVWiie8x7xHPiExKNqAK/HoY7K5WQaaANaA8XYq8xcg2zOljpXV3n0/Y5J0svLnf4nmdSEwso1UnanzV0fagMaGLxYz8jGt2Xpbzv7uUw7w2qL/DFNvVSUXj3yu/FulU/TuFM3KnNDHgHAidA/SFzvltvX+2rs+ZUYKbpsooR3vlWPDMXPnQm9mZ5MKei4KRom4DbEFEyVALua7QktRTkK2/TpD0euX6zV7PwAOHEAiJbCcr5EWkaAsZGAns9mh0iNEwz6tTuZeaM6ipEAUlZdAbtx/Cd3k+Il6SuehDWjyGHIguVCGfW6VrwCUepna/cNpt8PHLXTC0TQgonyyBi29N0Ha/ReC1MPOe0Xq/G62gojbU3IUh1NkzkAMw6ShDuIUdm0fjes8Lok7FnLBIhNHHCPHnr9cKDyKdSolgnxdDuEUdLJyeq9TQLPSCZAZKAuihHDLKyHPBh/8N/nAOLnEJvdKA1ledQt378GRg/GTALWwg7LTAuz4iwwbEWnfwZv+s/R2RQHsR38wzknMzsfBHBxiwe0Hg2a9wgBJKhQyXJYBIHJVqElrMEHWyg1Wwfvf34EYwMkDLg6Os54h2zj7bPKg+c5AUrir0ptuhPFPpqY9yvTBYrOPHH9/Y7kc4NRVfcWGeiThrHcAEpNFStWzvDY4c4GtIIdj5l2mQKG10r+pOoiCSzGlP1WPrqHA4jDhpOPkrqTsXwhQQH3k1hpRoiFoKMXw2bR3WU+0SC2SvZXlNNozdxjzvIDAsMHXqiPdq94XXgZWROulm1XI7dLE3oecBRorvs1M1EOQMLrNCCcckpzx6KP+P5tNjwCfj5CP+vLo+PcBPd8plbLv9MPtRtOYysR5g1L8DRFpkykV8DfQdl1xPWE37KRMCj66/OYQCU+WhlDqp1YZHrZ5FahmIm+dX9p7npvyDDd//9L+EfA7S
-----END RSA PRIVATE KEY-----&lt;/private-key&gt;
        &lt;passphrase&gt;topsecret&lt;/passphrase&gt;
    &lt;/key-credential&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-05T00:37:17.387182" level="INFO">POST Response : url=http://10.30.170.184:8181/rests/operations/netconf-keystore:add-keystore-entry 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node0x3u6sokxjxyvbn7am33ubiqh8.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 04-Apr-2026 00:37:17 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:37:17.387471" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:37:17.300826" elapsed="0.086707"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.298535" elapsed="0.089107"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.388038" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.387702" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.298516" elapsed="0.089720"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.395779" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.390522" elapsed="0.005353"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.390000" elapsed="0.005955"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.389959" elapsed="0.006051"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.399500" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.396648" elapsed="0.002899"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.396134" elapsed="0.003448"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.396098" elapsed="0.003507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.400138" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.399764" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.400478" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.400234" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.401016" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.400717" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.400560" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.400216" elapsed="0.000881"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.401643" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.401265" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.401964" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.401739" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.402508" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.402199" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.402045" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.401721" elapsed="0.000868"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:17.402732" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:37:17.403577" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.403270" elapsed="0.000333"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.403754" elapsed="0.002305"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:37:17.389046" elapsed="0.017076"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:37:17.406300" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-05T00:37:17.406194" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.406175" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.406548" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:37:17.406617" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:37:17.408869" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:37:17.293706" elapsed="0.115190"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:37:17.408966" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:37:17.409116" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:37:17.141290" elapsed="0.267878"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.409519" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.409272" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.409255" elapsed="0.000362"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:37:17.409650" elapsed="0.000026"/>
</return>
<arg>folder=${directory_with_keyauth_template}</arg>
<arg>mapping=${mapping}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:37:17.135958" elapsed="0.273815"/>
</kw>
<doc>Add Netconf Southbound key containing details about device private key and passphrase</doc>
<status status="PASS" start="2026-04-05T00:37:17.130693" elapsed="0.279136"/>
</kw>
<doc>Get the suite ready for callhome test cases.</doc>
<status status="PASS" start="2026-04-05T00:37:04.599124" elapsed="12.810752"/>
</kw>
<test id="s1-s7-s1-t1" name="Check_Device_Is_Not_Configured_At_Beginning" line="33">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Has_No_Netconf_Connector" owner="NetconfKeywords">
<kw name="Count_Netconf_Connectors_For_Device" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.422136" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.420058" elapsed="0.002106"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.422501" elapsed="0.000023"/>
</kw>
<var name="${nv}"/>
<status status="NOT RUN" start="2026-04-05T00:37:17.422338" elapsed="0.000223"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="NOT RUN" start="2026-04-05T00:37:17.422220" elapsed="0.000368"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.422891" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.422653" elapsed="0.000295"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.423682" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.423200" elapsed="0.000508"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.422973" elapsed="0.000771"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.423924" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.423768" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.422636" elapsed="0.001362"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:37:17.424032" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:37:17.424180" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:37:17.419605" elapsed="0.004637"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:37:17.424292" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:37:17.424451" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:37:17.419102" elapsed="0.005375"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.431808" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.431548" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.432243" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.432002" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:37:17.440610" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0x3u6sokxjxyvbn7am33ubiqh8.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:37:17.441777" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1089'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"}]}} 
 </msg>
<msg time="2026-04-05T00:37:17.441924" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:37:17.434431" elapsed="0.007529"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.432354" elapsed="0.009667"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.442267" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.442057" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.432336" elapsed="0.010050"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.447465" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.443793" elapsed="0.003751"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.443495" elapsed="0.004105"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.443468" elapsed="0.004168"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.451077" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.448022" elapsed="0.003111"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.447717" elapsed="0.003459"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.447692" elapsed="0.003512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.451779" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.451373" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.452104" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.451877" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.452652" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.452337" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.452185" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.451859" elapsed="0.000878"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.453332" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.452941" elapsed="0.000418"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.453676" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.453445" elapsed="0.000395"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.454309" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.454018" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.453864" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.453411" elapsed="0.000981"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:17.454561" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:37:17.455345" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.455071" elapsed="0.000299"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.455537" elapsed="0.002311"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:37:17.442892" elapsed="0.015027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:37:17.458095" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:17.457990" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.457971" elapsed="0.000191"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:37:17.461271" level="INFO">${text_normalized} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topo...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:37:17.458301" elapsed="0.002999"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:37:17.461353" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:37:17.461528" level="INFO">${response_text} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topo...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:37:17.427070" elapsed="0.034485"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:37:17.461612" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:37:17.461759" level="INFO">${mounts} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topo...</msg>
<var>${mounts}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:37:17.424693" elapsed="0.037092"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.462189" level="INFO">{
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topology-parameters": {
       "encryption": {
        "encryption-alg": [
         "AEAD_AES_128_GCM",
         "AEAD_AES_256_GCM",
         "aes128-cbc",
         "aes128-ctr",
         "aes192-cbc",
         "aes192-ctr",
         "aes256-cbc",
         "aes256-ctr",
         "chacha20-poly1305"
        ]
       },
       "host-key": {
        "host-key-alg": [
         "ecdsa-sha2-nistp256",
         "ecdsa-sha2-nistp384",
         "ecdsa-sha2-nistp521",
         "rsa-sha2-256",
         "rsa-sha2-512",
         "ssh-ed25519",
         "ssh-rsa"
        ]
       },
       "key-exchange": {
        "key-exchange-alg": [
         "curve25519-sha256",
         "curve448-sha512",
         "diffie-hellman-group-exchange-sha256",
         "diffie-hellman-group14-sha256",
         "diffie-hellman-group15-sha512",
         "diffie-hellman-group16-sha512",
         "diffie-hellman-group17-sha512",
         "diffie-hellman-group18-sha512",
         "ecdh-sha2-nistp256",
         "ecdh-sha2-nistp384",
         "ecdh-sha2-nistp521",
         "mlkem1024nistp384-sha384",
         "mlkem768nistp256-sha256",
         "mlkem768x25519-sha256",
         "sntrup761x25519-sha512"
        ]
       },
       "mac": {
        "mac-alg": [
         "hmac-sha1",
         "hmac-sha2-256",
         "hmac-sha2-512"
        ]
       }
      }
     }
    }
   },
   {
    "topology-id": "flow:1"
   },
   {
    "topology-id": "hwvtep:1"
   },
   {
    "topology-id": "ovsdb:1"
   }
  ]
 }
}
</msg>
<arg>${mounts}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.461940" elapsed="0.000305"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.462794" level="INFO">${actual_count} = 0</msg>
<var>${actual_count}</var>
<arg>len('''${mounts}'''.split('"node-id": "${device_name}"'))-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.462393" elapsed="0.000427"/>
</kw>
<return>
<value>${actual_count}</value>
<status status="PASS" start="2026-04-05T00:37:17.462866" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:37:17.463016" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Count all instances of the specified device in the Netconf topology (usually 0 or 1).</doc>
<status status="PASS" start="2026-04-05T00:37:17.411500" elapsed="0.051540"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.463512" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${count}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:37:17.463197" elapsed="0.000375"/>
</kw>
<arg>${device_name}</arg>
<doc>Check that there are no instances of the specified device in the Netconf topology.</doc>
<status status="PASS" start="2026-04-05T00:37:17.411089" elapsed="0.052542"/>
</kw>
<arg>5x</arg>
<arg>20</arg>
<arg>NetconfKeywords.Check_Device_Has_No_Netconf_Connector</arg>
<arg>${device_name}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:37:17.410620" elapsed="0.053056"/>
</kw>
<doc>Sanity check making sure our device is not there. Fail if found.</doc>
<status status="PASS" start="2026-04-05T00:37:17.409936" elapsed="0.053856"/>
</test>
<test id="s1-s7-s1-t2" name="Configure_Device_On_Netconf" line="37">
<kw name="Configure_Device_In_Netconf" owner="NetconfKeywords">
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:17.484146" elapsed="0.000436"/>
</kw>
<msg time="2026-04-05T00:37:17.484634" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:17.483789" elapsed="0.000895"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:37:17.483384" elapsed="0.001375"/>
</kw>
<msg time="2026-04-05T00:37:17.484801" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:17.474635" elapsed="0.010208"/>
</kw>
<msg time="2026-04-05T00:37:17.484944" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:37:17.474305" elapsed="0.010663"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.485875" level="INFO">${mapping} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '830', 'DEVICE_USER': 'netconf', 'DEVICE_PASSWORD': 'wrong', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/s...</msg>
<var>${mapping}</var>
<arg>DEVICE_IP=${device_address}</arg>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>DEVICE_PORT=${device_port}</arg>
<arg>DEVICE_USER=${device_user}</arg>
<arg>DEVICE_PASSWORD=${device_password}</arg>
<arg>DEVICE_KEY=${device_key}</arg>
<arg>SCHEMA_DIRECTORY=${schema_directory}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.485149" elapsed="0.000754"/>
</kw>
<if>
<branch type="IF" condition="'${http_method}'=='post'">
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.486306" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.485993" elapsed="0.000379"/>
</branch>
<branch type="ELSE">
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.517710" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.517320" elapsed="0.000418"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:37:17.518503" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device-key.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:37:17.518248" elapsed="0.000326">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device-key.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:37:17.518667" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:37:17.517895" elapsed="0.000796"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.519230" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:17.518850" elapsed="0.000406"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:37:17.519563" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device-key/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device-key/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:37:17.519706" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:37:17.519411" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.520122" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.519882" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.521179" level="INFO">mapping: {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '830', 'DEVICE_USER': 'netconf', 'DEVICE_PASSWORD': 'wrong', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/schema', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.520895" elapsed="0.000330"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.521826" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.521386" elapsed="0.000467"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.522759" level="INFO">${value} = 10.30.170.167</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:37:17.522212" elapsed="0.000573"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:37:17.523949" level="INFO">${encoded} = 10.30.170.167</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.523409" elapsed="0.000583"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:37:17.524118" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:37:17.524357" level="INFO">${encoded_value} = 10.30.170.167</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:37:17.522970" elapsed="0.001414"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.524567" elapsed="0.000548"/>
</kw>
<var name="${key}">DEVICE_IP</var>
<var name="${value}">10.30.170.167</var>
<status status="PASS" start="2026-04-05T00:37:17.522080" elapsed="0.003082"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.525984" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:37:17.525449" elapsed="0.000563"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:37:17.527229" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.526717" elapsed="0.000555"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:37:17.527395" elapsed="0.000053"/>
</return>
<msg time="2026-04-05T00:37:17.527654" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:37:17.526216" elapsed="0.001466"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.527847" elapsed="0.000503"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:37:17.525287" elapsed="0.003110"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.529229" level="INFO">${value} = 830</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:37:17.528680" elapsed="0.000577"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:37:17.530484" level="INFO">${encoded} = 830</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.529948" elapsed="0.000580"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:37:17.530649" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:37:17.530887" level="INFO">${encoded_value} = 830</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:37:17.529474" elapsed="0.001440"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.531080" elapsed="0.000691"/>
</kw>
<var name="${key}">DEVICE_PORT</var>
<var name="${value}">830</var>
<status status="PASS" start="2026-04-05T00:37:17.528534" elapsed="0.003283"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.532619" level="INFO">${value} = netconf</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:37:17.532080" elapsed="0.000567"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:37:17.533855" level="INFO">${encoded} = netconf</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.533342" elapsed="0.000554"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:37:17.534019" elapsed="0.000033"/>
</return>
<msg time="2026-04-05T00:37:17.534254" level="INFO">${encoded_value} = netconf</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:37:17.532848" elapsed="0.001433"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.534471" elapsed="0.000508"/>
</kw>
<var name="${key}">DEVICE_USER</var>
<var name="${value}">netconf</var>
<status status="PASS" start="2026-04-05T00:37:17.531936" elapsed="0.003089"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.535924" level="INFO">${value} = wrong</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:37:17.535289" elapsed="0.000663"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:37:17.537386" level="INFO">${encoded} = wrong</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.536862" elapsed="0.000581"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:37:17.537619" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:37:17.537874" level="INFO">${encoded_value} = wrong</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:37:17.536193" elapsed="0.001708"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.538063" elapsed="0.000618"/>
</kw>
<var name="${key}">DEVICE_PASSWORD</var>
<var name="${value}">wrong</var>
<status status="PASS" start="2026-04-05T00:37:17.535145" elapsed="0.003582"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.539734" level="INFO">${value} = device-key</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:37:17.538991" elapsed="0.000771"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:37:17.540937" level="INFO">${encoded} = device-key</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.540443" elapsed="0.000536"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:37:17.541139" elapsed="0.000035"/>
</return>
<msg time="2026-04-05T00:37:17.541377" level="INFO">${encoded_value} = device-key</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:37:17.539964" elapsed="0.001438"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.541593" elapsed="0.000481"/>
</kw>
<var name="${key}">DEVICE_KEY</var>
<var name="${value}">device-key</var>
<status status="PASS" start="2026-04-05T00:37:17.538848" elapsed="0.003269"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.543519" level="INFO">${value} = /tmp/schema</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:37:17.542355" elapsed="0.001227"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:37:17.546185" level="INFO">${encoded} = /tmp/schema</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.545014" elapsed="0.001260"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:37:17.546620" elapsed="0.000069"/>
</return>
<msg time="2026-04-05T00:37:17.547120" level="INFO">${encoded_value} = /tmp/schema</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:37:17.544008" elapsed="0.003168"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.547589" elapsed="0.001163"/>
</kw>
<var name="${key}">SCHEMA_DIRECTORY</var>
<var name="${value}">/tmp/schema</var>
<status status="PASS" start="2026-04-05T00:37:17.542228" elapsed="0.006621"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.550728" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:37:17.549405" elapsed="0.001381"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:37:17.553293" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.552168" elapsed="0.001213"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:37:17.553612" elapsed="0.000032"/>
</return>
<msg time="2026-04-05T00:37:17.553837" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:37:17.551192" elapsed="0.002670"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.554006" elapsed="0.000527"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:37:17.549121" elapsed="0.005455"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:37:17.521903" elapsed="0.032706"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:37:17.554651" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:37:17.554811" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '830', 'DEVICE_USER': 'netconf', 'DEVICE_PASSWORD': 'wrong', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/s...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:37:17.520578" elapsed="0.034259"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.520232" elapsed="0.034637"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.555038" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.554893" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.520213" elapsed="0.034900"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.555932" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.555248" elapsed="0.000711"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:37:17.556006" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:37:17.516698" elapsed="0.039430"/>
</kw>
<msg time="2026-04-05T00:37:17.556222" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:17.504162" elapsed="0.052109"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.568709" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.581195" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.593483" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.593670" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.593837" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.594192" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.594053" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:37:17.594038" elapsed="0.000232"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.594403" elapsed="0.000034"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.594580" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.594739" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:37:17.594010" elapsed="0.000780"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:37:17.593909" elapsed="0.000906"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.594954" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:37:17.595027" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:37:17.595144" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:37:17.499959" elapsed="0.095210"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.621313" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.620916" elapsed="0.000425"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:37:17.622049" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device-key.titanium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:37:17.621843" elapsed="0.000271">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device-key.titanium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-05T00:37:17.622241" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:37:17.621515" elapsed="0.000750"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.622824" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:17.622439" elapsed="0.000411"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:37:17.623149" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device-key/data.xml"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device-key/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:37:17.623283" level="INFO">${template} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVI...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:37:17.623005" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.623726" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;$DEVICE_NAME&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;$DEVICE_IP&lt;/host&gt;
    &lt;port&gt;$DEVICE_PORT&lt;/port&gt;
    &lt;key-based&gt;
      &lt;username&gt;$DEVICE_USER&lt;/username&gt;
      &lt;key-id&gt;device-key&lt;/key-id&gt;
    &lt;/key-based&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.623481" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-05T00:37:17.624133" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.623844" elapsed="0.000347"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.624671" level="INFO">${mapping_to_use} = {'DEVICE_IP': '10.30.170.167', 'DEVICE_NAME': 'netconf-test-device', 'DEVICE_PORT': '830', 'DEVICE_USER': 'netconf', 'DEVICE_PASSWORD': 'wrong', 'DEVICE_KEY': 'device-key', 'SCHEMA_DIRECTORY': '/tmp/s...</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.624356" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.624215" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.623826" elapsed="0.000928"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.625617" level="INFO">${final_text} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.167&lt;/host&gt;
    &lt;...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.624894" elapsed="0.000754"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:37:17.625697" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:37:17.620290" elapsed="0.005530"/>
</kw>
<msg time="2026-04-05T00:37:17.625874" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:17.607733" elapsed="0.018187"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.638533" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.651145" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.663339" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.663576" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.663748" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.664105" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.663966" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:37:17.663951" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.664317" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.664493" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.664657" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:37:17.663923" elapsed="0.000787"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:37:17.663822" elapsed="0.000913"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.664873" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:37:17.664948" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:37:17.665084" level="INFO">${data} = &lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.167&lt;/host&gt;
    &lt;...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:37:17.605113" elapsed="0.060000"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:37:17.666380" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device-key/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:37:17.666134" elapsed="0.000327">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device-key/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-05T00:37:17.666554" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:37:17.665791" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.666888" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.666648" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.667437" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.667132" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.666969" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.666630" elapsed="0.000891"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.669846" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:17.667665" elapsed="0.002208"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-05T00:37:17.669923" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:37:17.670075" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-05T00:37:17.665459" elapsed="0.004640"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.671476" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.671212" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.671906" level="INFO">&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.167&lt;/host&gt;
    &lt;port&gt;830&lt;/port&gt;
    &lt;key-based&gt;
      &lt;username&gt;netconf&lt;/username&gt;
      &lt;key-id&gt;device-key&lt;/key-id&gt;
    &lt;/key-based&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.671669" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.672390" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.672143" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.672837" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.672595" elapsed="0.000286"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-05T00:37:17.673717" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-05T00:37:17.673520" elapsed="0.000223"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-05T00:37:17.674062" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-05T00:37:17.673890" elapsed="0.000197"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.674230" elapsed="0.000213"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.674846" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.674600" elapsed="0.000290"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-05T00:37:17.674931" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:37:17.675083" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-05T00:37:17.673103" elapsed="0.002005"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.677464" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.675177" elapsed="0.002356"/>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:37:17.688073" level="INFO">PUT Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0x3u6sokxjxyvbn7am33ubiqh8.node0', 'Content-Length': '415', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;node xmlns="urn:TBD:params:xml:ns:yang:network-topology"&gt;
  &lt;node-id&gt;netconf-test-device&lt;/node-id&gt;
  &lt;netconf-node xmlns="urn:opendaylight:netconf-node-topology"&gt;
    &lt;host&gt;10.30.170.167&lt;/host&gt;
    &lt;port&gt;830&lt;/port&gt;
    &lt;key-based&gt;
      &lt;username&gt;netconf&lt;/username&gt;
      &lt;key-id&gt;device-key&lt;/key-id&gt;
    &lt;/key-based&gt;
    &lt;tcp-only&gt;false&lt;/tcp-only&gt;
    &lt;keepalive-delay&gt;0&lt;/keepalive-delay&gt;
  &lt;/netconf-node&gt;
&lt;/node&gt; 
 </msg>
<msg time="2026-04-05T00:37:17.688150" level="INFO">PUT Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 status=201, reason=Created 
 headers={'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-05T00:37:17.688272" level="INFO">${response} = &lt;Response [201]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:37:17.677703" elapsed="0.010603"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.677561" elapsed="0.010811"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.675160" elapsed="0.013244"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.693146" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.689769" elapsed="0.003440"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.689462" elapsed="0.003797"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.689414" elapsed="0.003879"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.696902" level="INFO">201</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.693702" elapsed="0.003262"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.693370" elapsed="0.003674"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.693347" elapsed="0.003731"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.697845" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.697299" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.698295" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.697979" elapsed="0.000395"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.699063" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.698650" elapsed="0.000448"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.698408" elapsed="0.000738"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.697954" elapsed="0.001222"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.699910" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.699388" elapsed="0.000559"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.700352" elapsed="0.000114"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.700040" elapsed="0.000483"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.701213" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.700781" elapsed="0.000469"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.700558" elapsed="0.000741"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.700016" elapsed="0.001313"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:17.701550" elapsed="0.000485"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:37:17.702664" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.702256" elapsed="0.000445"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.702908" elapsed="0.003236"/>
</kw>
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:37:17.688929" elapsed="0.017303"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:37:17.706490" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-05T00:37:17.706325" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.706300" elapsed="0.000311"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.706811" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-05T00:37:17.706905" elapsed="0.000020"/>
</return>
<msg time="2026-04-05T00:37:17.709992" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-05T00:37:17.670435" elapsed="0.039583"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:37:17.710083" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:37:17.710235" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-05T00:37:17.489223" elapsed="0.221037"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.710607" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.710358" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.710341" elapsed="0.000358"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:37:17.710731" elapsed="0.000026"/>
</return>
<arg>folder=${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-05T00:37:17.486641" elapsed="0.224213"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.486396" elapsed="0.224501"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.485975" elapsed="0.224945"/>
</if>
<kw name="Set To Dictionary" owner="Collections">
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<arg>${device_type}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.711060" elapsed="0.000239"/>
</kw>
<arg>${device_name}</arg>
<arg>device_type=${device_type_key}</arg>
<arg>device_port=${netopeer_port}</arg>
<arg>device_user=${netopeer_username}</arg>
<arg>device_password=${netopeer_password}</arg>
<arg>device_key=${netopeer_key}</arg>
<arg>http_timeout=2</arg>
<doc>Tell Netconf about the specified device so it can add it into its configuration.</doc>
<status status="PASS" start="2026-04-05T00:37:17.464987" elapsed="0.246377"/>
</kw>
<doc>Make request to configure netconf netopeer with wrong password. Correct auth is netconf/netconf
ODL should connect to device using public key auth as password auth will fail.</doc>
<status status="PASS" start="2026-04-05T00:37:17.464217" elapsed="0.247298"/>
</test>
<test id="s1-s7-s1-t3" name="Wait_For_Device_To_Become_Connected" line="44">
<kw name="Wait_Device_Connected" owner="NetconfKeywords">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Connected" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.725449" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.723363" elapsed="0.002115"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.726141" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.725820" elapsed="0.000347"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:37:17.725671" elapsed="0.000532"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.726804" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.726487" elapsed="0.000343"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:37:17.726326" elapsed="0.000539"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:37:17.725535" elapsed="0.001359"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.727194" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.726958" elapsed="0.000293"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.727978" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.727515" elapsed="0.000490"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.727275" elapsed="0.000766"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.728222" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.728066" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.726941" elapsed="0.001356"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:37:17.728329" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:37:17.728492" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:37:17.722915" elapsed="0.005603"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:37:17.728566" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:37:17.728708" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:37:17.722335" elapsed="0.006398"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.735908" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.735656" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.736341" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.736101" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:37:17.746568" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0x3u6sokxjxyvbn7am33ubiqh8.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:37:17.746965" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '224'} 
 body={"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":830,"connection-status":"connecting","key-based":{"username":"netconf","key-id":"device-key"},"host":"10.30.170.167"}}]} 
 </msg>
<msg time="2026-04-05T00:37:17.747112" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:37:17.738543" elapsed="0.008604"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.736465" elapsed="0.010741"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.747470" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.747242" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.736446" elapsed="0.011144"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.752606" level="INFO">{"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":830,"connection-status":"connecting","key-based":{"username":"netconf","key-id":"device-key"},"host":"10.30.170.167"}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.748997" elapsed="0.003676"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.748677" elapsed="0.004045"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.748651" elapsed="0.004106"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.756490" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:17.753172" elapsed="0.003384"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.752835" elapsed="0.003774"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.752812" elapsed="0.003830"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.757444" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.756872" elapsed="0.000613"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.757997" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.757671" elapsed="0.000405"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.758764" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.758323" elapsed="0.000479"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.758109" elapsed="0.000743"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.757644" elapsed="0.001237"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.759613" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.759092" elapsed="0.000558"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:17.760057" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:17.759746" elapsed="0.000390"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.760807" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:17.760380" elapsed="0.000464"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:17.760169" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.759722" elapsed="0.001200"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:17.761147" elapsed="0.000501"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:37:17.762277" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:17.761871" elapsed="0.000442"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:37:17.762542" elapsed="0.003260"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:37:17.748069" elapsed="0.017801"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:37:17.766053" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:17.765944" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:17.765925" elapsed="0.000198"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:37:17.769015" level="INFO">${text_normalized} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "key-based": {
     "key-id": "device-key",
     "u...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:37:17.766263" elapsed="0.002781"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:37:17.769095" elapsed="0.000036"/>
</return>
<msg time="2026-04-05T00:37:17.769262" level="INFO">${response_text} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "key-based": {
     "key-id": "device-key",
     "u...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:37:17.731372" elapsed="0.037916"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:37:17.769346" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:37:17.769508" level="INFO">${device_status} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "key-based": {
     "key-id": "device-key",
     "u...</msg>
<var>${device_status}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:37:17.728952" elapsed="0.040583"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-05T00:37:17.770050" level="FAIL">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "key-based": {
     "key-id": "device-key",
     "username": "netconf"
    },
    "port": 830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</msg>
<arg>${device_status}</arg>
<arg>connection-status": "connected"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-05T00:37:17.769692" elapsed="0.000435">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "key-based": {
     "key-id": "device-key",
     "username": "netconf"
    },
    "port": 830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device is accessible from Netconf.</doc>
<status status="FAIL" start="2026-04-05T00:37:17.713344" elapsed="0.056913">'{
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "connection-status": "connecting",
    "host": "10.30.170.167",
    "key-based": {
     "key-id": "device-key",
     "username": "netconf"
    },
    "port": 830
   },
   "node-id": "netconf-test-device"
  }
 ]
}
' does not contain 'connection-status": "connected"'</status>
</kw>
<kw name="Check_Device_Connected" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.790253" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:18.787903" elapsed="0.002384"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.790998" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:18.790674" elapsed="0.000351"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:37:18.790521" elapsed="0.000540"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.791624" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:18.791290" elapsed="0.000361"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:37:18.791143" elapsed="0.000544"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:37:18.790363" elapsed="0.001353"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:18.792053" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:18.791794" elapsed="0.000316"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.792871" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:18.792365" elapsed="0.000533"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:18.792136" elapsed="0.000798"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:18.793119" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:18.792960" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.791772" elapsed="0.001424"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:37:18.793232" elapsed="0.000037"/>
</return>
<msg time="2026-04-05T00:37:18.793393" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:37:18.787399" elapsed="0.006034"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:37:18.793482" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:37:18.793624" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:37:18.786817" elapsed="0.006832"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.800907" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:18.800649" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.801345" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:18.801105" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:37:18.812087" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0x3u6sokxjxyvbn7am33ubiqh8.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:37:18.813882" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '6462'} 
 body={"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":830,"negotiated-ssh-transport-parameters":{"encryption-alg":"chacha20-poly1305@openssh.com","host-key-alg":"rsa-sha2-512","mac-alg":"aead","key-exchange-alg":"curve25519-sha256"},"session-id":1,"connection-status":"connected","key-based":{"username":"netconf","key-id":"device-key"},"host":"10.30.170.167","available-capabilities":{"available-capability":[{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:interleave:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&amp;also-supported=report-all,report-all-tagged,trim,explicit"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:confirmed-commit:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:yang-library:1.1?revision=2019-01-04&amp;content-id=1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:rollback-on-error:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:xpath:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:startup:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:notification:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:validate:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:candidate:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:writable-running:1.0"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-server?revision=2019-07-02)ietf-netconf-server"},{"capability":"(http://www.sysrepo.org/yang/sysrepo-monitoring?revision=2022-08-19)sysrepo-monitoring"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-tcp-common?revision=2019-07-02)ietf-tcp-common"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-ssh-server?revision=2019-07-02)ietf-ssh-server"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-acm?revision=2018-02-14)ietf-netconf-acm"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:iana-crypt-hash?revision=2014-08-06)iana-crypt-hash"},{"capability":"(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-network-instance?revision=2019-01-21)ietf-network-instance"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-tls-common?revision=2019-07-02)ietf-tls-common"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-metadata?revision=2016-08-05)ietf-yang-metadata"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-structure-ext?revision=2020-06-17)ietf-yang-structure-ext"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-origin?revision=2018-02-14)ietf-origin"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-restconf?revision=2017-01-26)ietf-restconf"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-nmda?revision=2019-01-07)ietf-netconf-nmda"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-ssh-common?revision=2019-07-02)ietf-ssh-common"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2019-01-04)ietf-yang-library"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-tcp-client?revision=2019-07-02)ietf-tcp-client"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-crypto-types?revision=2019-07-02)ietf-crypto-types"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-datastores?revision=2018-02-14)ietf-datastores"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-ip?revision=2018-02-22)ietf-ip"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-tls-server?revision=2019-07-02)ietf-tls-server"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-truststore?revision=2019-07-02)ietf-truststore"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:1?revision=2022-06-16)yang"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?revision=2014-12-10)ietf-x509-cert-to-name"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-tcp-server?revision=2019-07-02)ietf-tcp-server"},{"capability-origin":"device-advertised","capability":"(urn:sysrepo:plugind?revision=2022-08-26)sysrepo-plugind"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)ietf-interfaces"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications?revision=2019-09-09)ietf-subscribed-notifications"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-keystore?revision=2019-07-02)ietf-keystore"},{"capability":"(http://www.sysrepo.org/yang/sysrepo?revision=2021-10-08)sysrepo"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?revision=2011-06-01)ietf-netconf-with-defaults"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-patch?revision=2017-02-22)ietf-yang-patch"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount?revision=2019-01-14)ietf-yang-schema-mount"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-push?revision=2019-09-09)ietf-yang-push"}]}}}]} 
 </msg>
<msg time="2026-04-05T00:37:18.814090" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:37:18.803504" elapsed="0.010612"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:18.801470" elapsed="0.012689"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:18.814336" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:18.814186" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.801451" elapsed="0.012982"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.818527" level="INFO">{"network-topology:node":[{"node-id":"netconf-test-device","netconf-node-topology:netconf-node":{"port":830,"negotiated-ssh-transport-parameters":{"encryption-alg":"chacha20-poly1305@openssh.com","host-key-alg":"rsa-sha2-512","mac-alg":"aead","key-exchange-alg":"curve25519-sha256"},"session-id":1,"connection-status":"connected","key-based":{"username":"netconf","key-id":"device-key"},"host":"10.30.170.167","available-capabilities":{"available-capability":[{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:interleave:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&amp;also-supported=report-all,report-all-tagged,trim,explicit"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:confirmed-commit:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:yang-library:1.1?revision=2019-01-04&amp;content-id=1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:rollback-on-error:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:base:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:xpath:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:startup:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:notification:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:validate:1.1"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:candidate:1.0"},{"capability-origin":"device-advertised","capability":"urn:ietf:params:netconf:capability:writable-running:1.0"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-server?revision=2019-07-02)ietf-netconf-server"},{"capability":"(http://www.sysrepo.org/yang/sysrepo-monitoring?revision=2022-08-19)sysrepo-monitoring"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-tcp-common?revision=2019-07-02)ietf-tcp-common"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-ssh-server?revision=2019-07-02)ietf-ssh-server"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-acm?revision=2018-02-14)ietf-netconf-acm"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:iana-crypt-hash?revision=2014-08-06)iana-crypt-hash"},{"capability":"(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-network-instance?revision=2019-01-21)ietf-network-instance"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-tls-common?revision=2019-07-02)ietf-tls-common"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-metadata?revision=2016-08-05)ietf-yang-metadata"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-structure-ext?revision=2020-06-17)ietf-yang-structure-ext"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-origin?revision=2018-02-14)ietf-origin"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-restconf?revision=2017-01-26)ietf-restconf"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-nmda?revision=2019-01-07)ietf-netconf-nmda"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-ssh-common?revision=2019-07-02)ietf-ssh-common"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2019-01-04)ietf-yang-library"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-tcp-client?revision=2019-07-02)ietf-tcp-client"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-crypto-types?revision=2019-07-02)ietf-crypto-types"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-datastores?revision=2018-02-14)ietf-datastores"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-ip?revision=2018-02-22)ietf-ip"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-tls-server?revision=2019-07-02)ietf-tls-server"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-truststore?revision=2019-07-02)ietf-truststore"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:1?revision=2022-06-16)yang"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?revision=2014-12-10)ietf-x509-cert-to-name"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-tcp-server?revision=2019-07-02)ietf-tcp-server"},{"capability-origin":"device-advertised","capability":"(urn:sysrepo:plugind?revision=2022-08-26)sysrepo-plugind"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)ietf-interfaces"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications?revision=2019-09-09)ietf-subscribed-notifications"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-keystore?revision=2019-07-02)ietf-keystore"},{"capability":"(http://www.sysrepo.org/yang/sysrepo?revision=2021-10-08)sysrepo"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?revision=2011-06-01)ietf-netconf-with-defaults"},{"capability-origin":"device-advertised","capability":"(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-patch?revision=2017-02-22)ietf-yang-patch"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount?revision=2019-01-14)ietf-yang-schema-mount"},{"capability":"(urn:ietf:params:xml:ns:yang:ietf-yang-push?revision=2019-09-09)ietf-yang-push"}]}}}]}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:18.815443" elapsed="0.003219"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:18.815209" elapsed="0.003503"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.815190" elapsed="0.003555"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.822372" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:18.819127" elapsed="0.003386"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:18.818823" elapsed="0.003741"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.818799" elapsed="0.003799"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.823361" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:18.822819" elapsed="0.000579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:18.823840" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:18.823520" elapsed="0.000398"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.824655" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:18.824166" elapsed="0.000527"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:18.823952" elapsed="0.000792"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.823494" elapsed="0.001280"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.825518" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:18.824986" elapsed="0.000569"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:18.825968" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:18.825653" elapsed="0.000395"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.826723" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:18.826293" elapsed="0.000465"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:18.826081" elapsed="0.000726"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.825628" elapsed="0.001208"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:18.827042" elapsed="0.000502"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:37:18.828175" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:18.827767" elapsed="0.000443"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:37:18.828417" elapsed="0.003352"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:37:18.814789" elapsed="0.017044"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:37:18.832010" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:18.831903" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.831885" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:37:18.836172" level="INFO">${text_normalized} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(urn:ietf:params:xml:ns:netcon...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:37:18.832219" elapsed="0.003982"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:37:18.836254" elapsed="0.000031"/>
</return>
<msg time="2026-04-05T00:37:18.836411" level="INFO">${response_text} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(urn:ietf:params:xml:ns:netcon...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:37:18.796322" elapsed="0.040137"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:37:18.836518" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:37:18.836670" level="INFO">${device_status} = {
 "network-topology:node": [
  {
   "netconf-node-topology:netconf-node": {
    "available-capabilities": {
     "available-capability": [
      {
       "capability": "(urn:ietf:params:xml:ns:netcon...</msg>
<var>${device_status}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:37:18.793870" elapsed="0.042826"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${device_status}</arg>
<arg>connection-status": "connected"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-04-05T00:37:18.836850" elapsed="0.000304"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device is accessible from Netconf.</doc>
<status status="PASS" start="2026-04-05T00:37:18.771130" elapsed="0.066085"/>
</kw>
<arg>${timeout}</arg>
<arg>${period}</arg>
<arg>Check_Device_Connected</arg>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:37:17.712775" elapsed="1.124491"/>
</kw>
<arg>${device_name}</arg>
<doc>Wait for the device to become connected.
It is more readable to use this keyword in a test case than to put the whole WUKS below into it.</doc>
<status status="PASS" start="2026-04-05T00:37:17.712354" elapsed="1.124977"/>
</kw>
<doc>Wait until the device becomes available through Netconf.</doc>
<status status="PASS" start="2026-04-05T00:37:17.711822" elapsed="1.125700"/>
</test>
<test id="s1-s7-s1-t4" name="Deconfigure_Device_From_Netconf" line="48">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-05T00:37:18.840820" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-05T00:37:18.840554" elapsed="0.000533"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:18.842077" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:18.841968" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.841949" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:18.847271" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:18.847164" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.847146" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.848453" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:18.848051" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.848935" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-05T00:37:18.848639" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-05T00:37:18.849005" elapsed="0.000029"/>
</return>
<msg time="2026-04-05T00:37:18.849333" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-05T00:37:18.847582" elapsed="0.001779"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:18.854855" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:18.854748" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.854728" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-05T00:37:18.856159" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:18.856054" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.856036" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-05T00:37:18.856781" level="INFO">${karaf_connection_index} = 25</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-05T00:37:18.856367" elapsed="0.000442"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-05T00:37:18.857222" level="INFO">${current_connection_index} = 28</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:18.856965" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-05T00:37:18.889166" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "- "u "s "e "r "f "e "a "t "u "[78Cr "[A[78Ce</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-05T00:37:18.857806" elapsed="0.031520"/>
</kw>
<msg time="2026-04-05T00:37:18.889513" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-05T00:37:18.889558" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "n "e "t "c "o "n "f "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:18.857402" elapsed="0.032191"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-05T00:37:18.910806" level="INFO">"s ". "t "x "t ". "K "e "y "A "u "t "h ". "K "e "y "a "u "t "h ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-05T00:37:18.890154" elapsed="0.020826"/>
</kw>
<msg time="2026-04-05T00:37:18.911147" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-05T00:37:18.911192" level="INFO">${message_wait} =  "s ". "t "x "t ". "K "e "y "A "u "t "h ". "K "e "y "a "u "t "h ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:18.889760" elapsed="0.021468"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:18.911544" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:18.911303" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.911284" elapsed="0.000361"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.912156" level="INFO"> "s ". "t "x "t ". "K "e "y "A "u "t "h ". "K "e "y "a "u "t "h ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e "_ "F "r "o "m "_ "N "e "t "c "o "n "f "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:18.911786" elapsed="0.000477"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:18.912575" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:18.912332" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.912314" elapsed="0.000363"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-05T00:37:18.912710" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-05T00:37:18.915729" elapsed="0.000151"/>
</kw>
<msg time="2026-04-05T00:37:18.915952" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:18.915037" elapsed="0.001018"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:18.917016" elapsed="0.000040"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:18.917970" elapsed="0.000036"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-05T00:37:18.913573" elapsed="0.004513"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-05T00:37:18.912973" elapsed="0.005231"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-05T00:37:18.855755" elapsed="0.062549"/>
</kw>
<msg time="2026-04-05T00:37:18.918396" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:18.918454" level="INFO">${message} =  "s ". "t "x "t ". "K "e "y "A "u "t "h ". "K "e "y "a "u "t "h ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:18.855071" elapsed="0.063420"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-05T00:37:18.918843" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-05T00:37:18.918569" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.918550" elapsed="0.000380"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:18.919328" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:18.919674" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-05T00:37:18.919745" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-05T00:37:18.854394" elapsed="0.065459"/>
</kw>
<msg time="2026-04-05T00:37:18.919944" level="INFO">${status} = PASS</msg>
<msg time="2026-04-05T00:37:18.919987" level="INFO">${output} =  "s ". "t "x "t ". "K "e "y "A "u "t "h ". "K "e "y "a "u "t "h ". "D "e "c "o "n "f "i "g "u "r "e "_ "D "e "v "i "c "e ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:18.849761" elapsed="0.070260"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:18.920342" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:18.920096" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.920078" elapsed="0.000410"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-05T00:37:18.849621" elapsed="0.070891"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-05T00:37:18.849436" elapsed="0.071107"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-05T00:37:18.846803" elapsed="0.073796"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-05T00:37:18.841683" elapsed="0.078971"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-05T00:37:18.841235" elapsed="0.079463"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-05T00:37:18.838391" elapsed="0.082359"/>
</kw>
<kw name="Remove_Device_From_Netconf" owner="NetconfKeywords">
<kw name="Pop From Dictionary" owner="Collections">
<msg time="2026-04-05T00:37:18.921652" level="INFO">${device_type} = full-uri-device-key</msg>
<var>${device_type}</var>
<arg>${NetconfKeywords__mounted_device_types}</arg>
<arg>${device_name}</arg>
<doc>Pops the given ``key`` from the ``dictionary`` and returns its value.</doc>
<status status="PASS" start="2026-04-05T00:37:18.921354" elapsed="0.000325"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.922267" level="INFO">${mapping} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping}</var>
<arg>DEVICE_NAME=${device_name}</arg>
<arg>RESTCONF_ROOT=${RESTCONF_ROOT}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:37:18.921844" elapsed="0.000449"/>
</kw>
<kw name="Set_Variable_If_At_Least_Scandium" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set_Variable_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Set Variable If" owner="BuiltIn">
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:18.940961" elapsed="0.000421"/>
</kw>
<msg time="2026-04-05T00:37:18.941450" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Set_Variable_If</arg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:18.940598" elapsed="0.000904"/>
</kw>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Compare ${lower_bound} to titanium and return scandium if titanium is at least ${lower_bound},
return calcium otherwise.</doc>
<status status="PASS" start="2026-04-05T00:37:18.940158" elapsed="0.001418"/>
</kw>
<msg time="2026-04-05T00:37:18.941619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Set_Variable_If_At_Least</arg>
<arg>scandium</arg>
<arg>${value_if_true}</arg>
<arg>${value_if_false}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:18.931368" elapsed="0.010294"/>
</kw>
<msg time="2026-04-05T00:37:18.941764" level="INFO">${version} = scandium</msg>
<var>${version}</var>
<arg>scandium</arg>
<arg>calcium</arg>
<doc>Compare scandium to titanium and return ${value_if_true} if titanium is at least scandium, return ${value_if_false} otherwise.</doc>
<status status="PASS" start="2026-04-05T00:37:18.931047" elapsed="0.010740"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.984519" level="INFO">${file_path_stream} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:18.984088" elapsed="0.000459"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-05T00:37:18.985290" level="FAIL">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device-key.titanium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-05T00:37:18.985044" elapsed="0.000325">File '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device-key.titanium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-05T00:37:18.985477" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-05T00:37:18.984709" elapsed="0.000794"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.986042" level="INFO">${file_path} = /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-05T00:37:18.985663" elapsed="0.000406"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-05T00:37:18.986360" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device-key/location.uri"&gt;/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/variables/netconf/device/scandium/full-uri-device-key/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-05T00:37:18.986544" level="INFO">${template} = $RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-05T00:37:18.986225" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.986972" level="INFO">$RESTCONF_ROOT/data/network-topology:network-topology/topology=topology-netconf/node=$DEVICE_NAME
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:18.986728" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.987964" level="INFO">mapping: {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:18.987709" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.988457" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-05T00:37:18.988161" elapsed="0.000323"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.989133" level="INFO">${value} = netconf-test-device</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:37:18.988839" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:37:18.989922" level="INFO">${encoded} = netconf-test-device</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:37:18.989671" elapsed="0.000277"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:37:18.989997" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:37:18.990149" level="INFO">${encoded_value} = netconf-test-device</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:37:18.989343" elapsed="0.000831"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:18.990323" elapsed="0.000250"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:37:18.988708" elapsed="0.001906"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.991191" level="INFO">${value} = /rests</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-05T00:37:18.990896" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-05T00:37:18.991961" level="INFO">${encoded} = /rests</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-05T00:37:18.991725" elapsed="0.000262"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-05T00:37:18.992037" elapsed="0.000028"/>
</return>
<msg time="2026-04-05T00:37:18.992185" level="INFO">${encoded_value} = /rests</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-05T00:37:18.991398" elapsed="0.000812"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-05T00:37:18.992354" elapsed="0.000257"/>
</kw>
<var name="${key}">RESTCONF_ROOT</var>
<var name="${value}">/rests</var>
<status status="PASS" start="2026-04-05T00:37:18.990766" elapsed="0.001892"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-05T00:37:18.988534" elapsed="0.004158"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-05T00:37:18.992735" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:37:18.992888" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'netconf-test-device', 'RESTCONF_ROOT': '/rests'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-05T00:37:18.987376" elapsed="0.005537"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:18.987086" elapsed="0.005859"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:18.993114" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:18.992970" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:18.987066" elapsed="0.006123"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:18.993918" level="INFO">${final_text} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:18.993330" elapsed="0.000617"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-05T00:37:18.993995" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/${file_name}.</doc>
<status status="PASS" start="2026-04-05T00:37:18.983467" elapsed="0.010651"/>
</kw>
<msg time="2026-04-05T00:37:18.994172" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:18.970853" elapsed="0.023366"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.006825" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.019240" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name} exists. If yes read and Log contents of file /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key.titanium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/../variables/netconf/device/scandium/full-uri-device-key/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.031585" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.031775" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.031943" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.032303" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:19.032163" elapsed="0.000284"/>
</branch>
<status status="NOT RUN" start="2026-04-05T00:37:19.032148" elapsed="0.000325"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.032618" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.032782" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.032944" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-05T00:37:19.032119" elapsed="0.000878"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-05T00:37:19.032017" elapsed="0.001007"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.033166" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-05T00:37:19.033241" elapsed="0.000015"/>
</return>
<msg time="2026-04-05T00:37:19.033359" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-05T00:37:18.966325" elapsed="0.067060"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.034546" level="INFO">/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:19.034278" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:37:19.046378" level="INFO">DELETE Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0x3u6sokxjxyvbn7am33ubiqh8.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:37:19.046446" level="INFO">DELETE Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-05T00:37:19.046540" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:37:19.036764" elapsed="0.009803"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:19.034660" elapsed="0.011950"/>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.047000" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:19.046670" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:19.034642" elapsed="0.012536"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.054070" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:19.049582" elapsed="0.004549"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:19.049067" elapsed="0.005115"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:19.049024" elapsed="0.005191"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.057850" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:19.054617" elapsed="0.003297"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:19.054293" elapsed="0.003669"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:19.054269" elapsed="0.003726"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.058772" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:19.058223" elapsed="0.000588"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.059227" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:19.058908" elapsed="0.000398"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.060189" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:19.059581" elapsed="0.000645"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:19.059340" elapsed="0.000935"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:19.058883" elapsed="0.001422"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.060973" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:19.060591" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.061352" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:19.061120" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.061904" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:19.061608" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:19.061450" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:19.061100" elapsed="0.000885"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:19.062130" elapsed="0.000361"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:37:19.062944" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:19.062654" elapsed="0.000316"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:37:19.063122" elapsed="0.002525"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:37:19.047988" elapsed="0.017724"/>
</kw>
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-05T00:37:19.065759" elapsed="0.000034"/>
</return>
<msg time="2026-04-05T00:37:19.068137" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="PASS" start="2026-04-05T00:37:19.033706" elapsed="0.034458"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:37:19.068219" elapsed="0.000027"/>
</return>
<arg>${DIRECTORY_WITH_DEVICE_TEMPLATES}${/}${version}${/}${device_type}</arg>
<arg>${mapping}</arg>
<arg>session=${session}</arg>
<arg>location=${location}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="PASS" start="2026-04-05T00:37:18.942006" elapsed="0.126351"/>
</kw>
<arg>${device_name}</arg>
<doc>Tell Netconf to deconfigure the specified device</doc>
<status status="PASS" start="2026-04-05T00:37:18.920992" elapsed="0.147442"/>
</kw>
<doc>Make request to deconfigure the testtool device on Netconf connector.</doc>
<status status="PASS" start="2026-04-05T00:37:18.837823" elapsed="0.230733"/>
</test>
<test id="s1-s7-s1-t5" name="Check_Device_Going_To_Be_Gone_After_Deconfiguring" line="53">
<kw name="Wait_Device_Fully_Removed" owner="NetconfKeywords">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Device_Completely_Gone" owner="NetconfKeywords">
<kw name="Check_Device_Has_No_Netconf_Connector" owner="NetconfKeywords">
<kw name="Count_Netconf_Connectors_For_Device" owner="NetconfKeywords">
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.082627" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:19.080585" elapsed="0.002069"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.082979" elapsed="0.000021"/>
</kw>
<var name="${nv}"/>
<status status="NOT RUN" start="2026-04-05T00:37:19.082831" elapsed="0.000204"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="NOT RUN" start="2026-04-05T00:37:19.082711" elapsed="0.000351"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.083359" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:19.083125" elapsed="0.000289"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.084142" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:19.083678" elapsed="0.000491"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:19.083454" elapsed="0.000750"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.084400" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:19.084228" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:19.083109" elapsed="0.001381"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:37:19.084524" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:37:19.084672" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:37:19.080032" elapsed="0.004665"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:37:19.084742" elapsed="0.000025"/>
</return>
<msg time="2026-04-05T00:37:19.084881" level="INFO">${uri} = /rests/data/network-topology:network-topology?content=nonconfig</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>operational</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:37:19.079535" elapsed="0.005371"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.092172" level="INFO">/rests/data/network-topology:network-topology?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:19.091923" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.092755" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:19.092497" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:37:19.103513" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 path_url=/rests/data/network-topology:network-topology?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0x3u6sokxjxyvbn7am33ubiqh8.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:37:19.103713" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology?content=nonconfig 
 status=200, reason=OK 
 headers={'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Content-Length': '1089'} 
 body={"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"}]}} 
 </msg>
<msg time="2026-04-05T00:37:19.103852" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:37:19.094901" elapsed="0.008986"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:19.092869" elapsed="0.011078"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.104192" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:19.103985" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:19.092850" elapsed="0.011482"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.122903" level="INFO">{"network-topology:network-topology":{"topology":[{"topology-id":"flow:1"},{"topology-id":"topology-netconf","topology-types":{"netconf-node-topology:topology-netconf":{"ssh-transport-topology-parameters":{"mac":{"mac-alg":["hmac-sha2-256","hmac-sha2-512","hmac-sha1"]},"host-key":{"host-key-alg":["ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","ssh-ed25519","rsa-sha2-512","rsa-sha2-256","ssh-rsa"]},"key-exchange":{"key-exchange-alg":["sntrup761x25519-sha512","mlkem768x25519-sha256","mlkem1024nistp384-sha384","mlkem768nistp256-sha256","curve25519-sha256","curve448-sha512","ecdh-sha2-nistp521","ecdh-sha2-nistp384","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group18-sha512","diffie-hellman-group17-sha512","diffie-hellman-group16-sha512","diffie-hellman-group15-sha512","diffie-hellman-group14-sha256"]},"encryption":{"encryption-alg":["chacha20-poly1305","aes128-ctr","aes192-ctr","aes256-ctr","AEAD_AES_128_GCM","AEAD_AES_256_GCM","aes128-cbc","aes192-cbc","aes256-cbc"]}}}}},{"topology-id":"hwvtep:1"},{"topology-id":"ovsdb:1"}]}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:19.105748" elapsed="0.017210"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:19.105444" elapsed="0.017549"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:19.105398" elapsed="0.017620"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.138553" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:19.123291" elapsed="0.015309"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:19.123073" elapsed="0.015564"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:19.123057" elapsed="0.015607"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.139195" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:19.138820" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.139533" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:19.139290" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.140089" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:19.139768" elapsed="0.000348"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:19.139615" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:19.139273" elapsed="0.000899"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.141094" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:19.140336" elapsed="0.000785"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.141413" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:19.141190" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.141976" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:19.141662" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:19.141509" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:19.141172" elapsed="0.000930"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-05T00:37:19.142251" elapsed="0.000369"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-05T00:37:19.143063" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:19.142781" elapsed="0.000308"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-05T00:37:19.143240" elapsed="0.002751"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-05T00:37:19.104845" elapsed="0.041211"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-05T00:37:19.146230" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-05T00:37:19.146125" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:19.146107" elapsed="0.000191"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-05T00:37:19.149574" level="INFO">${text_normalized} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topo...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-05T00:37:19.146455" elapsed="0.003148"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-05T00:37:19.149656" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:37:19.149813" level="INFO">${response_text} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topo...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-05T00:37:19.087647" elapsed="0.062192"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-05T00:37:19.149896" elapsed="0.000026"/>
</return>
<msg time="2026-04-05T00:37:19.150042" level="INFO">${mounts} = {
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topo...</msg>
<var>${mounts}</var>
<arg>${uri}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-05T00:37:19.085120" elapsed="0.064948"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.150489" level="INFO">{
 "network-topology:network-topology": {
  "topology": [
   {
    "topology-id": "topology-netconf",
    "topology-types": {
     "netconf-node-topology:topology-netconf": {
      "ssh-transport-topology-parameters": {
       "encryption": {
        "encryption-alg": [
         "AEAD_AES_128_GCM",
         "AEAD_AES_256_GCM",
         "aes128-cbc",
         "aes128-ctr",
         "aes192-cbc",
         "aes192-ctr",
         "aes256-cbc",
         "aes256-ctr",
         "chacha20-poly1305"
        ]
       },
       "host-key": {
        "host-key-alg": [
         "ecdsa-sha2-nistp256",
         "ecdsa-sha2-nistp384",
         "ecdsa-sha2-nistp521",
         "rsa-sha2-256",
         "rsa-sha2-512",
         "ssh-ed25519",
         "ssh-rsa"
        ]
       },
       "key-exchange": {
        "key-exchange-alg": [
         "curve25519-sha256",
         "curve448-sha512",
         "diffie-hellman-group-exchange-sha256",
         "diffie-hellman-group14-sha256",
         "diffie-hellman-group15-sha512",
         "diffie-hellman-group16-sha512",
         "diffie-hellman-group17-sha512",
         "diffie-hellman-group18-sha512",
         "ecdh-sha2-nistp256",
         "ecdh-sha2-nistp384",
         "ecdh-sha2-nistp521",
         "mlkem1024nistp384-sha384",
         "mlkem768nistp256-sha256",
         "mlkem768x25519-sha256",
         "sntrup761x25519-sha512"
        ]
       },
       "mac": {
        "mac-alg": [
         "hmac-sha1",
         "hmac-sha2-256",
         "hmac-sha2-512"
        ]
       }
      }
     }
    }
   },
   {
    "topology-id": "flow:1"
   },
   {
    "topology-id": "hwvtep:1"
   },
   {
    "topology-id": "ovsdb:1"
   }
  ]
 }
}
</msg>
<arg>${mounts}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-05T00:37:19.150224" elapsed="0.000321"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.151078" level="INFO">${actual_count} = 0</msg>
<var>${actual_count}</var>
<arg>len('''${mounts}'''.split('"node-id": "${device_name}"'))-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-05T00:37:19.150695" elapsed="0.000409"/>
</kw>
<return>
<value>${actual_count}</value>
<status status="PASS" start="2026-04-05T00:37:19.151151" elapsed="0.000030"/>
</return>
<msg time="2026-04-05T00:37:19.151303" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Count all instances of the specified device in the Netconf topology (usually 0 or 1).</doc>
<status status="PASS" start="2026-04-05T00:37:19.072089" elapsed="0.079238"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.151752" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${count}</arg>
<arg>0</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-05T00:37:19.151495" elapsed="0.000311"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<doc>Check that there are no instances of the specified device in the Netconf topology.</doc>
<status status="PASS" start="2026-04-05T00:37:19.071642" elapsed="0.080221"/>
</kw>
<kw name="Generate URI" owner="Restconf">
<kw name="Generate RFC8040 URI" owner="Restconf">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.162154" level="INFO">${node_value_path} = </msg>
<var>${node_value_path}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:19.160071" elapsed="0.002110"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.162851" level="INFO">${node_value_path} = /topology=topology-netconf</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:19.162529" elapsed="0.000348"/>
</kw>
<var name="${nv}">topology=topology-netconf</var>
<status status="PASS" start="2026-04-05T00:37:19.162366" elapsed="0.000591"/>
</iter>
<iter>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.163523" level="INFO">${node_value_path} = /topology=topology-netconf/node=netconf-test-device</msg>
<var>${node_value_path}</var>
<arg>${node_value_path}/${nv}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:19.163186" elapsed="0.000364"/>
</kw>
<var name="${nv}">node=netconf-test-device</var>
<status status="PASS" start="2026-04-05T00:37:19.163039" elapsed="0.000547"/>
</iter>
<var>${nv}</var>
<value>@{node_value_list}</value>
<status status="PASS" start="2026-04-05T00:37:19.162236" elapsed="0.001379"/>
</for>
<if>
<branch type="IF" condition="&quot;${datastore_flag}&quot; == &quot;config&quot;">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-05T00:37:19.164384" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=config</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-05T00:37:19.163911" elapsed="0.000504"/>
</kw>
<status status="PASS" start="2026-04-05T00:37:19.163679" elapsed="0.000787"/>
</branch>
<branch type="ELSE IF" condition="&quot;${datastore_flag}&quot;==&quot;operational&quot;">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/data/${identifier}${node_value_path}?content=nonconfig</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.164654" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:19.164491" elapsed="0.000218"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${RESTCONF_ROOT}/operations/${identifier}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.164883" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-05T00:37:19.164733" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:19.163662" elapsed="0.001295"/>
</if>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:37:19.164990" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:37:19.165135" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>${identifier}</arg>
<arg>${datastore_flag}</arg>
<arg>@{node_value_list}</arg>
<status status="PASS" start="2026-04-05T00:37:19.159614" elapsed="0.005673"/>
</kw>
<return>
<value>${uri}</value>
<status status="PASS" start="2026-04-05T00:37:19.165336" elapsed="0.000027"/>
</return>
<msg time="2026-04-05T00:37:19.165500" level="INFO">${uri} = /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config</msg>
<var>${uri}</var>
<arg>network-topology:network-topology</arg>
<arg>config</arg>
<arg>topology=topology-netconf</arg>
<arg>node=${device_name}</arg>
<doc>Returns the proper URI to use. Variable input error checking is done to ensure the ${datastore_flag} variable
is config, operational or rpc. @{node_value_list} is expected to be in the format of node=value. RFC8040 can
use that as is with '=' delimiter</doc>
<status status="PASS" start="2026-04-05T00:37:19.159051" elapsed="0.006476"/>
</kw>
<kw name="No Content From URI" owner="Utils">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-05T00:37:19.173087" level="INFO">GET Request : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 path_url=/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0x3u6sokxjxyvbn7am33ubiqh8.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-05T00:37:19.173196" level="INFO">GET Response : url=http://10.30.170.184:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-05T00:37:19.173290" level="INFO">${resp} = &lt;Response [409]&gt;</msg>
<var>${resp}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-05T00:37:19.166281" elapsed="0.007034"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 404 or ${resp.status_code} == 409">
<return>
<status status="PASS" start="2026-04-05T00:37:19.179741" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-05T00:37:19.173393" elapsed="0.006431"/>
</branch>
<status status="PASS" start="2026-04-05T00:37:19.173375" elapsed="0.006483"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${resp.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.180064" elapsed="0.000031"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The request failed with code ${resp.status_code}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-05T00:37:19.180304" elapsed="0.000028"/>
</kw>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Issue a Get On Session and return on error 404 (No content) or will fail and log the content.
Issues a Get On Session for /rests/data/network-topology:network-topology/topology=topology-netconf/node=netconf-test-device?content=config in default using headers from
{'Content-Type': 'application/json'}. If the request returns a HTTP error, fails. Otherwise
returns the data obtained by the request.</doc>
<status status="PASS" start="2026-04-05T00:37:19.165886" elapsed="0.014531"/>
</kw>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Check that the specified device has no Netconf connectors nor associated data.</doc>
<status status="PASS" start="2026-04-05T00:37:19.071129" elapsed="0.109388"/>
</kw>
<arg>${timeout}</arg>
<arg>${period}</arg>
<arg>Check_Device_Completely_Gone</arg>
<arg>${device_name}</arg>
<arg>session=${session}</arg>
<arg>log_response=${log_response}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-05T00:37:19.070569" elapsed="0.110017"/>
</kw>
<arg>${device_name}</arg>
<doc>Wait until all netconf connectors for the device with the given name disappear.
Call of Remove_Device_From_Netconf returns before netconf gets
around deleting the device's connector. To ensure the device is
really gone from netconf, use this keyword to make sure all
connectors disappear. If a call to Remove_Device_From_Netconf
is not made before using this keyword, the wait will fail.
Using this keyword is more readable than putting the WUKS below
into a test case.</doc>
<status status="PASS" start="2026-04-05T00:37:19.070156" elapsed="0.110569"/>
</kw>
<doc>Check that the device is really going to be gone. Fail
if found after one minute. This is an expected behavior as the
delete request is sent to the config subsystem which then triggers
asynchronous destruction of the netconf connector referring to the
device and the device's data. This test makes sure this
asynchronous operation does not take unreasonable amount of time
by making sure that both the netconf connector and the device's
data is gone before reporting success.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-05T00:37:19.068868" elapsed="0.112012"/>
</test>
<kw name="Suite Teardown" type="TEARDOWN">
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-05T00:37:19.181996" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-05T00:37:19.181894" elapsed="0.000214"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-05T00:37:19.182307" elapsed="0.000853"/>
</kw>
<doc>Tearing down the setup.</doc>
<status status="PASS" start="2026-04-05T00:37:19.181592" elapsed="0.001650"/>
</kw>
<doc>Test suite to verify the device mount using public key based auth.</doc>
<status status="PASS" start="2026-04-05T00:37:04.520743" elapsed="14.662541"/>
</suite>
<status status="PASS" start="2026-04-05T00:37:04.519467" elapsed="14.665161"/>
</suite>
<status status="FAIL" start="2026-04-05T00:29:20.413725" elapsed="478.771824"/>
</suite>
<statistics>
<total>
<stat pass="137" fail="1" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="31" fail="0" skip="0">critical</stat>
</tag>
<suite>
<stat name="netconf-userfeatures.txt" id="s1" pass="137" fail="1" skip="0">netconf-userfeatures.txt</stat>
<stat name="Ready" id="s1-s1" pass="5" fail="1" skip="0">netconf-userfeatures.txt.Ready</stat>
<stat name="Netconfready" id="s1-s1-s1" pass="5" fail="1" skip="0">netconf-userfeatures.txt.Ready.Netconfready</stat>
<stat name="Apidocs" id="s1-s2" pass="1" fail="0" skip="0">netconf-userfeatures.txt.Apidocs</stat>
<stat name="Apidocs" id="s1-s2-s1" pass="1" fail="0" skip="0">netconf-userfeatures.txt.Apidocs.Apidocs</stat>
<stat name="MDSAL" id="s1-s3" pass="49" fail="0" skip="0">netconf-userfeatures.txt.MDSAL</stat>
<stat name="Northbound" id="s1-s3-s1" pass="49" fail="0" skip="0">netconf-userfeatures.txt.MDSAL.Northbound</stat>
<stat name="CRUD" id="s1-s4" pass="58" fail="0" skip="0">netconf-userfeatures.txt.CRUD</stat>
<stat name="CRUD-RPC" id="s1-s4-s1" pass="29" fail="0" skip="0">netconf-userfeatures.txt.CRUD.CRUD-RPC</stat>
<stat name="CRUD" id="s1-s4-s2" pass="29" fail="0" skip="0">netconf-userfeatures.txt.CRUD.CRUD</stat>
<stat name="CRUD-ACTION" id="s1-s5" pass="11" fail="0" skip="0">netconf-userfeatures.txt.CRUD-ACTION</stat>
<stat name="CRUD-ACTION" id="s1-s5-s1" pass="11" fail="0" skip="0">netconf-userfeatures.txt.CRUD-ACTION.CRUD-ACTION</stat>
<stat name="Notifications" id="s1-s6" pass="8" fail="0" skip="0">netconf-userfeatures.txt.Notifications</stat>
<stat name="Notifications Basic" id="s1-s6-s1" pass="8" fail="0" skip="0">netconf-userfeatures.txt.Notifications.Notifications Basic</stat>
<stat name="KeyAuth" id="s1-s7" pass="5" fail="0" skip="0">netconf-userfeatures.txt.KeyAuth</stat>
<stat name="Keyauth" id="s1-s7-s1" pass="5" fail="0" skip="0">netconf-userfeatures.txt.KeyAuth.Keyauth</stat>
</suite>
</statistics>
<errors>
<msg time="2026-04-05T00:35:42.853310" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/NetconfKeywords.robot' on line 20: Suite 'netconf-userfeatures.txt.CRUD.CRUD-RPC' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:35:42.855389" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/NexusKeywords.robot' on line 20: Suite 'netconf-userfeatures.txt.CRUD.CRUD-RPC' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:35:42.858025" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/SSHKeywords.robot' on line 16: Suite 'netconf-userfeatures.txt.CRUD.CRUD-RPC' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:35:42.858502" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/Utils.robot' on line 4: Suite 'netconf-userfeatures.txt.CRUD.CRUD-RPC' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:35:42.866503" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/RemoteBash.robot' on line 25: Suite 'netconf-userfeatures.txt.CRUD.CRUD-RPC' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:35:42.867217" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/KarafKeywords.robot' on line 9: Suite 'netconf-userfeatures.txt.CRUD.CRUD-RPC' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:16.389402" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/NetconfKeywords.robot' on line 20: Suite 'netconf-userfeatures.txt.CRUD.CRUD' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:16.390937" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/NexusKeywords.robot' on line 20: Suite 'netconf-userfeatures.txt.CRUD.CRUD' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:16.393099" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/SSHKeywords.robot' on line 16: Suite 'netconf-userfeatures.txt.CRUD.CRUD' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:16.393605" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/Utils.robot' on line 4: Suite 'netconf-userfeatures.txt.CRUD.CRUD' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:16.401855" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/RemoteBash.robot' on line 25: Suite 'netconf-userfeatures.txt.CRUD.CRUD' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:16.402677" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/KarafKeywords.robot' on line 9: Suite 'netconf-userfeatures.txt.CRUD.CRUD' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:32.499114" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/NetconfKeywords.robot' on line 20: Suite 'netconf-userfeatures.txt.CRUD-ACTION.CRUD-ACTION' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:32.501634" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/NexusKeywords.robot' on line 20: Suite 'netconf-userfeatures.txt.CRUD-ACTION.CRUD-ACTION' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:32.503972" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/SSHKeywords.robot' on line 16: Suite 'netconf-userfeatures.txt.CRUD-ACTION.CRUD-ACTION' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:32.504639" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/Utils.robot' on line 4: Suite 'netconf-userfeatures.txt.CRUD-ACTION.CRUD-ACTION' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:32.512622" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/RemoteBash.robot' on line 25: Suite 'netconf-userfeatures.txt.CRUD-ACTION.CRUD-ACTION' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:32.513386" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/KarafKeywords.robot' on line 9: Suite 'netconf-userfeatures.txt.CRUD-ACTION.CRUD-ACTION' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:45.181899" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/KarafKeywords.robot' on line 9: Suite 'netconf-userfeatures.txt.Notifications.Notifications Basic' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:45.183857" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/SSHKeywords.robot' on line 16: Suite 'netconf-userfeatures.txt.Notifications.Notifications Basic' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:45.184693" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/Utils.robot' on line 4: Suite 'netconf-userfeatures.txt.Notifications.Notifications Basic' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:45.195725" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/NetconfKeywords.robot' on line 20: Suite 'netconf-userfeatures.txt.Notifications.Notifications Basic' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:45.197407" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/NexusKeywords.robot' on line 20: Suite 'netconf-userfeatures.txt.Notifications.Notifications Basic' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-05T00:36:45.199626" level="WARN">Error in file '/w/workspace/netconf-csit-1node-userfeatures-all-titanium/test/csit/libraries/RemoteBash.robot' on line 25: Suite 'netconf-userfeatures.txt.Notifications.Notifications Basic' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
</errors>
</robot>
